IDA Pro的一些使用技巧

Published: 三 20 十月 2021

In Reverse.

头头

还记得第一次面试老大问我用过ida的哪些快捷键(后来我想到他不是要我背C键是啥意思),我答F5,因为我不记得其他的了,而且一般我是用鼠标点,工作后发现在频繁使用时必定会需要快捷键,这东西也没必要背,用到自然记住,不用自然遗忘,但是还是想贴张图: image.png

对IDA的使用,只有《IDA Pro权威指南》,毕竟它只是一个工具,能有一本书专门讲述它已经能证明它的成功了,除此的话,它的官方文档还是有必要再看一遍的,特别是它的反编译常见错误基本总结了会遇到的问题的解决办法,它的文档也可以直接从ida的图形界面打开:

img

脚本编写

ida支持通过Native(C/C++等)/IDC/Python扩展,我只学过IDC和Python,嗯前者也早忘了,所以最常使用的是Python。对于简单功能或测试可以直接在ida的输出窗口编写python代码,在复杂一点可以用今年的插件比赛出现的IPyIDA,它把IPython和IDA缝合了,安装好后按<Shift-.>即可:

再复杂一点就要用IDE开发了,我把Python3安装在了IDA目录下,使用Pycharm开发,做如下配置:

此处添加了一个库路径,它就是看雪下下来后解压出的那样,里面是ida.py等文件,方便使用。由于此时开发无法直接使用pycharm调试,推荐安装pydevd-pycharm库,之后在代码中添加如下代码:

import pydevd_pycharm

pydevd_pycharm.settrace('localhost', port=5555, stdoutToServer=True, stderrToServer=True)

ida运行该代码将会连接位于"localhost:5555"的调试器,再使用pycharm监听即可调试:

关于IDAPython的API可见官方文档,不过写的挺简单的,而且不同版本一直在变化,例如最常用的,根据一些字符串/调试信息对函数重命名,可很容易使用python实现,经分析该函数第2个参数代表命令名称,第5个参数代表命令的函数:

image.png

因此可编写脚本,ida本身未提供参数相关的接口,对此可使用idahunt(或flare),它通过一些传参特征追踪参数,另外也可以直接用hexrays的