全部博文(60)
分类: C/C++
2011-01-16 11:18:13
IDA Plugin插件结构如下图所示:
IDP_INTERFACE_VERSION:常量,定义在SDK的某个文件中。
plugin_flags:定义插件如何与IDA进行交互操作,不同的flags定义在loader.hpp文件中,当调试plugin的时候,将该值设置成0或是PLUGIN_UNL。
init、term和run三者是函数指针。
init:当插件加载时,执行init函数用来判断该插件是否可应用于当前的数据库idb,因为插件区别不同的处理器架构和文件格式。init函数的额外功能是一旦run函数执行后便为插件设置环境。init函数返回结果分为三种:PLUGIN_SKIP,当处理器架构或文件格式不合适的时候,插件不能加载;PLUGIN_OK,插件合适,在使用时加载;PLUGIN_KEEP,插件合适并将其驻留在内存中。
term:当IDA退出的时候,term函数执行用来清理插件执行期间占用的资源,许多插件将其设置成NULL。
run:运行插件执行run函数,可以通过在插件配置文件plugins.cfg中添加传递给插件的参数。
comment:介绍插件的字符串指针。(IDA未使用)
help:插件的多行帮助说明的字符串指针。(IDA未使用)
wanted_name:插件名。
wanted_hotkey:插件的热键。