本博客地址:https://security.blog.youkuaiyun.com/article/details/82931127
一、使用IDA Pro进行脱壳
注:本文只针对加密壳(教学级)
加壳是为了让自身的classes.dex得到保护,防止APK的源代码被偷窥。
脱壳总目标:
到达dvmDexFileOpenPartial 函数处,dump出内存中的dex文件。这也是脱壳的核心思想
Apk脱壳方法有两种:
1、使用脱壳神器ZjDroid进行脱壳(现在此方法不是很好使,因为很多应用都同步更新自己的防御机制,个人觉得熟练脱壳还是得使用 IDA 进行操练)
2、使用 IDA Pro 在 dvmDexFileOpenPartial 这个函数下断点进行脱壳
虽然加壳能防止源代码被偷窥,但是这只能防止静态分析,无法防止动态调试。不管怎么加壳保护,原始的classes.dex在App运行时都要加载到内存中。所以如果在App加载classes.dex处下个断点,然后再把classes.dex对应内存中的内容抠出来还原成原始的classes.dex文件,就能达到脱壳的目的了。
获取libdbm.so文件
adb pull system/lib/libdvm.so E:/sensor
//注意:直接在命令行下执行,不需要先执行adb shell。同时主机路径不能是磁盘的根目录,必须要先建文件夹
批注:
adb