-
-
请教一下版主关于调试器的编写
-
发表于:
2012-4-22 08:01
18745
-
最近想试着写一个转换区位的程序,现有的例子ntlea采用的方式是hook掉所有与code page相关的win api,所以准备也采用类似的方式做inline hook
不过感觉用调试器的架构比较方便在后期加入点功能什么的,而且以前也没有试过嘛
在这里写下自己的思路,希望版主看到了能指点一二
>截获所有的dll导出函数调用
a.LOAD_DLL_DEBUG_EVENT获得映像加载基址和句柄(反查得到文件名
b.读取导入表,通过RVA和映像加载基址获得函数入口点,将函数名和入口保存到一个表中
c.函数头部下int 3
#在这里如果不想源程序读函数头来检测可以用VirtualProtect将内存设为只执行然后处理EXCEPTION_ACCESS_VIOLATION么?又该如何将自己保存的文件头返还给被调试程序呢(比如mov eax,XXXXXXXXh/rep lodsb)?
d.EXCEPTION_DEBUG_EVENT-->EXCEPTION_BREAKPOINT
从ExceptionAddress获得地址,查表获得函数名
e.处理堆栈内的参数/找到ret返回的地址过去int 3截获处理返回值
也希望版主能推荐一些有关调试器编写的文章与书籍,谢谢
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课