首页
论坛
专栏
课程

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

2010-9-15 15:36 15046

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

2010-9-15 15:36
15046
如果一款程序,在动手之前,就能知道个大概,调用了哪些关键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坐标运算,服务器也不可能实时验证。
     你能从逆向过程中看到程序的先天不足,和他的精妙之处,真是非常的有意思。
     能最广的了解各方面知识的基本原理,对逆向是大有益处。

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最新回复 (23)
zzxxaa 2010-9-15 16:29
2
0
瞧一瞧嘿嘿
daienming 2010-9-15 23:04
3
0
很多事就是这样,说说很简单,实际做起来问题就多了~
sorosyun 2010-9-16 10:44
4
0
首先需要解决的是
1。 破三大保护和各家公司的山寨保护
2。 如何调试被VM了的关键代码
triones 6 2010-9-16 10:51
5
0
楼主总结的不错。只是现在的游戏,保护越来越强,越来越难逆向分析了。
tongyongmc 2010-9-16 12:22
6
0
只能说技术不断在提升,较量在深入,不过现在3d越来越漂亮,不大可能在图形引擎里搞VM,所以个人觉得漏洞也会越来越难补。

VM、破保护,不再是外挂的专项了,成了公共课了。
名叫教主 2010-9-16 14:46
7
0
VM + Protector = 公共必修课~
daienming 2010-9-16 16:10
8
0
VM这个必修课要拿到学分有点难度
isno 3 2010-9-16 16:24
9
0
保护相对好破,VM真的是难题
qiumuye 2 2010-9-17 11:01
10
0
写的很好,顶一下
lelfei 21 2010-9-17 22:28
11
0
这个很有启发性,学习!
denglifeng 1 2010-9-18 12:55
12
0
写得挺好的,学习了
Semnew 2010-9-20 13:45
13
0
理解了一点点..
lapcca 2010-9-20 14:30
14
0
受益匪浅!!!!
红葡萄酒 2010-9-21 23:43
15
0
看得出楼主是个高手!!!
aold 2010-9-21 23:58
16
0
学习了,谢谢楼主
SaikSy 2010-9-23 04:04
17
0
唉,VM的确成了必修课了
denglifeng 1 2010-9-23 11:28
18
0
现在VMP已是非常主流的保护方式了,无论是游戏、病毒或者外挂,都会考虑叫VMP,这便致使逆向工作难度加大了很多。搞逆向分析也越来越难了
liangxue 2 2010-9-23 16:01
19
0
VM~~~~
快雪时晴 4 2010-9-23 18:41
20
0
功力尚浅,还未曾涉足网游
youye 2010-9-24 14:05
21
0
正如那句话所说:好代码都是A出来的!
C-chang 2018-4-30 20:29
22
0
你好能否接一个游戏外挂制作的单?
森木森 2018-5-1 10:11
23
0
看得出很用心
人小下面大 2018-5-10 17:12
24
0
此楼层已删除
游客
登录 | 注册 方可回帖
返回