以前分享过摩尔庄园、奥比岛等发包例子,后来官方更改了加密手段,这次分享个赛尔号的发送数据例子切勿用于非法用途,本贴只用于技术交流与学习赛尔号通信数据的逆向分析与还原(思路篇)0x01 前言flash游戏即将淘汰,被称为最强的as加密方式被应用于一些主流的页游,很多游戏都转战h5或者手游端。今天闲来没事,就上手一款童年游戏。"赛尔号",应该是全网首发吧0x02 准备工具FFDEC(强大的免费开源swf反编译工具) 、 浏览器 、在线Hex编辑0x03分析过程使用 浏览器加载游戏并 通过 开发者工具抓取到数据包可以发现一个dll.xml的配置文件此游戏的习惯将核心数据存放于==.swf==文件当中。此时直接将swf文件拖入FFDec会发现,读取失败。需要拖入Hex编辑器搞一下==CWS== 是标识码 具体可以参考 Swf文件头信息,前面则是一些无关紧要的数据。可以看到在.swf里对于swf文件的加载是这样处理的 (e:Event) : void { var info: = this.[0]; var : = new (); if(this.) { this..(new (),0,7);//相当于设置了位置 前面可以看出到,标识码前面有7个字节是无用的数据 gt;gt;this..=7 } this..();// if(this.) { .();//再进行Zlib解压处理 } this..close();//关闭字节流 //然后就加载 this..(,new (false,.)); }思路清晰,可以干代码,这里使用了易语言导出文件可以,再将其导入FFdec看看效果。
解压后,开始找与通讯的类。一般搜索.Socke即可==send(, ) #==发送数据包的函数 send(:uint, :Array) : uint { var loc3_:* = null; var loc4_:* = null; if(this.) { loc3_ = this.pack(this.,,); loc3_. = 0; loc4_ = .(loc3_);//这里就开始加密了 (loc4_);//整个数据丢给 flush();//这里就是发送数据出去了 this.(); .show("gt;gt;[" + this.ip + ":" + this.port.() + "][cmdID:" + + "]",(),"[data :" + this. + "]"); //这里可以清晰的看出 是数据包的命令码,为数据的整体 retur
评论(0)