本文来自http://blog.csdn.net/lijun84 ,引用必须注明出处!
本文仅供个人学习研究之用,不得用于任何商业及非法目的,基于此产生的法律责任本人不承担连带责任之类的。
当 我写这篇 Blog 时,已经决定告别这款玩了 5 年的游戏。我将尽量详细深入的揭示从分析游戏到如何实现一款可用的网游外挂程序。
背景:
我从小学就爱玩游戏。从 FC 玩到 SFC 到后来的 PS2 和 N64 。 01 年迷恋上了传奇,后来自己也写了一些辅助挂和后期的变态挂(那时技术不是很纯熟,刚开始做软件开发)。在玩了无数款网游后,对大多数网游都很失望,难以维系我游戏的热情。我一直对三国系列游戏情有独钟,那是 06 年的一天,我无意中发现了一款 2D 的三国游戏(那时叫乱世三国),这游戏画面不算酷, 45 度角 2D 表现,上手比较简单,后来的体验使我觉得它是一个美的系统,没有太多冗余,平衡性和可玩性也达到对称。
现在看来才知道。原来上面都是老玩家。 80% 都是玩了至少 3 年以上的。有个游戏玩家很调侃的说:“我玩它时孩子还没出生,现在孩子都快 4 岁了,每次看到就叫爸爸又在三国了。”其实这款游戏的平均年龄估计在 28 岁以上, 30 岁以上也应该大有人在。它的人文气氛是我后期慢慢感觉到的。
08 年春节前发布了春节期间双倍公告,可我春节很忙根本没空上游戏,那个郁闷啊心里不是滋味额。我终于做了个一直想做没做的决定(因为知道做外挂很烦,我很懒),写个可以自动打怪喝药并且放技能的外挂(我那时工作是做杀毒软件和防火墙,毕竟也做了 6 年软件,技术上已经很纯熟了)。废话不多说了,转正题,我们开始分析。
分析游戏:
其实按键精灵方式的挂我一直没考虑过,因为我觉得它性能有问题,并且框架并不好无法实现复杂的需求。我一开始就考虑做脱机挂(我当然知道分析的代价很高)。
既然决定写脱机挂当然要从登录开始分析,分析的第一步就是抓包,我选的工具是 IRIS ,先打开任务管理器看看游戏的进程 ID, 然后打开命令行用 win 自带的 netstat ip –ao 看下它开了哪些端口, OK ,打开游戏开始,设置好 IRIS 过滤器开始抓包,登陆选择角色,离开停止抓包,保存报文,靠,居然帐号和密码都是明文。。。(勾起了我盗号的兴趣 .. 没多想,继续分析),发现登陆部分比较简单。先和游戏服务器建立连接,再用 HTTP Get 请求将帐号和密码发到帐号服务器做验证,返回成功标志。就可以开始和游戏服务器通讯了。
好了,我们来分析下游戏创建角色和进入游戏加载角色信息吧。晕。抓下来后对应一些数值(血量等信息)只分析出 10% 不到的角色初始量。。。,郁闷了。看来必须找到一种更好方式,又初步分析下游戏的资源和二进制脚本文件,没啥有价值的发现。算了,用黑客常用的绝招 - 暴破法吧。
这里介绍下,游戏分析的暴破法和 Crack 中用的方法不同,游戏分析暴破是用截获的报文进行探测性修改并对客户端发包,观察客户端里事物的变化从而猜测报文字段的意义。说白了就是把客户端当成服务器,对其发包,以恢复它在之前游戏中运行的画面状态。后期很多分析都用到这种技巧。因为只有这种技巧可以快速有效的破解 80% 以上的游戏报文。以至于我如果想的话都可以写它的 SF 了。
分析时需要注意的:
1,