几乎所有在APP应用平台的软件,都有壳,若想进一步逆向,查看APP的代码、加解密函数、或者逆向协议,第一步都是要脱壳,脱壳的重要性不言而喻。
FBI Warnning
感谢寒冰、r0ysue大佬,大佬们的gayhub和个人主页在片尾。
原材料
- 谷歌亲儿子手机一部,pixel或者nexus任何版本都阔以,系统Android8.10
- 寒冰巨佬的fart文章,深入理解脱壳原理
- r0ysue姐编译好的fart rom镜像,请放心食用。
过程
首先根据手机下载对应的rom包。
链接:https://pan.baidu.com/s/1zAYliYbkagdUUsykww_L4g 提取码:vv5u
这是手机型号。
下载解压后,会发现里边还有一个image-marlin-opm1.xxxxx.zip的文件,直接解压到这里,会多出来system.img、vendor.img等文件。
这时候,将手机使用USB连入电脑,并开启USB调试,进入fastboot模式,pixel是按照音量向下键和电源键进入的。
你还需要adb,fastboot命令,下载链接:
链接: https://pan.baidu.com/s/1AIJ2qzl-MZUkN9jOoxjOKQ 密码: inag
将AdbWinApi.dll和下面的dll放到C:/Windows/System
将adb.exe和fastboot.exe放到C:/Windows/System32
然后点击flash-all.bat即可。
这里的FAILED,不用太在意,我一开始也是迷茫了好一会,但是看到手机已经重新刷入了新ROM,就知道完工了。
验证脱壳
adb logcat | grep "fart"监控fart脱壳日志。
如何脱壳呢?很简单,将要脱壳的应用安装,然后赋予读写权限,然后启动就完事了,后台就能够看到fart脱壳日志开始整活了,它是自动脱壳。
进入/sdcard/fart,可见脱壳的文件。
然后可以看到有bin、txt、dex三种文件。
- 带excute关键字的dex文件是在excute脱壳点脱下来的dex文件,我们可以直接在jadx里面打开这个dex。关于该脱壳点的更多信息可以看《拨云见日:安卓APP脱壳的本质以及如何快速发现ART下的脱壳点》。
- 带excute关键字的classlist_execute.txt文件,该文件是dex中所有类的类列表,类名是签名形式的以L开头,表示它是一个类,$后面是类中的方法。
- 在修复文件的选择上,首先其实只需要看有bin函数体文件的,没有bin文件的dex是处于不同Classloader中的dex,那些是些系统库或者壳本身,不是我们关心的对象。(修复脚本地址:https://github.com/hanbinglengyue/FART)
python fart.py -d xxx.dex -i xxx.bin >> repired.txt
总结一下,并不是所有dex都需要修复的,有bin的才能修复,当你dump出来的方法体是空的时候,并且有bin文件,然后才要去修复,大部分不需要修复,直接在dex就有了。
点到为止,壳已经脱完了,制作FART脱壳机,第一步搞定。
Refer:
r0ysue姐的github:https://github.com/r0ysue/AndroidSecurityStudy
寒冰大佬:https://bbs.pediy.com/user-home-632473.htm