简单so层逆向实战--jg新闻
source link: http://blog.wen2go.site/2022/03/12/%E7%AE%80%E5%8D%95so%E5%B1%82%E9%80%86%E5%90%91%E5%AE%9E%E6%88%98-jg%E6%96%B0%E9%97%BB/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本篇文章仅用来学习交流,请勿用于商业用途,如因违反规定产生任何法律纠纷,本人概不负责。假如本文影响到官方任何利益,请联系文章底部作者微信告知,本人会在第一时间将文章删除,感谢~
记录下某j光新闻apk
的逆向,技术点包括root检测,脱壳及静态分析,so
层加密分析。
抓包查看接口
- 打开
app
发现有root
检测,可以使用frida
调用过root
的脚本,这里我用objection
提供的指令过root
检测,方便快捷。
使用
objection
如下指令在启动阶段hook
掉root
检测,然后抓包分析接口objection -g appname explore --startup-command "android root disable"
经过查看几个接口分析应该是
sign
和account
参数,抓包分析不细说了,网上可以百度教程
- 打开
接下来就可以拿着参数去静态分析
美滋滋打开
jadx
,发现有加固,看文件名是360
的壳用葫芦娃大佬的
frida_dexdump
直接脱,之前文章有讲脱完用
jadx
打开,可以直接搜到root
的弹窗位置这里还有个坑,高版本有不知名的
bug
,V1.3.3
打开报错,V1.3.2
打开不能搜索,V1.2.0
和V1.3.0
可以打开, 新版本纵然有新鲜功能,但还是老版本稳定,可以少掉好多头发。。。搜了下
sign
和account
,最后定位到下面函数位置然后继续追进函数看,这里用
b
类new
了一个a
对象,然后用调用了a
对象的a
函数跟进
b
类,发现下面的两个函数都是空的,难道没壳脱干净? 其实这里是interface
抽象类,一般是在其他地方继承此类,可以理解为重载。我直接搜了一下类名
e.b.b.a.a.b
,发现有两个重载,追进去看到函数名,就能大概确定就是我们要找的函数,而且是个native
函数,so
文件是wtf
。
使用
IDA
分析so
层逻辑从
apk
包里拿出libwtf.so
,用ida
打开,直接确定->确定->确定。。。到下图的界面点击右上角的
Exports
,查看是否有我们需要的导出函数,搜索java
,刚好就是java
层看到的两个函数getSign
和getFinalDeviceId
.双击
getsign
函数,进入汇编代码界面然后一顿骚操作>>F5
>>Hide casts
>>替换JNIEnv
; 就可以看到下图的伪C代码,逻辑很清晰
逻辑理清之后,直接上
frida hook
最后一次md5
加密的函数,so
层加密根据偏移地址进行hook
,参考之前frida
教程。分析到这里已经结束了,有经验的师傅一眼就看出来
account
其实就是随机的UUID
,去java
层验证无误。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK