VS2010 + IDASDK6.2搭建IDA Plugin开发环境

这里使用的开发环境是vs2010,不过几乎所有的设置在早期版本的vs中基本是一致的。启动vs之后关闭其他的项目和解决方案,然后按照下面的流程创作工程即可。

  1. 执行菜单的File->New->Project… (Ctrl-Shift-N)打开新建工程窗口。
  2. 展开左侧的Visual C++项目模板分支,然后选择右侧的Win32 Project条目,输入工程名称,然后点击确定。


  1. 在Win32Application Wizard先到出现之后,点击左侧的Application Settings连接,在设置界面勾选Windows Application选项,然后选择Empty Project,点击完成按钮退出向导。

  1. 在左侧的解决方案浏览器中,点击源文件,执行添加,新建项添加新的源文件。

  1. 选择C++文件模板,输入文件名称然后点击添加按钮添加此文件,重复此操作知道添加完所有文件。

  1. 按照下面的格式修改项目属性。

在左上方的配置下拉框中选择Release

修改属性->常规,将配置类型修改为动态库DLL,目标文件扩展名修改为.plw

C/C++->常规,附加包含目录添加ida sdk include目录,例如C:\IDA\SDK\Include

C/C++->预处理器,添加__NT__;__IDP__字段到预处理器定义中。

C/C++->代码生成,关闭缓冲区安全检查,将基本运行时检查设为默认,将运行库设置为多线程(MT)

C/C++->高级,将调用约定修改为__stdcall (/Gz)

连接器->常规,将输出文件修改为你的ida插件目录,例如E:\IDA 6.2\plugins

连接器->输入,将ida.lib添加到附加依赖项中。

连接器->调试,生成调试信息设置为否

连接器->命令行添加/EXPORT:PLUGIN

生成事件->后期生成事件,将ida添加到命令行中一边每次生成之后启动加载插件运行(可以不设置)

所有配置完成时候点击保存然后关闭设置窗口,在顶部的配置栏中选择release,即可。

下面就可以开始写代码和进行测试了,这里有一个简单的插件模板,再次基础上完善即可创建一个新的插件:

#include 
#include 
#include 

int IDAP_init(void)
{
	// Do checks here to ensure your plug-in is being used within
	// an environment it was written for. Return PLUGIN_SKIP if the 	
	// checks fail, otherwise return PLUGIN_KEEP.

	return PLUGIN_KEEP;
}

void IDAP_term(void)
{
	// Stuff to do when exiting, generally you'd put any sort
	// of clean-up jobs here.
	return;
}

// The plugin can be passed an integer argument from the plugins.cfg
// file. This can be useful when you want the one plug-in to do
// something different depending on the hot-key pressed or menu
// item selected.
void IDAP_run(int arg)
{
	// The "meat" of your plug-in
	msg("Hello world By obaby!\n");
	msg("This is My first IDA Plugin!\n");
	msg("Plugin templete Created by Steve Micallef!\n");
	msg("Thx for his Great Works!\n");

	return;
}

// There isn't much use for these yet, but I set them anyway.
char IDAP_comment[] 	= "This is my test plug-in";
char IDAP_help[] 		= "My plugin";

// The name of the plug-in displayed in the Edit->Plugins menu. It can 
// be overridden in the user's plugins.cfg file.
char IDAP_name[] 		= "My plugin";

// The hot-key the user can use to run your plug-in.
char IDAP_hotkey[] 	= "Alt-X";

// The all-important exported PLUGIN object
plugin_t PLUGIN =
{
	IDP_INTERFACE_VERSION,	// IDA version plug-in is written for
	0,					// Flags (see below)
	IDAP_init,			// Initialisation function
	IDAP_term,			// Clean-up function
	IDAP_run,				// Main plug-in body
	IDAP_comment,			// Comment �unused
	IDAP_help,			// As above �unused
	IDAP_name,			// Plug-in name shown in 
	// Edit->Plugins menu
	IDAP_hotkey			// Hot key to run the plug-in
};

最后是一张效果图,至于其他的东西,以后可以继续写点东西。

猛击此处下载pdf版本

☆版权☆

* 网站名称:obaby@mars
* 网址:https://oba.by/
* 个性:https://oba.by/
* 本文标题: 《VS2010 + IDASDK6.2搭建IDA Plugin开发环境》
* 本文链接:https://lang.bi/2011/11/3438
* 短链接:https://oba.by/?p=3438
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

14 comments

  1. Level 1
    Internet Explorer 8 Internet Explorer 8 Windows XP Windows XP cn重庆市渝中区 电信

    那么你有IDA6.2吗,可否共享一下,谢谢。

  2. Level 1
    UC Browser 6 UC Browser 6 Windows 7 Windows 7 cn北京市 联通

    大哥你这写的跟VS2010 的环境有关系吗

    1. 公主 Queen 
      Google Chrome 39 Google Chrome 39 Windows 8 Windows 8 cn山东省青岛市 联通

      一般来说和环境关系不大。请参考另外一个回复。

  3. Level 1
    UC Browser 6 UC Browser 6 Windows 7 Windows 7 cn北京市 联通

    我的编程是按照您上面的步骤做的但是,我的一直编译不通过,
    “VCMessage”任务意外失败。
    System.FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。
    在 System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    等等这些错误,麻烦求解?
    这个是和VS的环境配置有关还是要安装IDA pro的插件等?

  4. Level 1
    Firefox 47 Firefox 47 Windows 10 Windows 10 cn北京市 联通/中国人民大学

    您好,请问这个方法适用于IDA6.8吗?或者您有针对于IDA6.8的好的环境配置的方法吗?不胜感激!

  5. Level 1
    Google Chrome 65 Google Chrome 65 Mac OS X 10.13 Mac OS X 10.13 cn北京市 联通

    您好,我的IDA pro版本是6.8绿色版,用的sdk也是6.8,编译器用的是vs2015,按着您的图解配置,成功在plugins目录下生成了”test.plw”。但是在运行时,edit-Plugins菜单中看不见自己写的插件,同时vs错误有3个,都是像这样的:”int (*)()” 类型的值不能用于初始化 “int (__stdcall *)()” 类型的实体,位置分别在IDAP_init、IDAP_term、IDAP_run,我感觉是后面的括号问题。

    1. 公主 Queen 
      Firefox 59 Firefox 59 Mac OS X 10.13 Mac OS X 10.13 cn山东省青岛市 联通

      有的插件并不是在ida启动的时候加载的,是在分析文件之后才加载的。尝试分析一个32位应用之后再看看菜单有没有这个选项。

      1. Level 1
        UC Browser 8 UC Browser 8 Windows 7 Windows 7 cn四川省成都市温江区 电信

        IDA6.8版本以后好像插件都是.dll动态链接库,不再是.plw后缀了,plw后缀的插件不会被加载.
        现在用的IDA7.0,好像没有32位的.
        按照你文中的配置,预处理定义改成了__X64__;__NT__;__IDP__
        lib路径改成\IDASDK70\lib\x64_win_vc_64\ida.lib
        使用VS2015编译出来的dll插件,IDA一加载就会报错IDA:Fatal error befor kernel init
        求大神帮忙解决下7.0版本插件的配置问题

      2. Level 1
        UC Browser 8 UC Browser 8 Windows 7 Windows 7 cn四川省成都市温江区 电信

        IDA7.0以后插件格式为.dll动态链接库,不再是.plw后缀.
        安装文中配置编译的.dll,IDA一加载就报错
        求大佬解决一下

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注