您的位置 首页 心得分享

非凡软件站。跳过dnf私服登录器

语言:简体中文 性质:国产软件 软件大小: MB

《冒险岛Online》是由韩国WIZET和NEXON制作开发的一款2D横版卷轴网络游戏,于2004年7月24日在中国大陆正式上线,由盛大网络负责运营。故事以被“黑暗力量”不断入侵,因而进入了“浑沌期”的世界为背景,勇士们组成了联盟,再次与“黑暗力量”展开激斗。该游戏设有五大职业体系和七大游戏阵营。曾在2009年和2010年,该游戏

推荐文章:《魔兽世界》经典怀旧服角色名称预约现已开启!

《魔兽世界》经典怀旧服角色名称预约现已开启!拥有《魔兽世界》游戏时间的玩家的每个账号可在《魔兽世界》经典怀旧服于北京时间8月27日早晨6点全球开放之前创建至多三个游戏角色。

预约角色名称时,你也需要选择角色所在的服务器。在选择服务器时还需要谨记以下事项:

跳过dnf私服登录器

选择使用PvP服务器的玩家只能创建同一阵营的角色。例如你创建了一个联盟角色,则该服务器上后续创建的所有角色都只能为联盟角色。

当《魔兽世界》经典怀旧服上线后,你可以在任何服务器创建至多10个角色,在《魔兽世界》经典怀旧服的所有服务器中总计可创建最多50个角色。该角色数量不计入《魔兽世界:争霸艾泽拉斯》服务器上创建角色的数量限制。

《魔兽世界》经典怀旧服Beta测试或压力测试中创建的角色将无法在正式版的《魔兽世界》经典怀旧服中使用。

要创建角色并体验《魔兽世界》经典怀旧服,你需要先下载并安装客户端。

注册/找回账号

《魔兽世界》经典怀旧服是一场全新的冒险,若你还没有注册账号,或记不起旧的账号,都可以点击这里创建暴雪游戏通行证。

如果你遗忘了自己的账号名或密码,关注【暴雪游戏服务中心】微信公众号自助找回,并查看找回账号专题。

安装指南

下载暴雪战网桌面应用,并使用暴雪游戏通行证登录。在左侧菜单中选择《魔兽世界》。 在版本菜单中选择“魔兽世界(经典怀旧服)”。点击安装按钮。 选择安装位置后,点击开始安装。 安装过程中,进度条会显示安装进度以及什么时候可以开始游玩游戏。 安装完成之后,点击进入游戏按钮开始游玩《魔兽世界》经典怀旧服。

你需要选择服务器,再选择创建新角色。你可以选择角色的阵营、职业和种族,自定义角色的外观并为角色取名。如果你已经创建了三个角色,但又改变了想法,就需要删除一个角色。请注意,角色被删除后,其角色名称将立即变为可用状态。

在完成游戏计划前,我们建议你呼朋唤友,共同选择作为新家的服务器。如果你希望和老友以及公会的伙伴重逢,一定要查看我们的怀旧服专页。

跳过dnf私服登录器

国服经典怀旧服服务器名称及类型

第一大区

名称 类型 奥罗 PVP 沙尔图拉 PVP 寒脊山小径 PvE 碧玉矿洞 PvE 辛迪加 RP-PVP 哈霍兰 PVP

第五大区

名称 类型 帕奇维克 PvP 维希度斯 PvP 匕首岭 PvE 木喉要塞 RP 布鲁 PvP 范克瑞斯 PvP

当你创建新角色后,你只需要与战友们协调好时间,准备征服即将到来的《魔兽世界》!8月27日早上6点,我们在艾泽拉斯不见不散!

推荐文章:过 DNF TP 驱动保护(二)

文章目录:

01. 博文简介:

02. 环境及工具准备:

03. 分析 TP 所做的保护:

04. 干掉 NtOpenProcess 中的 Deep InLine Hook:

05. 干掉 NtOpenThread 中的 Deep InLine Hook:

跳过dnf私服登录器

06. 干掉 NtReadVirtualMemory 中的 InLine Hook:

07. 干掉 NtWriteVirtualMemory 中的 InLine Hook:

08. 干掉 KiAttachProcess 的 InLine Hook:

09. 干掉 NtGetContextThread 中的 InLine Hook:

10. 干掉 NtSetContextThread 中的 InLine Hook:

11. 干掉 DbgkpQueueMessage 中的 InLine Hook:

12. 干掉 DbgkpSetProcessDebugObject 中的 InLine Hook:

13. 干掉 Debug 清零:

共四篇,本篇为第二篇。

06. 干掉 NtReadVirtualMemory 中的 InLine Hook:

前面已经干掉了 TP 对 NtOpenProcess 以及 TP 对 NtOpenThread 所做的 Hook,

这样的话,我们已经可以使用 OD 或者 CE 看到 DNF 的游戏进程了,

跳过dnf私服登录器

弄过一些游戏方面内容的朋友应该都是知道 CE 的,这东东是开源的,不过是基于 Delphi 的,

工具做得很不错,可以通过 CE 来修改一些游戏进程的内存数据,比如可以修改一些简单的游戏的血值啊之类的,

但是,此时我们可以用 CE 来扫描一下 DNF 游戏进程的内存,你会发现根本扫描不到任何数据,

其实原因也很简单,TP 对 NtReadVirtualMemory 进行了浅层的 InLine Hook,

从而可以达到防止其他进程读取 DNF 游戏进程内存的目的,

跳过dnf私服登录器

而 CE 的话,在 Ring3 下是通过 ReadProcessMemory 来读取游戏内存的,

而 ReadProcessMemory 进入 Ring0 后又是调用的 NtReadVirtualMemory,

由于 NtReadVirtualMemory 被 TP 干掉了,所以自然用 CE 是扫描不出任何东西的,

要干掉 TP 对 NtReadVirtualMemory 所作的浅层 InLine Hook 其实是比较简单的,

因为 TP 并没有对 NtReadVirtualMemory 做检测,所以可以直接用 SSDT 来对抗掉浅层的 InLine Hook 就 OK。

至于原理的话,很简单,直接用 SSDT Hook 替换掉系统服务 NtReadVirtualMemory,

然后在 SSDTHookNtReadVirtualMemory 这个我们自己写的系统服务中判断,

如果是 DNF 进程的话,直接调用原来的 SSDT 系统服务就好,如果不是 DNF 进程的话,

我就跳过 TP 对 NtReadVirtualMemory 所做的 InLine Hook,也就是跳过前面

跳过dnf私服登录器

7 个字节就 OK 了。

对于这种干掉 InLine Hook 的原理,堕落天才的文章讲的最清楚了,我这里就不再班门弄斧了。

(继续为堕落天才打广告)

对于用

跳过dnf私服登录器

SSDT Hook 干掉浅层的 InLine Hook 可以参考看雪上堕落天才的文章:

文章名称:《SSDT

跳过dnf私服登录器

Hook 的妙用 – 对抗 Ring0 InLine Hook》

文章地址:

有的童鞋可能会问,咱是如何知道 NtReadVirtualMemory 被 TP 干掉了呢 ?

很简单,还是采用前面的做法,用 Kernel Detective 就可以看到了,具体可以看下面的截图:

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

《进程隐藏与进程保护(SSDT Hook 实现)》系列,共三篇。

下面先贴出安装 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(( “Pass TP – NtReadVirtualMemory Installed.” )); 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 内存了。

07. 干掉 NtWriteVirtualMemory 中的 InLine Hook:

上面又干掉了 TP 对 NtReadVirtualMemory 的 InLine Hook 了,从而实现了 CE 读取 DNF 进程的内存。

但是你可以试着用 CE 修改 DNF 进程的内存,你很快就会发现,虽然可以扫描内存,但是并不可以读取内存,

跳过dnf私服登录器

而后你也肯定能够想到,既然有防止读取内存,那肯定也有防止写入内存,

而后你又自然会找到 NtWriteVirtualMemory 上来,等你找到 NtWriteVirtualMemory

后,

你又基本能够确定,搞定这个 API 和搞定 NtReadVirtualMemory 应该是差不多的,

因为这两个 API 就是一对啊,一个读,一个写,所以 TP 肯定也是采用相同的做法来处理这两个 API,

当然,你上面的猜想都是正确的,所以咱还是用 SSDT 来干掉 TP 对 NtWriteVirtualMemory 所做的 InLine。

代码和上面的 NtReadVirtualMemory 差不多,这里也还是贴出来一下吧,俺先放两幅截图,然后再贴代码出来:

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

热门文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注