很激动。。解决我一个调试驱动非常头痛的问题。。。。
在这个过程中拜读了 znsoft的文章和高端调试的 文章,的确很牛。。。。
链接如下:
http://bbs.driverdevelop.com/htm_data/125/0901/115354.html
http://advdbg.org/blogs/advdbg_system/articles/1492.aspx
但是里面还有很多没有说到的地方,这里在补充下 。。。
1. pdb文件要和源码还有程序是一个版本。。在windbg中设置好pdb文件和源码的目录。
2. bp hello!add 下断点 。。。
3.在要调试的程序的里加入如下代码,
int main(void)
{
__asm int 3;
}
这样程序一开始就断下来。。
4. !process 0 0 列举所有的进程,找到 需要调试的进程的EPROCESS。
PROCESS 810d65d8 SessionId: 0 Cid: 0654 Peb: 7ffd3000 ParentCid: 00d4
DirBase: 07361000 ObjectTable: e11cbaa0 HandleCount: 38.
Image: conime.exe
PROCESS 81180020 SessionId: 0 Cid: 0624 Peb: 7ffdf000 ParentCid: 04e4
DirBase: 07860000 ObjectTable: e1bd31f0 HandleCount: 7.
Image: hello.exe
5. .process 81180020 切换到需要调试的进程的上下文。。
6. .reload /user 加载符号列表。。
7. 这时候在windbg中就能看到断点出变成红色的了 。。
这个顺序就能保证在kd模式调试ring3程序了。。。