選自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.作者沒有處理 給了個思路,驅動中的重啓代碼 ;好了 至此徹底看不懂 有需要朋友的可以看原版
系統不同,下的地址也不同