IDA使用手册_(1)

1.快捷方式

Shift+F12: 快速查看so文件中的字符串信息,分析过程中通过一些关键字符串能够迅速定位到关键函数;

F5: 可以将ARM指令转化为可读的C代码,同时可以使用Y键,对JNIEnv指针做一个类型转换,从而对JNI里经常使用的JNIEnv方法能够识别;

Ctrl + S: 有两个用途,在IDA View页面中可以查看文件so文件的所有段信息,在调试页面可以查看程序中所有so文件映射到内存的基地址。tips:在进行so调试过程中,很有用的一个小技巧就是IDA双开,一个用于进行静态分析;一个用于动态调试。比如说调试过程中要找到一个函数的加载到内存中的位置,

**G:**可以在调试界面快速跳转到指定的绝对地址,进行下断点调试。如果跳转到目的地址之后,发现是DCB数据的话,可以使用P键进行转化;

**F7:**单步进入调试;

F8: 单步调试。

2.动态调试

对于没有反调试的步骤:

  • 1)adb push d:\android_server(IDA的dbgsrv目录下) /data/local/tmp/android_server(这个目录是可以随便放的)。

    1. adb shell
    1. su(一定要有root权限)
    1. cd /data/local/tmp
    1. chmod 777 android_server (给android_server可执行权限)
  • ./android_server对本地设备端口进行监听

  • 6)再开一个cmd:

  • adb forward tcp:23946 tcp:23946(端口转发,调试手机上的某个进程要有协议支持通信)让远程调试端IDA可以连接到被调试端

  • 7)使用IDA连接上转发的端口,查看设备的所有进程,找到需要调试的进程。具体步骤方法为:在Debugger选项卡中选择Attach,选择android debugger,点击Ok。

  • 8)动静结合方式(基地址+相对地址)确定函数地址进行调试。

对于有反调试的步骤:

  • 1)启动android_server

  • 2)端口转发adb forward tcp:23946 tcp:23946

  • 3)adb shell am start -D -n 包名/类名;出现Debugger的等待状态

  • (说明:以启动模式启动,是停在加载so文件之前,包名可以在androidmanifest文件中找到)

  • 4)打开IDA,附加上对应的进程之后,设置IDA中的load so时机,即在debug options中设置;

  • 5)运行命令:jdb -connect com.sun.jdi.SocketAttach:hostname=localhost, port=8700

  • 6)点击IDA运行按钮,或者F9快捷键。

上一篇:Java基础复习笔记基本排序算法


下一篇:IDA常用的快捷键