0x00 前言
emmmmm,就是一个记录,原理下次再分析
样本是2014年ali CTF的一道题
0x01 脱壳
识别出了加了壳,对于一些早期的壳,有一个通杀的办法,那就是在DvmDexFileOpenPartial
下断点,然后可以获取到dex文件在内存中的基址以及大小,然后利用脚本dump出来,原理下次分析,这次主要是操作,那么IDA动态调试
将android_server复制到手机上,并给予运行权限,然后运行:
端口转发
1
adb forword tcp:23946 tcp:23946
然后准备调试应用
1
adb shell am start -D -n com.ali.tg.testapp/.MainActivity
IDA附加进程,然后找到
libdvm
模块,并且定位到DvmDexFileOpenPartial
,下好断点java层跑起来
1
jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost
然后运行,会停在端点处,继续F8单步,这时候,寄存器R0的值就是dex在内存中的基址,R1就是dex的大小
编写IDC脚本dump下dex:
1 | static main(void) |
再用010Editor打开就已经可以识别了