Hack-Crack 信息安全 【Mars Information Serurity Institute】
站点说明

Scan the QRcode to download

扫描上方二维码下载我的最新应用,Findu(支持iOS Android)关注自己所关注的人,让一切都变的无所遁形,再也不怕搭到黑车啦!

【Findu Today】

本站所破解的程序仅限于分析研究只用,不可用于非法用途,如果喜欢该软件请购买正版。由于程序所造成的损失本人概不负责。

【订阅本站文章】

联系方式:

博客:http://www.h4ck.org.cn

Findu:http://findu.co

微博:http://weibo.com/cracklab

Codes:http://code.h4ck.org.cn

Twitter:http://twitter.com/#!/ob4by

QQ:382291381

danteng link
分类目录/搜索
版权信息:
Nginx Ubuntu php mysql [Valid RSS] Valid CSS!

hacker emblem

知识共享许可协议
火星信息安全研究院 by
obaby is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 2.5 中国大陆 License.
基于www.h4ck.org.cn上的作品创作。

Mac IDA Pro 插件编写指南 v1.0

Windows版的插件编写可以参考的文档比较多,并且也有专门的向导可以来做这件事情,相对来说比较简单。但是针对Mac下的插件编写虽然也有一些参考文档但是都比较老旧。有参考价值但是意义不大,形同鸡肋。Windows下的插件编写可以参考下面两篇文章中的向导:IDA Pro Plugin wizard for vs2013 以及 Ida Plugin Wizard For VS2010

现在开始正题,测试环境为:

Mac OS 10.9.4

Xcode 5.1.1

IDA Pro For Mac 6.5+sdk65

如果环境不一样可能存在些许的差异,下面开始说插件的创建方法。

  1. 运行Xcode选择新建项目,从OSX中选的Framework & Library类,然后选择STL C++ Library(注意不要选择C/C++ Library,选择该项会在编译的时候出现非常多的诡异的错误,即使能够解决也相当的麻烦。)

1

  1. 点击next进入下一步,输入Product Name,这个选项可以随意,只是自己便于识别就可以了,注意Type要选择Dynamic。

2

  1. 继续Next,此时项目就已经创建好了,剩下的就是进行项目的一些配置了,打开编译选项找到Linking项目,在Other Linker flags中新建项目输入-lida

3

  1. 修改Header Search Paths,新建项目添加IDA SDK目录。

4

  1. 修改Library Search Paths添加dylib所在目录,如果路径存在空格需要加引号进行处理,否则在编译的时候这个字段会按照空格分隔为多个。

5

  1. 修改Packaging项目下的Executable Extension为pmc,如果需要可以修改Executable Prefix值。

6

  1. 修改项目的Architectures项目,如果不修改该项在Destination中只有My Mac 64bit编译选项,如果这个值没有候选值那么直接输入 i386 x86_64 保存之后就看到32bit的目标选项了。

7

  1. 将目标修改为32bit

8

  1. 添加项目源代码,测试代码为:
#define __MAC__
#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("===============================\n!");
	msg("Hello world for Ida Mac from obaby\n!");
	msg("===============================\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>

     注意文件头定义的宏#define __MAC__,如果没有这个宏也会出现比较多的诡异错误!

此时直接编译会提示下面的错误:

/Users/obaby/codes/idasdk65/include/loader.hpp:779:38: ‘get_idp_descs’ has C-linkage specified, but returns user-defined type ‘const idp_descs_t &’ (aka ‘const qvector<idp_desc_t> &’) which is incompatible with C

打开Build Phases 找到Complie Soures 添加编译标签-Wno-return-type (或者-Wno-return-type-c-linkage)

9

  1. 现在就可以正常编译了,将编译好的pmc文件拷贝到IDA的plugin目录下,启动ida随便加载个文件,然后执行插件就可以看到输出效果了。

10

到这里32位插件的编译就结束了,64位插件的编译将会在后面进行整理。

 

参考文献:

http://reverse.put.as/2011/10/31/how-to-create-ida-cc-plugins-with-xcode/

http://www.binarypool.com/idapluginwriting/

猛击此处下载pdf版本!

《Mac IDA Pro 插件编写指南 v1.0》有 6 条评论

发表评论

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