挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运寻找会做《单机》游戏修改器的开发作者长期合作,价格不是问题!联系QQ:1874088565
IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██.
.. .
查看: 17314|回复: 46
打印 上一主题 下一主题

[讨论交流] 过TP保护与解除游戏驱动保护_可以借鉴

[复制链接]
3正式会员
140/300

140

积分

44

主题

12

听众
已帮网友解决0 个问题
好评
0
贡献
96
海币
4505
交易币
0
跳转到指定楼层
楼主
发表于 2015-3-25 00:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑



过TP保护与解除游戏驱动保护_可以借鉴

TP 是国内腾讯游戏一款比较流行的驱动级保护程序.
负责保护腾讯每款游戏不被修改破坏,
   
也许大家也是研究腾讯游戏的爱好者,对腾讯的游戏都有过这样的体会  例如OD与CE无法进行如以下操作:
无法附加进程,
无法打开进程,
游戏进程被隐藏无法在工具中查看到,
内存无法读取代码  
内存修改后游戏掉线   
无法双机进行调试  
出现SX非法模块提示 `
其实以上说的这么多限制 都是因为TP保护造成的.其实这些东西研究了很久后,发现其实就是黑色老大常说的APIHOOK这方面. 7%32E1F)%  
例如XNF的TP保护就是HOOK了以下几个API函数来禁止上面刚才说的那些: 
NtOpenThread    //这是TP防止调试器在它体内创建线程   
NtOpenProcess   //这是TP防止OD等在进程列表看到游戏进程
KiAttachProcess   //这是TP防止其他软件附加它  
NtReadVirtualMemory  //这是TP防止别人读取它的内存  
NtWriteVirtualMemory  //这是TP防止别人在它的内存里面乱写乱画
KDCOM.dll:KdReceivePacket  //这是TP这两个是COM串口的接受和发送数据
KDCOM.dll:KdSendPacket      //这是TP主要用来方式别人双机调试,TP使用了KdDisableDebugger来禁用双机调试.  
TP通过将以上这几个API进行HOOK后 来保护游戏, 看过独立团第四版本易语言 教程的人 应该知道 以上的那几个API函数 开头是 Nt 的吧
Nt开头的是ntdll.dll库中的函数,也正是黑色衬衣老大在第四版本易语言 教程中有一篇课程是讲 SSDTHOOK与恢复这方面的. 
那么TP保护它比较变态,并对debugport进行了疯狂的清零操作甚至还包括EPROCESS+70\+74\+78等几处位置处理的手段通常都是向64端口写入FE导致计算机被重启。
下面我简单看说下以上关键的几个APIHOOK:
1.KiAttachProcess 函数   
2.NtReadVirtualMemory 内存函数
3.NtWriteVirtualMemory 内存函数
4.NtOpenThread 线程函数   
5.NtOpenProcess 进程函数   
那么前3个函数是可以直接SSDT恢复的 第四版本易语言 教程老大讲了如何恢复的 不明白的可以自己去看教程。 
第4个函数是有监视,如果直接恢复的话电脑会即刻重启.(TP蛮变态)  
第5个函数和ring3有驱动通信,直接恢复这个函数的话  游戏会在1分钟内弹出SX非法模块提示.
   
既然我们现在知道了TP保护的保护特点和这几个API分析后的结果.   
接下来就是要做出相应的解除TP保护(也就是这些APIHOOK)
下面我在梳理一下头绪给出相应的解决方案   
1.首先直接恢复 第1、2、3处的SSDT表中的HOOK  
2.绕过4、5处的HOOK 不采用直接恢复   
3.将TP保护程序中的debugport清零的内核线程干掉 停止该线程继续运行. 
4.恢复硬件断点 
但是要有一个先后的逻辑顺序   
因为内核有一个线程负责监视几个地方,必须要先干掉它。
但是这个内容我写在了处理debugport清零的一起,也就是第3步。所以大家在照搬源码的时候注意代码执行次序。
下面我们就开始写解除TP保护的代码,因为本人喜欢C++ 所以是c++编写,如果是使用易语言的话 就自己翻译过来吧
先从简单的工作讲起,恢复1、2、3处的HOOK 
KiAttachProcess函数的处理的代码:


  1. /////////////////////////////////////////////////////////////////////   
  2. 02.//  名称:  Nakd_KiAttachProcess   
  3. 03.//  功能:  My_RecoveryHook_KiAttachProcess的中继函数   
  4. 04.//  参数:     
  5. 05.//  返回:     
  6. 06.//////////////////////////////////////////////////////////////////////   
  7. 07.static NAKED VOID  Nakd_KiAttachProcess()   
  8. 08.{   
  9. 09.  __asm   
  10. 10.  {   
  11. 11.    mov     edi,edi   
  12. 12.    push    ebp   
  13. 13.    mov     ebp,esp   
  14. 14.    push    ebx   
  15. 15.    push    esi   
  16. 16.    mov    eax,KiAttachProcessAddress  //注意这个是全局变量 BYTE*   
  17. 17.    add    eax,7   
  18. 18.    jmp    eax   
  19. 19.  }   
  20. 20.}   
  21. 21.//////////////////////////////////////////////////////////////////////   
  22. 22.//  名称:  RecoveryHook_KiAttachProcess   
  23. 23.//  功能:  解除游戏保护对_KiAttachProcess函数的HOOK(XNF)   
  24. 24.//  参数:     
  25. 25.//  返回:  状态   
  26. 26.//////////////////////////////////////////////////////////////////////   
  27. 27.NTSTATUS My_RecoveryHook_KiAttachProcess()   
  28. 28.{   
  29. 29.  BYTE    *KeAttachProcessAddress = NULL;  //KeAttachProcess函数地址   
  30. 30.  BYTE    *p;   
  31. 31.  BYTE    MovEaxAddress[5]  = {0xB8,0,0,0,0};  //   
  32. 32.  BYTE    JmpEax[2]      = {0xff,0xe0};   
  33. 33.  KIRQL    Irql;   
  34. 34.  //特征码   
  35. 35.  BYTE  Signature1 = 0x56,  //p-1   
  36. 36.      Signature2 = 0x57,  //p-2   
  37. 37.      Signature3 = 0x5F,  //p-3   
  38. 38.      Signature4 = 0x5E,  //p+5   
  39. 39.      Signature5 = 0xE8;  //p第一个字节  
  40. 40.  //获得KeAttachProcess地址,然后通过特征码找到   
  41. 41.  //KiAttachProcess的地址   
  42. 42.  KeAttachProcessAddress = (BYTE*)MyGetFunAddress(L"KeAttachProcess");   
  43. 43.  if (KeAttachProcessAddress == NULL)   
  44. 44.  {   
  45. 45.    KdPrint(("KeAttachProcess地址获取失败\n"));   
  46. 46.    return  FAILED_TO_OBTAIN_FUNCTION_ADDRESSES;   
  47. 47.  }   
  48. 48.  //将p指向KeAttachProcess函数开始处   
  49. 49.  p = KeAttachProcessAddress;   
  50. 50.  while (1)   
  51. 51.  {   
  52. 52.    if ((*(p-1) == Signature1) &&   
  53. 53.      (*(p-2) == Signature2) &&   
  54. 54.      (*(p+5) == Signature3) &&   
  55. 55.      (*(p+6) == Signature4) &&   
  56. 56.      (*p    == Signature5))   
  57. 57.    {   
  58. 58.      //定位成功后取地址   
  59. 59.      KiAttachProcessAddress = *(PULONG)(p+1)+(ULONG)(p+5);   
  60. 60.      break;   
  61. 61.    }  
  62. 62.    //推动指针   
  63. 63.    p++;   
  64. 64.  }  
  65. 65.  //计算中继函数地址   
  66. 66.  *(ULONG *)(MovEaxAddress+1)=(ULONG)Nakd_KiAttachProcess;  
  67. 67.  WPOFF();  //清除CR0   
  68. 68.  //提升IRQL中断级   
  69. 69.  Irql=KeRaiseIrqlToDpcLevel();   
  70. 70.  //写入   
  71. 71.  RtlCopyMemory(KiAttachProcessAddress,MovEaxAddress,5);   
  72. 72.  RtlCopyMemory(KiAttachProcessAddress+5,JmpEax,2);   
  73. 73.  //恢复Irql   
  74. 74.  KeLowerIrql(Irql);   
  75. 75.  WPON();    //恢复CR0  
  76. 76.  return  STATUS_SUCCESS;   
  77. 77.}  
复制代码


联系我时,请说是在 挂海论坛 上看到的,谢谢!

免费评分

参与人数 2海币 +2 贡献 +1 收起 理由
kaming + 1 + 1 支持开源~!感谢分享
2377944521 + 1 支持开源~!感谢分享



上一篇:发个最新3.1.7透视自瞄ACE源码!编好就能用
下一篇:子弹穿墙透视源码 真实可用
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

52

积分

29

主题

10

听众
已帮网友解决0 个问题
好评
0
贡献
23
海币
7083
交易币
0
沙发
发表于 2015-3-27 03:26:43 | 只看该作者
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
3正式会员
110/300

110

积分

37

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
73
海币
2203
交易币
0
板凳
发表于 2015-4-2 23:58:26 | 只看该作者
好帖必须得顶起
3正式会员
109/300

109

积分

61

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
48
海币
3026
交易币
0
地板
发表于 2015-5-27 13:49:16 | 只看该作者
非常感谢!这个真的很实用。

1

积分

0

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
2
交易币
0
5#
发表于 2015-7-15 20:44:37 | 只看该作者
打酱油的啦,飘过赚点海币而已。

0

积分

0

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
24
交易币
0
6#
发表于 2015-7-16 13:21:10 | 只看该作者
好帖必须得顶起

44

积分

7

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
32
海币
699
交易币
0

最佳新人热心会员宣传达人

7#
发表于 2015-7-16 21:18:33 | 只看该作者
朋友之间不要合作做生意,或者办公司。麻烦会接踵而来。你要减轻负担,减小风险,可以,找陌生人。
承接软件定制服务,QQ:201898793 官网:http://wzxin.com

7

积分

0

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
7
海币
15
交易币
0
8#
发表于 2015-7-30 09:29:46 | 只看该作者
三个字, 没看懂

16

积分

4

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
12
海币
17
交易币
0
9#
发表于 2015-7-31 17:59:22 | 只看该作者
打酱油的啦,飘过赚点海币而已。

13

积分

7

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
6
海币
309
交易币
0
10#
发表于 2015-7-31 20:58:25 | 只看该作者
楼主,你的高尚情.真的太让我感动~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-8 15:00 , Processed in 0.094060 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表