暴雪和黑客的战争二:暴雪的第一击
暴雪在WOW开发的后期,终于能够腾出人手来升级持续了2年之久的D2X 1.09d。由于1.09d时期hacks泛滥,暴雪觉得有必要打击一下这种嚣张的气焰,于是加入了hacks检测机制,这就是在1.10时期经常提起的packet 64/65检测。
何谓packet?packet即网络数据包,D2中服务器端和客户端之间的交互是通过互相发送packet进行的。D2中的packet又分为out-of-game(进入游戏前)packet和in-game(游戏内)packet两种,这里提到的都是in-game packet。in-game packet的第一个字节为packet ID,指示该packet的含义,接着的是相应的(可变长)参数。比如ID 01代表walk命令,长度为5字节,ID后面跟两个16位参数,指示walk的目的坐标,因此它的格式为:01 [WORD x] [WORD y]。需要注意的是D2中不同patch版本的packet ID含义是不一样的,不能通用。1.10中的一个比较完整的in-game packet列表可以在这里找到:http://www.edgeofnowhere.cc/viewtopic.php?t=303771
跟hacks检测有关的是packet 64和65。packet 64长度是9字节,格式为:64 [DWORD address 1] [DWORD address 2],后面的两个DWORD是服务器端想检测的两个内存地址;packet 65长度为1字节(没有参数),检查4个最有可能被patch的地址。packet 64/65的检查结果经过简单的混淆处理(增加sniffer抓包分析的难度)后发送回服务器端,如果被检测地址里的指令或数据被改过,检测结果自然就和原先的不符,因此暴雪就知道你在用hack。这种检测方法就是所谓的memory probe,即内存探测法。那暴雪怎么知道应该检测哪些地址呢?hack的detour patch(旁路点)是固定的,像maphack和d2jsp这种著名的公开发行的hack,暴雪当然会拿来研究因此也会知道它们patch了哪些地方。至于那些自己开发自娱自乐的,暴雪是没法知道的,因此相对安全点儿。但是如果你的patch点正好和maphack、d2jsp这些相同,那还是有可能不幸中标。
以下为packet 64检测中的相关代码片断,其中eax和ecx分别为两个待检测的内存地址,检测结果分别存入局部变量var_result1和var_result2中随后发送回服务器端:
.text:XXXXF362 $CHECK_RESULT1: ; CODE XREF: CheckDetectionResult+87j
.text:XXXXF362 cmp eax, esi ; not zero
.text:XXXXF364 jz short $CLEAR_RESULT1 ; Jump if Zero (ZF=1)
.text:XXXXF366 mov [ebp+arg1], esi
.text:XXXXF369 mov eax, [eax]
.text:XXXXF36B mov [ebp+var_result1], eax
.text:XXXXF36E mov [ebp+arg1], -1
.text:XXXXF375 jmp short $CHECK_RESULT2 ; Jump
.text:XXXXF39B $CHECK_RESULT2: ; CODE XREF: CheckDetectionResult+A5j
.text:XXXXF39B ; CheckDetectionResult+C4j
.text:XXXXF39B cmp ecx, esi ; Compare Two Operands
.text:XXXXF39D jz short $CLEAR_RESULT2 ; Jump if Zero (ZF=1)
.text:XXXXF39F mov [ebp+arg1], 1
.text:XXXXF3A6 mov ecx, [ecx]
.text:XXXXF3A8 mov [ebp+var_result2], ecx
.text:XXXXF3AB mov [ebp+arg1], -1
.text:XXXXF3B2 jmp short $SEND_DETECT_RESULT ; Jump
packet 65的检测代码和packet 64类似,除了它检测的是几个固定地址。
packet 64/65的memory probe机制,结合前一篇介绍过的已有的version-checking.dll和extrawork.dll,就构成了暴雪在Diablo II 1.10 patch中采用的hacks检测机制。
下图显示了d2jsp 1.2.0中使用的部分旁路点(d2jsp 1.2.0用于Diablo II 1.11b,但意思是一样的)。
暴雪和黑客的战争二:暴雪的第一击相关推荐
- 暴雪和黑客的战争四:暴雪的杀手锏-The Warden
本来想写点儿别的东西.但是看来大家还是对外挂比较感兴趣,就接着再写写吧. 1.10时期的成功,使得一些黑客不免自我得意,Mousepad甚至扬言,暴雪应该请他来做hacks检测. 2005 年8月1号 ...
- 暴雪和黑客的战争三:黑客的反击
暴雪在1.10补丁中加入hack检测机制,在某种程度上直接导致了原本和谐的D2X游戏黑客社群的分裂.一部分出于对检测机制的顾虑,停止更 新自己的作品,如d2hackit:另一部分则把他们的hack具有 ...
- 美法院起诉黑客组织成员 为暴雪服务器攻击者
前一段时间暴雪服务器接连遭受DDoS袭击,造成玩家无法正常游戏,国服也偶尔受到影响.黑客组织Lizard Squad和PoodleCorp就是这些袭击事件的幕后黑手.今日,美国伊利诺伊州法院正式起诉马 ...
- 网易称暴雪离婚不离身;苹果发布 M2 Pro 和 M2 Max 芯片;滴滴出行 App 已重新上架安卓应用商店 | 极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews ...
- python.exe换电脑后无法正常运行_暴雪游戏无法启动,会有卡包吗?
一.事件发生 3月13号晚上八点,炉石直播间无数网友反映:暴雪游戏处于休眠中,无法加载游戏;小编赶忙打开战网,发现进入游戏后,果然出现了暴雪游戏Agent进入睡眠模式,正在尝试唤醒它的字样.小编逐一试 ...
- 暴雪服务器遭大规模DDoS攻击 相关分析后续出台
近日,PoodleCorp的黑客组织对暴雪公司以及英雄联盟游戏服务器进行了一系列大规模的分布式拒绝服务攻击(DDoS).DDoS攻击导致<守望先锋><风暴英雄><魔兽世界 ...
- 暴雪在洛杉矶建了自己的电竞馆,守望先锋锦标赛下个月就会在这里举行
游戏界老大哥之一的暴雪Blizzard,在洛杉矶建立了一个自己的电竞比赛馆,并计划于10月7号开放.暴雪总部就在洛杉矶,而这个场馆还是暴雪自己在美国的首个场馆.作为热门FPS游戏守望先锋和传奇MMO游 ...
- 谷歌地图推出、暴雪公司成立 | 历史上的今天
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2023 年 2 月 8 日,在 1999 年的今天,中国少年科学院成立.24 年前,来自北京.上海.江苏等地的 ...
- 艺术家与工匠的冲突,暴雪为何一直在错失机会
链接:http://www.tuicool.com/articles/BJVjQv 星际争霸和魔兽争霸重新定义了RTS,暗黑系列重新定义了ARPG,魔兽世界更是直接等同于MMORPG.97年的< ...
最新文章
- git使用教程问题列表
- VIPKID 张武锋:自研RTC的故事
- Hdu 3478 Catch
- 计算机打印机无法扫描,佳能MF4752打印机无法扫描文件怎么办?
- C#LeetCode刷题之#530-二叉搜索树的最小绝对差(Minimum Absolute Difference in BST)
- css3转换图形展示,CSS3的常见transformation图形变化用法小结
- 京东发布全球物流无人机研报:美国领先、非洲政策最开放,中国产业链全景最复杂...
- Linux 下获取 IP 和 MAC Adr 的方法
- 机器学习(6)——朴素贝叶斯(文本分类)
- 生活中运筹学的3个小案例_10个“乡村庭院”设计案例,生活在乡下,家家都有自己的小庭院...
- [Win11]解决PS/2标准键盘带感叹号,笔记本键盘无法使用。代码19:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个
- 索引越界异常Exception java.lang.IndexOutOfBoundsException
- tensorflow实现深度可分离卷积
- 有了这5个免费下载音乐的wangzhan,从此告别各种VIP
- js简单实现根据身份证号码识别性别年龄生日
- 服务器独享宽带和共享宽带有那些区别
- Vue实现待办事件列表
- 怎样写权利要求书(原创)
- CodeForces 786A Berzerk 博弈?BFS瞎搞
- nginx 初级总汇知识点
热门文章
- 安装YApi 接口管理平台
- Mac下Aria2加速各种网盘下载,你值得拥有!
- VC++ 中主线程等待子线程结束的方法
- 内蒙古电大计算机考试成绩查询成绩查询,2021年网络教育7月统考成绩查询时间及入口...
- DSP28335笔记 ———— 中断系统 之 外部中断
- javaweb_笔记1(系统架构;servlet分析,注册,生命周期;Servletconfig对象(四个方法)和Servletcontext对象;http协议,get,post)
- Redmi K20 Pro如何编译内核
- webpy快速入门 搭建python服务器
- python排列3彩票统计
- 苹果 Apple Beta 版软件计划 相关软件地址