同样的代码,为啥我的出错,调试解决问题

最近将WRK中的一部分代码挪出来自己修改编译做一套(具体是啥不透露)。可是我只修改了很基本的几个部分,hook上之后,代码运行老是出错。
1 比如说在程序启动的时候,会调用DbgkCopyDebugObject拷贝explorer.exe中的DebugPort到即将启动进程中的DebugPort中。开始的时候,出现了这个奇怪的问题,按理说explorer.exe中的DebugPort应该为null的,可是运行起来的时候,在我的代码里面的时候,explorer.exe中的代码为DebugPort为0x1,太奇怪了
我是这么查看的:


诡异吧,哈哈 使用dt SourceProcess,是查看dt SourceProcess查看这个地址的时候,windbg默认使用我的代码里面的_EPROCESS类型

哈哈,这里我犯了一个错误,因为SourceProcess是操作系统传给我代码的指针,所以我应该使用如下的指令来看。

指定类型使用nt!_EPROCESS,同样的地址,这样查看出来两个变量是不一样的,在我的代码里面结构体的偏移量和xp中原来的都不一样,相当于访问了错误的地址,当然会出错啊

调试的功能无比的强大啊。。呜呼哉。。好好学习调试技术。

posted @ 2011-12-23 11:21  Jack204  阅读(570)  评论(0编辑  收藏  举报