没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
用 C/C++编写 IDA 插件
第一章 入门
1.1 为什么会有这本手册?
花了大量时间在IDA SDK中,来阅读那些头文件,以及学习别人的
插件源代码后,我觉得应该有一个更简单的方法来开始IDA插件编写。
尽管这些头文件中的注释十分翔实,但我发现这样浏览和搜索这些注释
有点困难,因为我需要它们时,并不想通过大劳动量的搜索。我想我该
写这样一本手册,来帮助那些希望开始学习插件开发的朋友。因此,我
决定用一个篇章来介绍如何配置开发环境,让您能更快速地入门。
1.2 涵盖的内容
这本手册将引导您开始编写IDA插件,首先将介绍SDK,然后是介
绍在多个平台下,配置插件开发环境。您将得到如何使用各种类和结构
的经验,接下来是介绍一些作用广泛的SDK导出函数。最后,我将介绍
如何使用IDA API来完成基本的任务,例如,用循环来分析函数,钩挂
调试器和操作IDA数据库文件(IDB文件)。当您读完后,您应该能运用
自己的知识来编写您自己的插件,希望您能通过社区把您的插件公布出
来。
1.3 不包括的内容
尽管IDA的标准版和高级版支持许多其他的平台,但我主要关注于x
86平台,因为我在这平台上面有最多的经验。因此,如果您需要全面
掌握所有的IDA函数,我建议您去看看其它的那些头文件。
这本手册主要介绍的是“只读(read only)”函数,而不大介绍其它的函
数,如添加注释,错误校验,定义结构等等函数。SDK资料中的种类很
庞大,不介绍这些函数,是想让手册体积适中。
我开始想介绍netnodes的概念,可是因为IDA SDK的结构和类的成
员很复杂,而且还有很多特殊原因,您知道的,手册不会包含一切。如
果您确实需要这些知识,请您写信告诉我,可能会在下一个手册版本中
来介绍这些,如果没别的特殊原因的话。
1.4 前置知识
首先最重要的是,您应该掌握如何使用IDA,这样您就能够舒服地
浏览反汇编代码,以及配置调试器。还有,您应该准备C/C++语言的知
识,最好还有x86汇编语言。在这里,C++是非常重要的,因为SDK有
相当多的C++代码。如果您对C++不熟悉,但很精通C,您应该至少理
解OOP的概念,如类,对象,方法以及继承。
1.5 居家旅行必备良药
编写、运行IDA插件,您需要IDA pro反汇编器4.8版或4.9版,还有I
DA SDK(您可以从 http://www.datarescue.com处获得,但需要IDA授
权许可),以及一个C/C++编译器,象Visual Studio,GCC平台,Borlan
1
用 C/C++编写 IDA 插件
d系列,或其他的。
请注意,4.9版中所做的一些改变,已经被写进手册了。而且,对
于4.9版,SDK是稳定的,4.9版的一些函数将不会再改变,也就是说,
给4.9版写的插件(通常是二进制形式)也可以在以后的版本中正常工
作。
1.6 C/C++之外的选择
如果您对C也不感冒,那么可以看看IDAPython,它是一个函数集,
用高级语言Python封装了所有C++ API。要获取更多详细资料,请去 htt
p://d-home.net/idapython。还有一份使用IDApython的手册在 http://d
kbza.org/idapython_intro.html,里面有很多详尽的介绍,作者是Ero Ca
rrera。
还有一份介绍使用VB6和C#编写IDA插件的文章,请登陆:
http://www.openrce.org/articles/full_view/13。
1.7 关于这本手册
如果您有任何问题、建议或您发现一些错误,请您告诉我,Steve
Micallef,邮箱是 steve@binarypool.com。如果您真的从手册中读到对
您有帮助的内容,我仍然会写信感谢您,这么做是非常值得的。
因为SDK会不断“长胖”,所以,这本手册也会适时的升级。您将从
这里 http://www.binarypool.com/idapluginwriting/ 处获得最新版本的
手册拷贝。
1.8 致谢
我必须感谢下面列出的朋友,他们对本手册提供了,审校、鼓励以
及反馈,下列牛人排名不分顺序:
Iifak Guilfanov,Pierre Vandevenne,Eric Landuyt,Vitaly Osipov,
Sccott Madison,Andrew Griffiths,Thorsten Schneider和Pedram Amin
i。
1.9 其他资料
在手册的编写过程中,参考了一份关于IDA插件的文档,该文档介
绍了如何使用4.9版的通用脱壳插件,其中包括如何编写这种插件,以
及如何运行插件。它可以在:
http://www.datarescue.com/idabase/unpack_pe/unpacking.pdf 处 被
找到。如果您对编写插件很积极,您可以去Dataresuce的论坛去寻求帮
助(http://www.dataresuce.com/cig-local/ultimatebb.cgi),当没有官方
支持的时候,您可以向Datarescue的人(或者IDA老手)求助,他们会
乐意帮助您。
另一个非常棒的地方是 http://www.openrce.org, 在那儿,您将不
仅仅找到很多逆向工程方面的好文章,还有工具,插件以及文档。那儿
还有牛人在论坛里,他们将尽可能帮您解决IDA或者一般的逆向工程问
题。
2
用 C/C++编写 IDA 插件
第二章 IDA SDK全局组织
IDA是一款非常好的反汇编器,而且最近还发布了一个调试器。IDA
单独实现了很多了不起的功能,可是有时候,您可能需要实现一些IDA
并没提供的功能,比如自动化或者做一些特殊的任务。另人欣慰的是,
发布IDA SDK的Dataresuce公司的那些哥们儿,提供了一些接口,供您
自己扩展IDA的功能。
下面是您能够用IDA SDK编写的四种类型模块,插件模块将是本手
册的主题:
模块类型 作用
处理器 增加对不同处理器架构的支持,也被称做 (
)模块。
插件 扩展 功能。
文件加载器 增加对不同的可执行文件格式的支持。
调试器 在不同平台下,增强与其他调试器(或远程调试)交
互的调试能力。
上面的“插件(plug-in)”术语将代替“插件模块(plug-in module)”,除非
有特别说明。
IDA SDK 包含了您需要编写 IDA 插件的所有头文件和库文件。还支
持 Linux 和 Win 平台下很多的编译器,而且还给出了一个插件例子的源
代码,用来示范一些简单的功能。
不管您是一位逆向工程师、漏洞研究员、病毒分析员,或是身兼以
上数职,SDK 都提供了一个格外强大灵活的平台。您差不多都能用它编
写您自己的调试器/反汇编器,这当然是另人满意的。下面保守地列出
了一些您能够用 SDK 做的事情:
自动分析和脱壳。
自动搜索被使用的函数(比如, ,和
您想到的其他函数)。
分析程序数据流,寻找您感兴趣的东西。
二进制文件比对。
编写一个反编译器。
还有其他的功能……
查看别的朋友用 编写的插件代码,请登陆 网站,
地址是 ! 。
3
用 C/C++编写 IDA 插件
2.1 安装方法
很简单的。当您得到了 SDK(一般都应该是.zip 格式的文件),解压
缩它到您选择的目录。我通常是在 IDA 的安装目录下,建立一个 sdk 目
录,把所有的玩意儿都放那儿,但这不是很要紧的,您也可以按您的
想法办。
2.2 目录结构
我将探讨一些关于插件编写的内容,以及讨论它们的实质,但不涉
及所有 SDK 的内容。
目录 内容
此根目录下有一些不同平台下的 makefile 编译配置文件,以
及您应该首先阅读的 readme.txt,特别是当版本有变化的时
候。
"#
此目录下包括:以功能分类的头文件。我建议仔细查看这些
头文件,并且纪录一下这些函数,当您看完本手册好,便可
以应用这些函数。
$%%
用于 Borland C 编译时,所使用的 IDA 库文件。
&%%"'
Linux 下的 GCC 编译时,要用到的 IDA 库文件。
&$%%
Windows 下,GCC 编译时,所使用的 IDA 库文件。
libvc.wXX/
("$ 下,)#*++编译时,要用到的
库文件。
plugins
插件例子代码。
XX 表示 32 位或者 64 位,这要看您所运行的平台架构。
2.3 头文件介绍
在 include 目录中的五十多个头文件中,我发现很多常用于编写插件的头文件。
如果您需要所有头文件中的说明信息,可以看看 SDK 根目录下的 readme.txt 说明
文档,或者是头文件中自带的说明。下面这个列表只是简单描述了它们的大致功
能,更详细的介绍请参阅以后的章节。
文件 内容
文件包括:area_t 和 areacb_t 类,他们表示代码中的
“域(areas)”,稍候将详细介绍“域”的概念。
反汇编文件中,处理字节的函数和一些定义。
&,
这些文件中包括:调试器类和函数。
-,.
这些文件包括 IDA 自己的 fopen(),open(),等等。
以及一些其他函数。还有文件操作函数(获取硬盘
剩余空间,当前工作目录,等等)。
"
获取和操作执行文件的入口点(entry point)信息的相
4
剩余35页未读,继续阅读
funlxd
- 粉丝: 6
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0