VMware虚拟机上如何调试运行DNF

 我来答
百度网友ca5e28e
2018-07-22 · TA获得超过7.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:45%
帮助的人:6226万
展开全部

不做任何处理直接在虚拟机中运行,系统蓝了如图:


然后咱开始处理了,这东西不难,难的是思路,这里来讲一下,系统蓝屏,调试器又收不到信号,同时用工具检测到,游戏的驱动挂钩了
KDCOM.dll:KdReceivePacket  //这两个是COM串口的接受和发送数据
KDCOM.dll:KdSendPacket      //主要用来方式别人双机调试 
这两个函数
同时用IDA检测到使用了KdDisableDebugger来禁用双机调试
因此正常的思路是把他们全部恢复过来,禁用KdDisableDebugger十分简单,我不赞同直接修改KdDisableDebugger的代码,反而喜欢直接把调用KdDisableDebugger的代码给NOP掉,至于如何NOP,看完下面的估计你就会的差不多了。
首先找到对:KdReceivePacket和KdSendPacket   HOOK的代码,这个我是在实体机上找到的,因为在实体机上一挂系统调试器就没法截屏,没有图十分遗憾,抽个空找个照相机照下来,这个以后补上。
一下是对这两个函数进行HOOK的代码:



找到这两个就好办了,然后挂上双机调试,开启游戏,但是别点登陆,否则系统又蓝了!


回到WINDBG,然后下断点,bp          nt!IopLoadDriver+0x66a
系统不同,下的地址也不同,以前我说过,不在重复
最后在给个贴图



然后g 运行
回到虚拟机,登陆游戏吧!
一会就中断到调试器中了,

进入这个CALL



算出它的驱动的基地址
这里算出基地址是EE276000
然后找到它HOOK的地址
输入命令
s -b EE276000 L5000 89 19 0F 20 C0 0D 00 00 01
得到如下图



然后反汇编uf ee27837c
得到如下


还等什么,把HOOK的位置直接NOP掉就行了




然后输入G
得到如下所示



啊!咋从新启动计算机了,呵呵别着急,因为咱只处理了两个地方,还有个KdDisableDebugger
没有处理,即使处理了,游戏也可能检测到系统运行在虚拟机环境中,至于如何不让他重启,且听下回分解!这里先给个思路,驱动中的重启代码



根据它就能找到了
休息会,找重启代码的就不贴了,下次再贴
搞掉重启后 系统还是蓝屏,但蓝屏后断下来了,调试器也能收到调试信息,游戏的驱动加载完毕了


,VMX_FB出错,
初步排除是虚拟机显卡的事情,然后我从网上找了个虚拟机显卡,比较早的,还是VM5的,我这个是是VM7的,没办法,试试呗,

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式