天天看点

Android安全–一次简单的脱壳Dump dex实践

加载的模块libdvm.so,找到其中的函dvmdexfileopenpartialPKviPP6DvmDex,在这个函数下断点。

Android安全–一次简单的脱壳Dump dex实践
Android安全–一次简单的脱壳Dump dex实践
Android安全–一次简单的脱壳Dump dex实践

为什么要在这个函数下断点,因为这个函数是加载dex文件的,R0就是加载的dex文件的地址。

然后点击IDA的继续,程序便会断在这个函数上面。

Android安全–一次简单的脱壳Dump dex实践

这时查看R0的值,然后显示其内存如下:

Android安全–一次简单的脱壳Dump dex实践
Android安全–一次简单的脱壳Dump dex实践

我们看到了dex文件的标志。

然后打开idc脚本,修改dump的内存起始地址和结束地址,起始地址就是R0的值,结束地址就是R0加上dex文件的大小,然dex文件的大小在dex header的0×20处,也就是0xFAEB4。

Android安全–一次简单的脱壳Dump dex实践
Android安全–一次简单的脱壳Dump dex实践

点击run,之后会在D盘下面生成一个1M左右的dex文件,这就是我们dump出来的dex文件。

Android安全–一次简单的脱壳Dump dex实践

使用dex2jar转成jar文件,再使用jd-gui.exe打开,得到程序代码:

Android安全–一次简单的脱壳Dump dex实践

也可以把dex文件替换回去,打包运行。

继续阅读