mengxinb 发表于 2024-7-29 22:06

瞬译v6.9.0解锁高级版(翻译软件)

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()方法就是判断      f10951d或f10952e是否为空,因为它们里面存放了会员相关信息,app就是判断是否有购买或者订阅信息来判断你是不是高级版


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

nelsonkl 发表于 2024-7-29 23:12

楼主能不能给个成品呀?

mengxinb 发表于 2024-7-30 14:48

ibrucekong 发表于 2024-7-30 14:12
学习了,想了解怎么hook的,学过Android,现在靠js吃饭,怎么用js hook Android,楼主介绍介绍,或指条路

学frida就会了

EiSia 发表于 2024-7-29 22:12

感谢分享

mengxinb 发表于 2024-7-29 22:14

@正己 版主审核这么快吗{:301_975:}

xiao83566 发表于 2024-7-29 22:18

这个教学不错

fredchen 发表于 2024-7-29 22:29

下载下来看好不好用,谢谢{:1_918:}

Shenwei520 发表于 2024-7-29 22:38

授人以鱼不如授人以渔,感谢楼主的教学思路

fffxiaofu 发表于 2024-7-29 22:39

学到了学到了

liutao0474 发表于 2024-7-29 22:42

下载试试,感谢分享!{:1_893:}

Dicks 发表于 2024-7-29 23:01

感谢教学,已收藏{:1_893:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 瞬译v6.9.0解锁高级版(翻译软件)