安卓逆向 -- 某翻译高级版

admin 2024年9月26日13:13:41评论10 views字数 1108阅读3分41秒阅读模式

app:某译v6.9.0(百度搜索下载)
工具:jadx、frIDA、雷电模拟器

方法:hook相关代码
app界面:

安卓逆向 -- 某翻译高级版


步骤:一:寻找下手点
1.直接isvip,不好意思一个都没,天杀的连vip都没(不然人家为啥叫高级版),观察app,发现每次点击会员功能就会跳出开通界面

安卓逆向 -- 某翻译高级版

 

安卓逆向 -- 某翻译高级版

2.那么我们就可以利用这点去回溯谁调用了它,直接adb shell dumpsys activity | findstr "mResumedActivity定位开通界面

安卓逆向 -- 某翻译高级版

安卓逆向 -- 某翻译高级版

安卓逆向 -- 某翻译高级版

二:回溯开通界面
1.查看是谁调用了PremiumActivity这个类,我尼玛36个,还好一眼就能发现有三个最像,然后就是一个个hook查看是不是调用了

安卓逆向 -- 某翻译高级版

2.尝试后发现是最后一个调用了开通界面,当我点击会员功能后,就会跳到开通界面,hook显示调用了

安卓逆向 -- 某翻译高级版



3.继续回溯看是谁调用了它,发现有30个,但是根据com.spaceship.screen.textcopy.page.main.MainActivity@ad3a6b可以判断基本就是那三个了,直接hook判断哪个才是对的

安卓逆向 -- 某翻译高级版


4.这里有个坑,我hook这三个后,发现点主页那个高级版都没有调用,最后在我点击“隐藏原始文字”这个会员功能后,第一个居然调用了

 

安卓逆向 -- 某翻译高级版

 



5.因为这是个布尔类型,我尝试hook让它返回true,结果发现直接可以用了,也不跳开通界面了吗,所以这个k()就是用来单独判断“隐藏原始文字”这个功能的;那么就说明k()方法中肯定有判断你是不是会员的代码

 

安卓逆向 -- 某翻译高级版

 



三:寻找判断会员代码
1.仔细观察k()方法,我们只要让它们其中一个为真,那么k()就返回true,我们重点观察右边的,直接跟进看看

 

安卓逆向 -- 某翻译高级版

 



2.我们发现d()也是一个布尔方法;直接hook测试看看

 

安卓逆向 -- 某翻译高级版

 



3.哦吼,一不小心就成功了,直接拿下高级版,说明d()这个方法就是用来判断是否为会员的地方,只要让它返回true,那么app就会判断你是会员

 

安卓逆向 -- 某翻译高级版

 

安卓逆向 -- 某翻译高级版

 



四:研究会员具体代码
我们双击com.gravity.billing.v5.a跟进后就到了会员信息的具体代码;总结就是它是用来管理用户购买和订阅的,而我们hook的d()方法就是判断        f10951df10952e是否为空,因为它们里面存放了会员相关信息,app就是判断是否有购买或者订阅信息来判断你是不是高级版

 

安卓逆向 -- 某翻译高级版

 



总结:分析得有可能不是很准,但是整体逻辑就是app判断某个里面是否存放有购买信息,有,那你就是高级版,没有,那你就是普通版,这软件还是挺不错的,用来看国外电影、小说、漫画翻译还是挺好用的,感谢支持,大家一起交流学习

本文内容来自网络,如有侵权请联系删除

安卓逆向 -- 某翻译高级版

原文始发于微信公众号(逆向有你):安卓逆向 -- 某翻译高级版(你懂的版)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月26日13:13:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向 -- 某翻译高级版http://cn-sec.com/archives/3115243.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息