`
yidongkaifa
  • 浏览: 4147628 次
文章分类
社区版块
存档分类
最新评论

纵横三国外挂手记(1) 分析篇

 
阅读更多

本文来自http://blog.csdn.net/lijun84 ,引用必须注明出处!

本文仅供个人学习研究之用,不得用于任何商业及非法目的,基于此产生的法律责任本人不承担连带责任之类的。



我写这篇Blog时,已经决定告别这款玩了5年的游戏。我将尽量详细深入的揭示从分析游戏到如何实现一款可用的网游外挂程序。

背景:

我从小学就爱玩游戏。从FC玩到SFC到后来的PS2N6401年迷恋上了传奇,后来自己也写了一些辅助挂和后期的变态挂(那时技术不是很纯熟,刚开始做软件开发)。在玩了无数款网游后,对大多数网游都很失望,难以维系我游戏的热情。我一直对三国系列游戏情有独钟,那是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,如果服务器IP配置在文件中,自己改就OK,否则可能需要改客户端程序,不多说,用UE或者winhex就行。

2,对客户端发包可以用工具WPE写脚本可以,当然我一般自己写程序也很方便。

3,分析抓下来的报文时,最好先用正值表达式过滤成自己方便的查看的格式。在分析如技能或者买药等动作时最好多抓些此类报文并列放到一起看,这样通过列的对比可以看出复杂的规律来。

分析就写到这,贴出部分我分析的报文(比较敏感的报文此处就不贴出了,请见谅),后期谈外挂实现时会用到。

备注:

灰色=固定字节

蓝色=确定用途的字节

紫色=未确定用途的猜测字节

绿色=在一组值中循环复用的未确定字节

黑色=待分析的未确定字节

报文分析:

下一个内容报文大小应答:

DE 01 02 03大小(1b)00 00 00 00 00

移动请求:

022715 0032X(2b) Y(2b)3D

应答(L):(56b

16角色显示ID00X1 Y1 X2 Y2FE 00 09 01 49

00 00 00 E1 00 02 00 00是否骑马(0/1)(1b)(1b)00马鞍(1b)00马嘴头(1b)00马鬙(1b)

00马蹄(1b)00 00 00 00

备注:一个移动请求,可能需要多个应答描述。

吃东西请求:

022521包裹中的位置(1b)3400 00 00 003F

备注:位置从包裹左上第一格开始数,以0计数。

打怪请求:

022902 0138怪物ID(2b)02 003300

备注:此绿色部分从打1个怪到N个怪对于所有角色序列一样。

检东西请求:

022063 0131X Y3A

应答(20b)

4C角色显示ID00 0061 82 B400X Y X1 Y1000C00 E9X11 Y11C3 00

传送员请求:

020D03 011C传送员ID(2b)01 0017

应答:

8B 00返回码(1b)00返回码:(魏0-19,20-39,吴40-59)公共地图的同一传送员,国家不同,返回码也不同,但同国家同传送员一定相同。所以可传送地可点击限制在客户端判定。

85 FE 30 00 00 00 00 00任务未完成,无法请求传送

传送请求:(10b)

1C20国代码(1b)0031菜单项(1b)0001003A

备注:菜单项从0开始数第N

应答:

867400A5 DE B30077057400SX(2b) SY(2b)角色类型码(1b)

0C77007400DX(2b) DY(2b)00(1b)00 00 00 00 00

00 00 00 000100 00 00 00

退出游戏请求:(10b)

031201 00FF00 00 00 0008(服务器检查开头03就够了)

刷怪报文:

怪物移动:20b

0C怪物ID(2b) X(2b) Y(2b) X1(2b) Y1(2b)(FE|9A)怪代码(1b)等级(1b)3C00(2b)00 00

怪物受攻击:(15b)

0F怪物ID(2b) X(2b) Y(2b)怪代码(1b)等级(1b)费血数(2b)剩余血量(2b)00 00

怪物攻击:(13b

0D怪物ID(2b) MX(2b) MY(2b) DX(2b) DY(2b)怪代码(1b)等级(1b)

怪物死亡角色加值:

0E怪物ID(2b) X(2b) Y(2b)怪代码(1b)等级(1b)最后一下费血数(2b)42 540020 E0 B3003D00经验值(8b)01 00 00 000A001000

掉钱:

DE XY 00 00 钱数(2b) 00 00 00 00 ID 00 00

怪物消失

11怪物ID(2b)

掉东西:

DE X Y 00 00钱数量(2b) 00 00 00 00

分享到:
评论

相关推荐

    匠人手记(全集)(共包括24篇)part1

    总的来说,《匠人手记(全集)(共包括24篇)part1》是一部深度和广度兼备的单片机学习资料,不仅适合初学者入门,也对有一定基础的工程师有着极高的参考价值。通过系统阅读和实践,读者可以建立起扎实的单片机理论基础...

    程序匠人手记网络版全篇

    《程序匠人手记网络版全篇》是一份详尽且深入的编程学习资源,它汇集了程序匠人在编程领域的丰富经验和深入理解。这份资料旨在为程序员提供一个全面的学习平台,帮助他们提升技能,理解编程背后的思维方式,以及如何...

    Oracle_DBA手记1-2-数据库诊断案例与性能优化实践.zip

    Oracle_DBA手记1-2-数据库诊断案例与性能优化实践.zip

    Oracle_DBA手记1-数据库诊断案例与性能优化实践.part2

    一共两卷,免费提供,请分别下载后再解压...Oracle_DBA手记1-数据库诊断案例与性能优化实践 另有免费下载资源: Oracle_DBA手记3-数据库性能优化与内部原理解析.pdf Oracle_DBA手记2-数据库诊断案例与内部恢复实践.pdf

    Oracle_DBA手记1-数据库诊断案例与性能优化实践.pdf

    Oracle_DBA手记1-数据库诊断案例与性能优化实践.pdf

    IT项目经理成长手记

    IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记

    匠人手记(全集)(共包括24篇)

    匠人手记:一个单片机工作者的实践与思考》是作者在从事单片机开发与应用的过程中,将实际经验教训和心得感悟加以总结、整理而成的工作手记。全书的风格以轻松诙谐的笔调为主。作者力图摆脱传统技术类书籍说教式的...

    zp1.6脱壳手记1

    【标题】:“zp1.6脱壳手记1”探讨了如何分析和解除软件保护机制,特别是针对IAT(Import Address Table)混淆、API模拟和API代码抽离的三种技术。 【描述】:该文主要介绍了三种修复方法,其中API模拟是通过在模拟...

    Oracle_DBA手记1_2_3完整版.part02

    高清 中文 完整版 Oracle_DBA手记第1部 第2部 第3部打包下载 Oracle DBA手记3:数据库性能优化与内部原理解析 289页 Oracle DBA手记2-数据库诊断案例与内部恢复实践 292页 Oracle DBA手记:数据库诊断案例与性能优化...

    1 基于NET 20的GIS开源项目SharpMap分析手记.doc

    1 基于NET 20的GIS开源项目SharpMap分析手记.doc

    Oracle.DBA手记1--数据库诊断案例与性能优化实践

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    IT项目经理成长手记PDF

    IT项目经理成长手记PDF,非常不错的资源

    APP营销实战手记合辑(鸟哥笔记)1

    在“审核篇”中,读者可以了解到Apple App Store的新审核政策和规则,如2017年1月生效的App Store安全新规定,以及如何有效应对App Store的严格审核流程。书中提到了苹果公司为开发者提供的审核加速通道,帮助开发者...

    oracle DBA 手记 1/3

    oracle DBA 手记 oracle DBA 手记 part 1 of 3

    Oracle_DBA手记1_2_3完整版.part03

    高清 中文 完整版 Oracle_DBA手记第1部 第2部 第3部打包下载 Oracle DBA手记3:数据库性能优化与内部原理解析 289页 Oracle DBA手记2-数据库诊断案例与内部恢复实践 292页 Oracle DBA手记:数据库诊断案例与性能优化...

    dm8_麒麟系统X86安装包,详细安装方式见安装文档(DM DBA手记之安装篇-达梦数据库-安装手册)

    DM DBA手记之安装篇-达梦数据库-安装手册-安装最佳实践v1.3.pdf https://download.csdn.net/download/u014772458/10976118?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~...

    Oracle_DBA手记1-数据库诊断案例与性能优化实践.part1

    Oracle_DBA手记1-数据库诊断案例与性能优化实践 Oracle_DBA手记1-数据库诊断案例与性能优化实践 Oracle_DBA手记1-数据库诊断案例与性能优化实践 Oracle_DBA手记1-数据库诊断案例与性能优化实践 另有免费下载资源: ...

    Python数据分析教程_NumPy使用手记

    资源名称:Python数据分析教程_NumPy使用手记内容简介:NumPy系统是Python的一种开源的数字扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以...

Global site tag (gtag.js) - Google Analytics