-
-
[求助]请教IDA debugger 插件的编写问题
-
-
[求助]请教IDA debugger 插件的编写问题
正在学习如何使用IDA编写插件,想在程序被调试的时候做一些信息记录工作,于是使用dbg.hpp中提供的api进行相关的操作。
dbg.hpp中的一些api提供了两种版本,一种是同步模式,还有一种是异步模式(request_xxx),同步模式的调用会直接执行并立即返回。而异步模式的是把request请求放入队列在调用run_requests()后由IDA来执行。调试事件由最初的hook_to_notification_point注册的回调处理。
我想要实现的效果是类似Vm dispatcher处下断,单步一下就会到handler处,我要做的就是记录handler的执行流程。
大致思路代码如下:
在dispatcher处断下后执行如下代码
request_step_over();
run_requests();
回调处理
case dbg_step_over:
{
get_reg_val("eip",&stRegVal);//获取eip寄存器的值,发现还未真正执行单步操作
//查看eip值,如果单步执行了
{
//记录相关信息
}
else
{
request_continue_process();
run_requests();
}
}
现在问题是只能记录一个handler,然后IDA调试器就“挂”掉了,就是按F7,F8,F4等这类按键都没效果了~~
自己也刚接触IDA插件,很多东西了解的很肤浅,还请有熟悉的朋友指教一二:)
如果哪位朋友写过IDA debugger相关的插件,也希望可以学习学习~
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)