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,即可。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <ida .hpp>
#include <idp .hpp>
#include <loader .hpp>
 
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
};
</loader></idp></ida>

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

猛击此处下载pdf版本

You may also like

9条评论

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

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

发表评论

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