首页
社区
课程
招聘
[原创]从游戏外挂的角度谈逆向工程
发表于: 2010-9-15 15:36 18129

[原创]从游戏外挂的角度谈逆向工程

2010-9-15 15:36
18129

如果一款程序,在动手之前,就能知道个大概,调用了哪些关键API,用户交互流程是怎样,有信心,逆向最多就只是困难,而不是不可及的事情了。
我只参与一款外挂的制作,但相比其他的外挂,更用心。不是找找漏洞,找个Call 就了事的,游戏地图,AI,游戏自身控制流程,才是有意思的。从OD的反汇编上有时能清楚的看到整个程序的流程。
     我这款游戏的流程或许是最简单不过的,按键消息->响应处理->协议填充->Send(),反过来Recv()->协议处理->功能调用。如此简单的流程,我想任何人都知道直接从Send,Recv 入手,一旦被加密的数据包被接收到,一般来说就是立即解密,所以加解密也能花点时间就出来了。一个规则的数据包,都是包大小+类型代码+实际数据,类型代码一般是有的,而客户端解析数据包又只是个switch,一个超长的函数中就包括了所有的功能调用,再根据功能解析数据的数据,那也只是时间问题。
     这是个非常简单的模型,你切入的时候可能不会像我说的这么容易,但所有游戏的输入输出无非都要通过send、recv。输入无非是键盘、鼠标,任何一方面都能成为切入点。
简单的模型下,用户输入与输出(send)在一个调用序列中,这种是最容易的。
      我说的这个模型很简单,似乎没什么技术含量,实际中,游戏客户端可能会加入超多内联函数,不用switch,采用call [eax*??]的形式,反正就是让你看着心烦,或许我们需要更好的技巧,以前我是硬着头皮啃下这些代码,现在头没那么晕乎了。
      这些反汇编代码都还是明文,只要有心都还啃的下去。
      有些程序加上虚拟机,光调试都成问题,反汇编更是不知所云。这也罢,水平不足,就另取蹊径。
      说道这里,看一下整个外挂,对于游戏的切入点。加解密,可由Send、Recv入手。功能调用,可由Recv、Send、或者键盘、鼠标相关调用入手。数据包中的协议功能。则由解密后的数据包追踪着手。
      地图方面,缺少dx9的相关知识,只能猜测,或许从地形高度图、碰撞检测着手。这些又和移动包相互关联。当然了用户点击移动->图形引擎处理->碰撞检测->发送数据包。流程一般不会变。能否追踪到自己需要的东西,就看个人能力了。
      最初,超长的反汇编代码,不知道哪里是关键所在,我就使用强制跳转(跳转 改jmp),NOP掉函数调用,用来查看关键代码。耐心是很重要的,基本上不费什么脑力。。。
      漏洞方面,一般是从逆向过程中发掘的,如果你觉得某个处理流程或者数据结构有可疑,它就很可能是个漏洞。比如你发现他的移动包都是每秒不超过4个,每个包之间不超过20的距离,如此精心构造的包,可能就是服务器害怕压力,将部分验证简单化。有些漏洞则是游戏很难避免的,比如CS中的透视能力。所有基于dx的游戏都应该存在,同时基于3D地图的Z坐标运算,服务器也不可能实时验证。
     你能从逆向过程中看到程序的先天不足,和他的精妙之处,真是非常的有意思。
     能最广的了解各方面知识的基本原理,对逆向是大有益处。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
瞧一瞧嘿嘿
2010-9-15 16:29
0
雪    币: 211
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
很多事就是这样,说说很简单,实际做起来问题就多了~
2010-9-15 23:04
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
首先需要解决的是
1。 破三大保护和各家公司的山寨保护
2。 如何调试被VM了的关键代码
2010-9-16 10:44
0
雪    币: 517
活跃值: (84)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
5
楼主总结的不错。只是现在的游戏,保护越来越强,越来越难逆向分析了。
2010-9-16 10:51
0
雪    币: 134
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
只能说技术不断在提升,较量在深入,不过现在3d越来越漂亮,不大可能在图形引擎里搞VM,所以个人觉得漏洞也会越来越难补。

VM、破保护,不再是外挂的专项了,成了公共课了。
2010-9-16 12:22
0
雪    币: 64
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
VM + Protector = 公共必修课~
2010-9-16 14:46
0
雪    币: 211
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
VM这个必修课要拿到学分有点难度
2010-9-16 16:10
0
雪    币: 358
活跃值: (63)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
保护相对好破,VM真的是难题
2010-9-16 16:24
0
雪    币: 535
活跃值: (109)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
写的很好,顶一下
2010-9-17 11:01
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
11
这个很有启发性,学习!
2010-9-17 22:28
0
雪    币: 189
活跃值: (16)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
写得挺好的,学习了
2010-9-18 12:55
0
雪    币: 660
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
理解了一点点..
2010-9-20 13:45
0
雪    币: 362
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
受益匪浅!!!!
2010-9-20 14:30
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
看得出楼主是个高手!!!
2010-9-21 23:43
0
雪    币: 106
活跃值: (63)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习了,谢谢楼主
2010-9-21 23:58
0
雪    币: 173
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
唉,VM的确成了必修课了
2010-9-23 04:04
0
雪    币: 189
活跃值: (16)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
现在VMP已是非常主流的保护方式了,无论是游戏、病毒或者外挂,都会考虑叫VMP,这便致使逆向工作难度加大了很多。搞逆向分析也越来越难了
2010-9-23 11:28
0
雪    币: 88
活跃值: (47)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
19
VM~~~~
2010-9-23 16:01
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
20
功力尚浅,还未曾涉足网游
2010-9-23 18:41
0
雪    币: 1594
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
正如那句话所说:好代码都是A出来的!
2010-9-24 14:05
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
你好能否接一个游戏外挂制作的单?
2018-4-30 20:29
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
看得出很用心
2018-5-1 10:11
0
游客
登录 | 注册 方可回帖
返回
//