作者:上犹日期:
返回目录:电脑蓝屏
双机调试
双机调试,即,把一台计算机作为主机,显示调试器窗口,而另一台计算机作为客户机,显示被调试程序e799bee5baa6e78988e69d83333的输出值。现在我把在VC里的配置步骤进行一下简单的描述:
1.首先保证两个机器能正常通讯,然后从VCBuild菜单中选择“Debugger Remote Connection”,弹出“Remote Connection”对话框。接着选择TCP\IP作为客户机的连接类型,然后单击“Remote Connection”对话框的Settings按钮,并在接着出现的“Target machine name or address”中输入客户机的IP地址或主机名,并在“Debug monitor password”中输入密码(如果计算机有密码的话)。
2.拷贝文件MSVCMON.EXE、 MSVCRT.DLL、 TLN0T.DLL、 DM.DLL、MSVCP6O.DLL、MSDIS110.DLL到客户机的Windows文件夹中,如果被调试程序在Windows NT下运行,还需要拷贝PSAPI.DLL文件,这些文件将协助调试器的远程监视器程序的工作。接下来在客户机上运行Msvcmon.exe,当VC的“Debug Monitor”对话框出现时,单击Settings按钮,并在“Target machine name or address”中输入主机的IP地址或主机名,在“Debug monitor password”中键入与主机相同的密码,单击OK按钮退出对话框。
3.开始调试 首先在主机上把要调试的程序所在的目录共享出来,以便客户机能够看到所调试的程序。然后在主机上打开被调试的程序,单击Project菜单中的Settings按钮,在Project Settings对话框的Debug选项卡中标有“Remote Executable Path And File Name”的文本框中指定程序路径。在这个文本框中输入程序路径,作为Msvcmon.exe从客户机上进行查看的程序路径,如:\\tartge\pvc\debug\text.exe,其中“target”为主机名,“pvc\debug\text.exe”为客户机得到的执行程序的路径。然后在客户机上运行Msvcmon.exe启动调试监视器程序,当VC DebugMonitor对话框出现时,单击Connect按钮,等待主机启动调试程序。
这样就可以在主机上开始调试程序了。
请详细描述问题,代码或者图片
先我HOOK了 NtQuerySystemInformationh 函数的11号枚举驱动模块功能
实验证明TP没有使用NtQuerySystemInformation的11功能。。白写了半天 呜呜呜
最后无赖直接遍历内核模块链表,把KDCOM.dll的链表给断链(具体参考隐藏驱动模块)。
最后成功了!WinDbg正常通讯调试了。当然稳定点的做法应该还可以修改基址为装载个假的KDCOM镜像基址,让TP清零假的,麻烦没写能过就行。
最后把以上全部处理后就可以使用WinDbg+VM双机调试TP游戏了。。(不过有个小问题存在就是KdPrint等其他打印函数都无法打印信息到WinDbg
单是在虚拟机中开启DbgView可以正常看到打印信息,暂时也不知道为何?怀疑是不是和KdPitchDebugger有关,资料上说0是正常 1不正常但实验证明
KdPitchDebugger为1 TP会视为调试疯狂调用KdDisableDebugger 具体是不是不清楚哈反正DbgView能看到就行了)
正高兴中..结果在Client.exe 这个登录客户端输入帐号密码登录后TP进度条出现了,刚好就在出现DNF.EXE的时候瞬7a64e58685e5aeb9365间卡主了
WinDbg断下来了,无法在运行起来..
Single step exception - code 80000004 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
001b:109575ca 68e188a97b push 7BA988E1h //这个地址是个无效地址啥子都没有不管如何修改这里的汇编代码都会立即断在同样的位置
也就是汇编不运行了彻底死机了就死在这句109575ca 了。
先干掉TP所有的内核定时器和内核线程,再才谈得上做其它的操作!
你看它每个Hook地方的反汇编代码,好几个地方都有out指令的...