为IDA 7.0安装keypatch 2.2


keypatch是基于keystone-engine这个汇编引擎的。所以,要在IDA里使用keypatch,需要先安装keystone-engine。

keystone-engine是基于python的,所以你只需要pip install keystone-engine即可。需要注意的一点是,**需要先搞清楚IDA在用你电脑上的哪个python。**一般来说,IDA需要Python 2,我的电脑上安装了Python 2.7,所以IDA使用的是这个,而不是我常用的Python 3。一般来说,需要调用特定python的pip时,常使用python -m pip install keystone-engine

keystone-engine安装完毕后,就可以安装keypatch了。在keypatch的Github repo里下载keypatch.py,将这个文件放到IDA 7.0/plugins目录下,整套工具就安装完毕了。

上述流程确实是官方文档所描述的。但是,新手这样操作常常不行,原因是有些东西搞错了,或者缺少依赖。IDA的错误信息会在最下面的Output window里打印出来,如图:

keypatch_0.PNG

我遇到的错误有:

LoadLibrary(…\keystone.dll) error: %1 不是有效的 Win32 应用程序。

这句话的意思是keystone.dll与你的IDA不是同一个架构的(i386 / amd64),**Win32并不是指keystone.dll不是x86的PE文件。**你需要检查你的IDA是32位还是64位的,可以在任务管理器的“详细信息”选项卡里“平台”一栏看到,或者凭借目录名判断(64位系统下,Program Files目录下一般为64位软件,而带(x86)的则是32位软件。)

我还遇到了这样的问题:

keypatch.py: No module named six

这很明显是缺少包了。虽然我也不知道six是个啥包,但是咱可以pip install six试一试。我需要给我的Python 2.7装上这个包,所以需要:

install_six.PNG

需要注意的是,以上操作尽量在关闭IDA的情况执行。最后,我再次用IDA打开一个exe,按下Ctrl+Alt+K,那个窗口终于弹出来了:

keypatch.PNG