#include <ida.hpp>
#include <idp.hpp>
#include <loader.hpp>
#include <ua.hpp>
#include <allins.hpp>
int idaapi IDAP_init(void)
{
msg("init %s\n",inf.procname); //获取处理器架构 inf为loader.hpp中的全局变量
return PLUGIN_KEEP;
}
bool idaapi run(size_t arg)
{
insn_t out;
ea_t ea = get_screen_ea(); //获取当前光标所在地址
decode_insn(&out, ea); //获取完整指令信息
if(out.itype == ARM_sub) //.itype表示指令
{
msg("arm_sub\n");
msg("n = %d type = %d reg = %d value = %lld addr = %lld\n",
out.ops[0].n,
out.ops[0].type,
out.ops[0].reg,
out.ops[0].value,
out.ops[0].addr); //ops 表示操作数,ops[0]表示第一个操作数。
}
return true;
}
void idaapi term(void){}
char IDAP_comment[] = "This is my test plugin-in";
char IDAP_help[] = "My plugin";
char IDAP_name[] = "My plugin";
char IDAP_hotkey[] = "";
plugin_t PLUGIN =
{
IDP_INTERFACE_VERSION,
PLUGIN_PROC,
IDAP_init,
NULL,
run,
IDAP_comment,
IDAP_help,
IDAP_name,
IDAP_hotkey
};