龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 2011|回复: 0

通用的驱动自建调试系统模型

[复制链接]

10

主题

1

回帖

15

积分

编程入门

Rank: 1

龙马币
40
        网上很多代码,自建调试系统,都是基于WRK修改的方法,随便打开一份带有自建调试系统的源码,都能看到M$程序猪的代码,所以,这就是为什麽大部分写驱动的人都把调试系统固定在XP上(因为win7以上没有WRK作为参考)

  观察一下网上的代码,我们大可得到一个规律:

  凡是有对于DBGPort判断的地方,都把自己从其他地方得到的DEBUG_OBJECT替换掉,大家可以去对比他们的代码。

      那麽我们纵观全系统,对于DBGPort清零,我们可以使用HOOK模型。这种HOOK模式是我第一次在AGP高级班的7.1.1上第一次出现。大家可以去网上找,一堆盗版。那麽我们怎麽样的思路来兼容WIN7呢?我们查看IDA,随便找一个访问到DBGPort的代码:

  1. _DbgkMapViewOfSection@20 proc near      ; CODE XREF: NtMapViewOfSection(x,x,x,x,x,x,x,x,x,x)+223p
  2. PAGE:0065733E
  3. PAGE:0065733E var_C0          = dword ptr -0C0h
  4. PAGE:0065733E var_BC          = dword ptr -0BCh
  5. PAGE:0065733E var_A8          = dword ptr -0A8h
  6. PAGE:0065733E var_A0          = dword ptr -0A0h
  7. PAGE:0065733E var_9C          = dword ptr -9Ch
  8. PAGE:0065733E var_98          = dword ptr -98h
  9. PAGE:0065733E var_94          = dword ptr -94h
  10. PAGE:0065733E var_90          = dword ptr -90h
  11. PAGE:0065733E ms_exc          = CPPEH_RECORD ptr -18h
  12. PAGE:0065733E arg_0           = dword ptr  8
  13. PAGE:0065733E
  14. PAGE:0065733E                 push    0B0h
  15. PAGE:00657343                 push    offset stru_455C98
  16. PAGE:00657348                 call    __SEH_prolog4
  17. PAGE:0065734D                 mov     edi, edx
  18. PAGE:0065734F                 mov     eax, large fs:124h
  19. PAGE:00657355                 mov     al, [eax+13Ah]
  20. PAGE:0065735B                 xor     ebx, ebx
  21. PAGE:0065735D                 cmp     al, bl
  22. PAGE:0065735F                 jz      loc_657482
  23. PAGE:00657365                 mov     edx, large fs:124h
  24. PAGE:0065736C                 test    byte ptr [edx+280h], 4
  25. PAGE:00657373                 jnz     loc_657482
  26. PAGE:00657379                 cmp     [ecx+0ECh], ebx
复制代码


那麽我们怎麽让这裡的DBGPort是有效的呢?首先,我们通过Hook
NtCreateDebugObject 得到OD创建的DEBUG_OBJECT对象,保存到我们驱动的全局变量:
  1. PDEBUG_OBJECT g_DebugPort;
  2. g_DebugPort = ReferencedObject;
复制代码


这个时候我们已经拥有了DBGPort了,那麽剩下遵守这个规则:

JNZ的,就hook这个地方,把0x0EC设置为g_DebugPort让判断通过
需要DBGPort的地方,就把g_DebugPort给它。

给出一个典型的处理例子:
  
  1. __declspec(naked) VOID NewDbgkMapViewOfSection()
  2.   {
  3.           __asm
  4.           {
  5.                           //如果不是游戏进程,则直接返回
  6.                           cmp ecx,eprocess_gameprocess
  7.                           jnz _ret
  8.   
  9.                           //如果游戏进程为0,也直接返回
  10.                           cmp eprocess_gameprocess,0
  11.                           jz _ret
  12.   
  13.                           //debugport为0,也要返回了
  14.                           cmp g_DebugPort,0
  15.                           jz _ret
  16.   
  17.                           /*
  18.                           8408f379 3999ec000000    cmp     dword ptr [ecx+0ECh],ebx
  19.                           8408f37f 0f84fd000000    je      nt!DbgkMapViewOfSection+0x144 (8408f482)
  20.                           */
  21.                           push eax
  22.                           mov eax,g_DebugPort
  23.                           mov dword ptr[ecx+0ECh],eax //修改,让ec偏移有值绕过判断
  24.                           pop eax
  25.                           _ret:
  26.                           jmp [DbgkMapViewOfSectionHookZone]
  27.           }
  28.   }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表