云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 过DNF TP 驱动保护2

过DNF TP 驱动保护2

  • 62 次阅读
  • 3 次下载
  • 2025/5/24 13:37:40

06、 干掉 NtReadVirtualMemory 中的 InLine Hook:

前面已经干掉了 TP 对 NtOpenProcess 以及 TP 对 NtOpenThread 所做的 Hook,这样的话,我们已经可以使用 OD 或者 CE 看到 DNF 的游戏进程了,弄过一些游戏方面内容的朋友应该都是知道 CE 的,这东西是开源的,不过是基于 Delphi 的,工具做得很不错,可以通过 CE 来修改一些游戏进程的内存数据,比如可以修改一些简单的游戏的血值啊之类的,但是,此时我们可以用 CE 来扫描一下 DNF 游戏进程的内存,你会发现根本扫描不到任何数据,其实原因也很简单,TP 对 NtReadVirtualMemory 进行了浅层的 InLine Hook,从而可以达到防止其他进程读取 DNF 游戏进程内存的目的,而 CE 的话,在 Ring3 下是通过 ReadProcessMemory 来读取游戏内存的,而 ReadProcessMemory 进入 Ring0 后又是调用的 NtReadVirtualMemory,由于 NtReadVirtualMemory 被 TP 干掉了,所以自然用 CE 是扫描不出任何东西的,要干掉 TP 对 NtReadVirtualMemory 所作的浅层 InLine Hook 其实是比较简单的,因为TP 并没有对 NtReadVirtualMemory 做检测,所以可以直接用 SSDT 来对抗掉浅层的 InLine Hook 就 OK。

至于原理的话,很简单,直接用 SSDT Hook 替换掉系统服务 NtReadVirtualMemory, 然后在 SSDT Hook NtReadVirtualMemory 这个我们自己写的系统服务中判断,如果是 DNF 进程的话,直接调用原来的 SSDT 系统服务就好,如果不是 DNF 进程的话,我就跳过 TP 对 NtReadVirtualMemory 所做的 InLine Hook,也就是跳过前面 7 个字节就 OK 了。 对于这种干掉 InLine Hook 的原理,堕落天才的文章讲的最清楚了,我这里就不再班门弄斧了。对于用 SSDT Hook 干掉浅层的 InLine Hook 可以参考文章名称:《SSDT Hook 的妙用 - 对抗 Ring0 InLine Hook》。有的初学者可能问,咱是如何知道 NtReadVirtualMemory 被 TP 干掉了呢 ?很简单,还是采用前面的做法,用 Kernel Detective 就可以看到了,具体可以看下面的截图:

至于如何安装 SSDT Hook 或者 SSDT Hook 是啥玩意来着的话,大家有兴趣的可以参考我的下面博文系列:

《进程隐藏与进程保护(SSDT Hook 实现)》系列,共三篇。 http://www.cnblogs.com/BoyXiao/archive/2011/09/03/2164574.html http://www.cnblogs.com/BoyXiao/archive/2011/09/04/2166596.html

http://www.cnblogs.com/BoyXiao/archive/2011/09/05/2168115.html

下面先贴出安装 SSDT 钩子的代码,该代码用来干掉 TP 对 NtReadVirtualMemory 的 InLine Hook:

1: /*****************************************************************/

2: /* 安装钩子从而过掉 TP 保护所 Hook 的 NtReadVirtualMemory - 让 TP 失效 */ 3: /* 保存 NtReadVirtualMemory第 4,5,6,7 个字节(就是一个 ULONG 跳转地址) */ 4: /* 因为这几个字节在不同的 XP 上会改变,所以在 SSDT Hook 之前保存下来 */ 5: /* 从而避免在此处进行硬编码

6: /*********************************************************************/ 7: VOID InstallPassTPNtReadVirtualMemory() 8: {

9: if(g_SSDTHookNtReadVirtualMemory > 0) 10: {

11: /* 获得 NtReadVirtualMemory 的地址 */ 12: ULONG uNtReadVirtualMemoryAddr =

oldSysServiceAddr[g_SSDTHookNtReadVirtualMemory];

13:

14: /* 如果是 DNF 进程,则跳到 NtReadVirtualMemory 执行,即不处理,从而让 DNF InLine Hook 生效 */

15: uTPHookedNtReadVirtualMemoryJmpAddr = uNtReadVirtualMemoryAddr; 16: /* 如果不是 DNF 进程,则跳过 TP 的 InLine Hook,从而使 TP 失效 */ 17: uMyHookedNtReadVirtualMemoryJmpAddr = uNtReadVirtualMemoryAddr + 7;

18: /* 保存下未 Hook 之前的 NtReadVirtualMemory 的第 4,5,6,7 个字节 */ 19: uNtReadVirtualMemoryAddr_3 = *((ULONG *)(uNtReadVirtualMemoryAddr + 3));

20:

21: InstallSysServiceHookByIndex(g_SSDTHookNtReadVirtualMemory, SSDTHookNtReadVirtualMemory);

22:

23: KdPrint((\ 24: } 25: }

下面再给出 SSDT Hook 的中继 API 的实现代码: 1:

/************************************************************************/ 2: /* 自定义的 NtReadVirtualMemory,用来实现 SSDT Hook Kernel API 3:

/************************************************************************/ 4: NTSYSHOOKAPI VOID SSDTHookNtReadVirtualMemory() 5: {

6: /* 开始过滤 */

7: if(ValidateCurrentProcessIsDNF() == TRUE) 8: {

9: __asm 10: {

11: /* 如果是 DNF 进程调用的话,则调用已经被 TP Hook 的 NtReadVirtualMemory */

12: jmp uTPHookedNtReadVirtualMemoryJmpAddr 13: } 14: } 15:

16: __asm 17: {

18: /* 已经做了针对硬编码的处理

19: 如果不是 DNF 进程调用的话,则跳过 TP Hook 的 NtReadVirtualMemory */

20: push 0x1C

21: push uNtReadVirtualMemoryAddr_3

22: jmp uMyHookedNtReadVirtualMemoryJmpAddr 23: }

24: }

好,到这里就已经干掉了 TP 对 NtReadVirtualMemory 所做的 InLine Hook了,

对此最直白的效果就是用 CE 打开 DNF 游戏进程进行内存扫描,你会发现,On Year,可以正常扫描到 DNF 内存了。

搜索更多关于: 过DNF TP 驱动保护2 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

06、 干掉 NtReadVirtualMemory 中的 InLine Hook: 前面已经干掉了 TP 对 NtOpenProcess 以及 TP 对 NtOpenThread 所做的 Hook,这样的话,我们已经可以使用 OD 或者 CE 看到 DNF 的游戏进程了,弄过一些游戏方面内容的朋友应该都是知道 CE 的,这东西是开源的,不过是基于 Delphi 的,工具做得很不错,可以通过 CE 来修改一些游戏进程的内存数据,比如可以修改一些简单的游戏的血值啊之类的,但是,此时我们可以用 CE 来扫描一下 DNF 游戏进程的内存,你会发现根本扫描不到任何数据,其实原因也很简单,TP 对 NtReadVirtualMemory 进行了浅层的 InLine Hook,从而可以达到防止其他进程读取 DNF 游戏进程内存的目的,而 CE 的话,在 Ri

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com