学习VM上运行dnf(整理)

来源:互联网 发布:linux dd u盘启动 编辑:程序博客网 时间:2024/04/29 01:21

选自http://bbs.pediy.com/showthread.php?t=129810&highlight=dnf

本文是对该文章进行一些整理加自己的思考和提问 以便在日后的学习中带着问题去学

1.dnf上HOOK了三个函数,无法再虚拟机上使用,游戏一旦加载驱动直接蓝屏。

 

2.系统蓝屏,调试器又收不到信号,同时用工具检测到,游戏的驱动挂钩了,用IDA检测到使用了KdDisableDebugger来禁用双机调试


3.正常的思路是把他们全部恢复过来,即禁用KdDisableDebugger

 

4.作者不赞同直接修改KdDisableDebugger的代码,反而喜欢直接把调用KdDisableDebugger的代码给NOP掉

 

5.首先找到对:KdReceivePacket 和 KdSendPacket   HOOK的代码,在实体机上找   ;如何找 为何找

 

6.然后挂上双机调试,开启游戏,但是别点登陆,否则系统又蓝了!

7.回到WINDBG,然后下断点,bp          nt!IopLoadDriver+0x66a                        ;为什么是nt!IopLoadDriver+0x66a
  

 

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

 

9.发现中断处是一个call 进入该call

 

10.算出它的驱动的基地址 设为EE276000                             ;怎么算的

11.然后找到它HOOK的地址
输入命令
s -b EE276000 L5000 89 19 0F 20 C0 0D 00 00 01

12.反汇编uf ee27837c

13.HOOK的位置直接NOP掉就行了                           ;如何知道哪里是hook

14.输入 g  发现重新启动


15.目前只处理了两个地方,还有个KdDisableDebugger

16.作者没有处理 给了个思路,驱动中的重启代码    ;好了 至此彻底看不懂 有需要朋友的可以看原版

  系统不同,下的地址也不同