网友通过本文主要向大家介绍了ida android,ida动态调试android,ida android server,ida 安卓,ida调试安卓等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android安卓破解之逆向分析SO常用的IDA分析技巧
1、结构体的创建及导入,结构体指针等。</div>
以JniNativeInterface, DexHeader为例。</div>
解析Dex的函数如下:</div>
</div>
</div>
</div>
F5后如下:</div>
</div>
</div>
</div>
File->load file->parser c header file,导入Dex.h</div>
上图中a1,右键转成结构体,选择dexheader,效果如下:</div>
</div>
</div>
</div>
2、函数指针时的参数个数调整,不定参数等。</div>
以__android_log_print为例,选中该函数。</div>
</div>
</div>
</div>
Edit->operand type-> set operand type,修改参数如下:</div>
int (__cdecl *)(int, char *, char *, char *, int *, int *),F5刷新后,效果如下:</div>
</div>
</div>
</div>
</div>
3、thumb/arm模式的转换</div>
快捷键ALT +G,其中0x01是THUMB,0x00是ARM模式。一般4个字节ARM模式,两个字节为THUMB模式,如:</div>
</div>
</div>
</div>
4、函数被误认为chunk,导致调用者函数多个入口。</div>
以Java_by_Ericky_crackme01_JNI_EatRice为例,可以看到有两个入口。</div>
</div>
</div>
</div>
</div>
</div>
来到第一个入口的结束位置为BX跳转指令, 应该让他跳转到第二个入口出,才正确。</div>
</div>
</div>
</div>
所有首先要remove function tail,</div>
选中,结尾处,然后edit->functions->remove function tail,效果:</div>
</div>
</div>
然后再将跳转指令BL,修改为Call,edit->others->force bl call,效果</div>
</div>
</div>
</div>
</div>
</div>
5、C++RTTI,类名识别。</div>
来的 JNI_OnLoad处</div>
</div>
</div>
sub_A558为构造函数。</div>
</div>
</div>
</div>
</div>
</div>
可以得在该函数名为9ArtLoader,</div>
</div>
</div>
</div>
</div>
6、创建函数,设定函数结尾地址。</div>
F5,效果如下:</div>
</div>
</div>
解决办法,按P,再F5。如果P没有效果,则可以选中后再按P。</div>
7、Elf的修复,内存dump该so及其以来文件,然后修改dump出来的基址,File-->LoadFile-->binary file。</div>
dump命令为:</div>
dd if=/proc/1935/mem of=/sdcard/alimsc4 skip=1578049536 ibs=1 count=3993600</div>
</div>
8、数据复制、patch。</div>
选中数据,然后edit->export data,即可</div>
</div>
</div>
9、脚本,idc,IDAPython</div>
http://magiclantern.wikia.com/wiki/IDAPython/intro</div>
http://drops.wooyun.org/tips/11849</div>
http://drops.wooyun.org/tips/12060</div>
</div>
10、lsof查看被删除的文件,cat从内存中得到被删除的文件</div>
root@android:/ # lsof |busybox grep com.sxiaoao.car3d3</div>
system_se 523 system 298 /data/app/com.sxiaoao.car3d3-2.apk</div>
com.sxiao 10370 u0_a65 44 /data/data/com.sxiaoao.car3d3/files/app_sdk103700_.jar (deleted)</div>
com.sxiao 10370 u0_a65 48 /data/app/com.sxiaoao.car3d3-2.apk</div>
com.sxiao 10370 u0_a65 49 /data/app/com.sxiaoao.car3d3-2.apk</div>
</div>
10370是进程号 44是打开文件的fd 文件fd映射在/prop/pid/fd里面</div>
用cat命令把文件拷贝出来</div>
1|root@android:/ # cat /proc/10370/fd/44 > /data/local/tmp/test.jar</div>
</div>
11、arm指令模拟器</div>
</div>
12、为什么不能F5, 不能全信F5</div>
</div>