最近自己在写一个调试器,准备山寨Windbg一下,^_^。
不过现在遇到了一个问题。
在ReadProcessMemory时,如果读取被调试的程序模块之内的内存可以成功。
但是在读取被调试程序以外的模块领空,例如该程序的Dll,就不能读取,返回的错误码是12B(仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。 )。
我也是百思不得其解啊。给几张图说明一下情况(因为百度空间不支持外链,所以请点连接游览)
第一张是正常的,也就是主程序模块的领空。
http://hiphotos.baidu.com/nightxie/pic/item/2d2610870ec27506c75cc3f0.jpg
第二张就是Kernel32.dll的领空,不能Read
http://hiphotos.baidu.com/nightxie/pic/item/e5067d2ca04de9c08b1399f0.jpg
第三张是Windbg,正常分析Kernel32.dll
http://hiphotos.baidu.com/nightxie/pic/item/1e22ba525fb032220df3e3f0.jpg
呵呵,初始断点是新进程开始运行后Hard Code在Loader里的,所以在debugger loop里面等待就可以了...