drizzleDumper介绍
drizzleDumper是一款基于内存搜索的Android脱壳工具。是根据strazzere大神的android-unpacker优化改造而成,这是一款ndk写的动态Android脱壳的工具,原理简单来说就是ptrace,然后在内存中匹配特征码和dex的magic,最后dump到文件。
apk文件结构
dex文件头结构
drizzleDumper修改优化的地方:
1.android-unpacker基本上就是匹配odex magic的函数时(下图),而drizzleDumper不管odex了,专心匹配dex的magic。
2.android-unpacker用pread(下图),而drizzleDumper换了read和lseek,具体就不说为啥了,这是非常重要的一点。
3.直接抛弃了android-unpacker中的壳的特征匹配这一整块儿内容。
4.android-unpacker只匹配和dump一次,而drizzleDumper引入了双循环机制,这点对脱壳成功也非常重要。
5.android-unpacker在peek_memory(下图)中进行magic匹配,drizzleDumper改了逻辑,换了一种匹配方式。
6.另外还增加了一匹配种方法,来增强匹配的成功率。
7.引入了wait_times机制(很无奈,等待真正的程序dex加载到内存)
8.其他..
drizzleDumper使用
1.获取root权限
执行adb root命令 或者 adb shell su
2.将drizzleDumper文件adb push到/data/local/tmp路径下
3.安装apk
adb install apk
4.运行apk
5.执行脱壳工具
adb shell ./data/local/tmp drizzleDumper apk包名 2
6.dump下来的dex文件会存到/data/local/tmp路径下,将文件下载下来
7.剩下就可以通过dex2jar等工具,解析源码了。