2023年12月2日发(作者:)

编写OD插件将IDA中分析出来的函数名导入到OD中逆向程序的时候,喜欢用IDA静态分析,用OD动态调试,如果把IDA分析出来的函数名称都导入到OD中,调试的时候就知道哪些函数不需要再看了。以前我一直用GODUP的map loader,但是有些时候感觉它有点问题,还有一个插件叫MapConv也有这个功能,不过我还是打算自己写一个,主要是为了学习如何编写OD插件

首先我用一个IDC脚本将idb中所有函数的名称都导出到一个文件当中// #include <> static CamelLu() { auto addr,path,file,imagebase; Message("Functions' Names Dumper - CamelLu(2011.7.19)n");

这个idc脚本文件没有main函数,因为我要使用快捷键来调用它

使用方法:

在IDA的安装目录下面找到idc这个目录,把上面这个脚本保存到这个目录中,然后idc目录下找到

这个文件,打开它,在#include<>的下面加入#include<>,然后在它的main函数里面加入AddHotkey("Alt-9","CamelLu");

接下来你就可以在IDA中按Alt+9来调用这个脚本了( 为脚本选择热键的时候要注意,如果这个热键已经被其他脚本或者插件使用的话,AddHotKey会失败,IDA不会给你提示的噢)

接下来再写一个OD插件来解析上面输出的文件,用Quickinsertname和Mergequicknames函数把函数名加到相应的地址就OK。我对插件框架的几个函数用途都写了简单的注释,相信大家看过之后都能自己写OD插件了VS环境设置为 Use Multi-Byte Character Set如果提示“Please set default char type to unsigned (option /J)” 解决方案如下:1. In Solution Explorer, open the shortcut menu for the project and then chooseProperties.2. In the project Property Pages dialog box, in the left pane underConfiguration Properties, expand C/C++ and thenselectCommand Line.3. In the Additional Options pane, specify the/J compiler option.需要注意的是 如果是用VS2012编译 在XP上OD启动加在这个插件会报错,找不到“” 但是XP上最多支持即便找来了注册它 也是要出错的 所以如果需要在XP上的OD运行该插件 用VS2010编译该插件就行 VS2012编译只能在WIN7 WIN8的OD上运行#include #include //for GetOpenFileName function. #include //for _tcscpy_s ... function. #include //for _coOD插件的使用方法:如果是原版的OD,直接把编译好的DLL放到od主程序的目录就可以了,看雪版的OD把DLL放到plugin目录下。