您查询的关键词是:flash网 页游戏 源码 
下面是原始网址 https://www.yuanmas.com/info/8kaGXp2Nym.html 在 2020-04-13 23:24:45 的快照。

如果想更新或删除快照,请点击快照删除了解更多。360搜索与该网页作者无关,不对其内容负责。

Flash 网页游戏的加密思路与实现手段 / 源码寺

Flash 网页游戏的加密思路与实现手段

希望通过本文章,来全面的阐述基于Flash网络游戏的加密安全方案,从思想,到技术,到实现手段的一个完整的、有效的全面介绍。

设计目的:

加密方案最强大的永远是人的大脑与逻辑,而非技术手段!

——自恋的张左峰

首先要说的是,这是一套方案,由各个环节来完成各自的使命,使其成为一套有点点复杂的加密方案,当初设计设套方案时,也参考了Flash独有的一些特性,希望这套方案可以完成如下使命:

1.客户端尽可能进行保护,防止泄露后第三方开私服

2.客户端进行二进制保护,防止进行静态反编译(硕思、ASV)等

3.客户端预埋暗桩,即时可以发现有外挂或第三方工具作祟

事先防御永远比事后再查效率高

——自恋的张左峰

4.防止脱机外挂出现

5.其他防护目的(下面都会具体说明)

这套东西,是我与王旭东(PowerBoy)同学合作完成,我负责设计、技术思路,他负责技术实现与具体算法,本套东西是2010年的研究成果,现在5年过去了,不知道Flash特性是否有更好玩的东西出现,也许可以做更多的东西。

———————————必火无敌分割线———————————

必备工具:Doswf 好朋友Laan开发,请自行百度搜索

功能说明:

体外环节:

我们是和Game2趣游进行独代合作,在这套方案的最外部,有G2来进行一些安全防护的实现,他们的目标是为了保护平台用户利益不受损失,具体的方案如下

1.登录时间戳:在Web平台,有具体的登录时间戳,有时间有效期验证,具体可以防止别人截获了http的字符串,用别人账号登录

2.http地址加密:具体使用了MD5串与Base64,防止进行明文穷举

3.前台挂ifream:这么做,是可以让浏览器的地址栏,只看到一个不变的地址,防小白用的

体外环节的安全保护,我们不做具体讨论,知道有这个东西即可!

OK,我们正式开始介绍

Flash环节:

首先,我们要把所有的东西都介绍一遍

Root.swf 这个是通过http来调用的最初始SWF,它是所有SWF的壳,或者理解为加载器

Entype.swf 这是一个通过GameLogin服务器端Socket传过来的一个SWF这里利用到了Flash的一个特性,Socket传输的SWF没有浏览器缓存实体增加了破解难度

gameMain.pbj 这是游戏的主文件,也是最核心的执行程序,Flasher看到这里是不是会说,哎,这不就是用Pixel Bender处理了一下吗?

其实并不是这样的,起名Pbj,就是为了迷惑你,让你简单的以为他是PB生成的,这样让你进入思维误区,让你顺着我的思路去研究,结果发现,这根本就不是一个正常的PB文件。

它其实是一个经过外部软件处理的特殊的SWF文件,我们有一个小工具配合这套方案,他的作用是,对gameMain.swf进行二进制的位移进行,二进制都位移了,你就算用ASV搞它,我相信只有ASV崩溃一条途径。。。。

好了,我们来梳理一下流程

1.通过本地工具,对FB编译好的GameMain.swf进行二进制位移,生成对应的PBJ文件

2.这个位移算法的恢复算法,放到了entype.swf里

3.现在开始加载网页,调用root.swf,得到了GameLoginServer的参数

4.root开始corssdomain,开始843

6.root使用参数链接GameLoginServer

7.认证完毕后,服务器通过Socket传给root一个entype.swf文件

8.root读取,并使用它恢复gamemain.pbj

9.gamemain.swf开始执行

10.正式开始游戏逻辑

这也是图上的中间那条线的流程,在这个过程中,还会有跟服务器校验的环节

工具的使用,使用Doswf,来对Root进行加密具体功能请看图中最左上角的图片

服务器环节:

1.服务器知道root的版本,与一些文件特征,这样防止被篡改或旧版的来连接服务器

2.服务器知道root的加载域,服务器有个白名单,非此域用户不允许链接

3.entype.swf有多个,对应不同的GameMain.PBJ,服务器根据他的条件来下发,扰乱破解思路

4.服务器所使用的校验的MD5串,取自http客户端某个文件资源的MD5值,防护脱机外挂

通讯协议环节:

通讯协议的加密非常重要,明文在外那太恐怖了,WPE就能搞定你

首先,我们使用最简单的对称算法,那些高级的Base64啥的就算了,服务器早崩了

1.协议变密文:我们通过客户端的entype.swf里的关于协议的 钥匙 进行对称算法的加密,我们是弱强度,算法变化多,服务器会根据特定的条件下发这些信息,来跟客户端通讯,具体可以看图中最下面的那个大块

简单说就是,你要付出体力,来把这几十个算法,一一进行破解,才能正常的和服务器通讯,其实没啥难度的啊,加减乘除,一个大学生一天能写出来100个。但是嘿嘿,我可以雇几个大学生来干这事,这就变成了从拼技术到拼资本阶段,这正是公司的强项,破解者累到吐血,你说他还会去破解你的东西么?

2.防止加速齿轮:这块要通过客户端和服务器的配合来完成,具体的就是绝对时间与帧频关系的比例,来计算出这家伙有没有加速,但是如果他用1.1倍速。。。我还真没办法,因为我也要预判网络堵塞的情况发生。

3.协议序列号:这事为了防止有人用WPE截获特定的封包,来进行反复发送的穷举实验,举个例子,破解者抓到了加密过的封包,当然,他肯定改不了,乱码吗。。。但是他可以反复发送进行逻辑漏洞的穷举实验,很多卡BUG(玩家利用漏洞获利的俗称)就是这么搞的

所以是很有必要进行这方面的防护,我们的做法是在网络层与服务器进行数据序号的对应,服务器下发给我的数据,应该是连续的,不可能230号封包,在序列号应该是100的时候发过来,这样客户端不予回应,同理,服务器收到客户端非连续的数据,也不予回应,这样,那种简答WPE的玩家就无计可施了。

暗桩环节:

暗桩的目的用于监控、预防、提早发现,千万别让破解者发现你的安装,所以一定要隐蔽,不要出现任何“惩罚”环节,比如发现了掉线啥的!对的,你是这次把他搞下线了,但是对方也警觉了!

1.检查是否是合法的客户端用户:我们这么实现的,在心跳协议中,我们会随机每间隔20-30分钟,会在一个心跳协议中,某一个位上,出现一个小标记,客户端,见到这个标记后,会回应这个协议,也是心跳协议上的小变化,这样做的目的在于,如果他不是合法客户端,他肯定不会注意这种细微的环节,如果连续3次,没有得到这个特殊的心跳协议,服务器会记录这个用户的详细数据(ID,行为等等)然后以重要事件来通知管理平台!

其实我建议,多来点这种检测,真要是有脱机外挂出现了,挺麻烦的

2.服务器的指纹:服务器上其实也有类似的设计,目的是为了防止服务器端泄露,如果在运营过程中,出现这种事情,我们可以第一时间知道(毕竟联运有这个风险,Liunx服务器只要在本地,怎么都能进入,对吧?Windows就更别提了)

当然,我们后续的做法更狠一些,服务器启动的时候,一些代码要从我的中心服务器下发,嘿嘿,被我列入黑名单的服务器ID,那就根本无法启动了。。。呵呵吧。。。所以泄露了,你也运行不了www.zgqz.cc

暗桩,一定要隐蔽,让人发现了,你就被动了!

未解决的问题:

这套方案中有一个比较尴尬的地方,也是C/S网络结构应用难以避免的地方,就是第一次跟服务器通讯的时候,我不知道你是否是合法的,不知道你的来源是否真实

因为只要是C/S结构,这个问题就可以进行各种的模拟和伪装,这也是我图中那个连接线中间索要表达的意思

就好像第一次服务器问你,你是合法的客户端么?你可以回答,我是,服务器会继续问你,那你的证据呢,客户端出示证据,但是这些所有的东西,只要搞清楚原理,我都可以模拟出来

甚至包括大名鼎鼎的Nprotect,也有这个问题,在05年,我们曾经实验过,在脱机外挂后台调用完整客户端用以应付,NP的客户端合法性检测,呵呵,这么搞谁也没辙,所以我一直不认为,纯技术能解决这些问题,最终还要落实到“成本”中。这块我会在另外一个文章具体讲一下我的想法和思路www.goodcity.cc

如果通过“成本”杠杆,让破解者知难而退

如果大家对这块有好的方案,请给我留言,或者发我邮件,告诉我,实在感谢!

总结:

这套方案最大的特色就是,简单、有效、耦合性强

简单有效就不说了,其实没啥技术含量,比起那些虚拟机、多进程监控、各种反Anti的手段,实在是小儿科,但是的确有些效果,诛神这么长时间,也没有出现重大的安全事故,我们至少防护住了90%的人,感谢剩下的10%的大牛们,没来折腾我们,实在感谢 :)

大家可能很奇怪,耦合性强不是不好吗,但是在加密这块,各个环节组成的整套方案,无疑会大大的增加破解难度,因为你无空子可钻,你需要把这套东西的所有环节都打通,都搞明白,才能得到破解者想要的效果,无疑大大的增加了破解的时间和难度www.top360.cc

但是它自身也有自身的问题,环节太多,人工出了错,超级麻烦。但是安全性和便利性本就是双刃剑,对吧?

其次,在未解决的环节中的确存在了一个困扰了我10年的疑问,第一次链接如何判断是真实用户,后续所有的校验,都无法解决这个问题,这可能就是C/S结构的特点,哈哈哈

最后,希望这个分享可以帮助大家拓展思路,对安全的投入是无形资产,安全就是保证我们的投资(你花了这么长时间做的游戏,就是你的心血,你的投资)www.harton.cc

但是也别为了安全而精力跑偏,因为世界上没有绝对的安全,防护住90%的人就是胜利,大牛年年有,唯有今年多!

好了,真的是最后了,希望大家的游戏产品都大卖,都财富自由!

像还继续战斗在游戏研发一线的同学们致敬,共勉!

PS。钱永远挣不完,身体是自己的,多锻炼,合理安排休息!

时间: 02-10

Flash 网页游戏的加密思路与实现手段的相关文章

张左峰的分享 网页游戏制作技术 加密的设计思路与手段

页游戏制作技术 加密的设计思路与手段 必备工具:Doswf 好朋友Laan开发,请自行百度搜索 今天太晚了,明天再更新内容...咔咔咔

页游戏

页游戏_百度百科http://baike.baidu.com/link?url=__mxqeSPiqAO_TGydqkd7M8BGmboUrei_rqfDzv59uOS9GxVe1UdbsClJgg2l5qCuFy4qzFWgaQo9GeZeaBpeiTo2npMjlMvFD6Wb-QNY8D1iT_phwtSVuq1RFOUAocv 页游 即 网页游戏 . 网页游戏又称Web游戏,无端网游,简称页游.是基于Web浏览器的网络在线多人互动游戏,无需下载客户端,只需打开IE网页,10秒钟即可进入

Unity网页游戏特点分析

Unity网页游戏是跑在浏览器的UnityWebPlayer插件中的,运行的模式是webplayer.unity3d+html 在嵌入UnityWebPlayer的网页中会调用UnityObject2的initPlugin函数,将webplayer.unity3d作为参数传入来初始化Unity网页游戏的运行环境 注:游戏dll及其他托管dll在构建Web版本时都会写入到webplayer.unity3d文件中 UnityObject2.js (其他链接1  其他链接2) 拥有检测 Unity W

AS3.0网页游戏优化一

有道无术,术尚可求,有术无道,止于术.神即道,道法自然,如来! 借用上面的一句话,来开启AS3.0网页优化的一些策略,在从事大约两年多的网页游戏行业,对于AS3.0性能优化,有一些自己的见解和想法,及此分享给大家,仅供抛砖引玉,鄙人拙见,愿给从事网页游戏的人以启迪. 我认为AS3.0的性能分两部分,第一部分是技术性优化,就是在理解flash 弹性跑道模型渲染原理和AVM本身一些垃圾回收原则等,对自己的程序进行一系列的性能优化.第二部分是游戏逻辑性优化.我只从事过2.5D arpg网页游戏的制作,

《C#网络编程高级篇之网页游戏辅助程序设计(扫描版)》

<C#网络编程高级篇之网页游戏辅助程序设计>通过编写C#网络编程语言中具有代表性的实例,向读者深入细致地讲解了如何利用C#语言进行网页游戏辅助程序设计.本书通过大量的代码引导读者一步步学习和掌握C#的网络应用编程的方法和网页游戏辅助程序的设计技术. <C#网络编程高级篇之网页游戏辅助程序设计>涉及的领域包括多线程编程技术.socket套接字编程.tcp协议编程.http协议编程.远程控制技术.木马技术.模拟键盘和鼠标技术.网页游戏辅助程序设计技术等. <C#网络编程高级篇之网

android Splashy Flash小游戏

今年刚开始学习android,不过是做修改源码,自己在寝室捎带学习了下做APP,由于是刚开始学习,这个游戏只注重了游戏的实现,实现了大概功能后,也没有实现游戏的细节,像分数图片的显示等,也没有注意代码的结构,一个字就是乱!!留待有缘人完善修改吧--- 代码下载地址:download.csdn.net/detail/a624731186/7594383 如果完善了的话,有空的话我邮箱发一封,[email protected] 下面是官方的游戏效果: 下面是我的游戏效果:资源图片是在网上下载的,有点

页游戏服务端-人物移动广播优化

[本文转自网络http://janeky.iteye.com/blog/1614175] 这段时间在处理服务端人物移动广播遇到了问题,记录一下. 1.问题 现在的页游都朝着客户端的方向靠齐了,大地图,千人同屏.因此,也给页游的服务端开发带来了不少的挑战.假设一个场景地图是8000*8000大小,同时有1000人在.1秒钟内,每个玩家移动一次.按照最原始的做法,就是给同一个场景的用户广播消息.简单计算一下广播量:1000*1000=1000000的广播量,有点恐怖. 2.方案 优化的目标肯定是减少

20个超赞的HTML5网页游戏设计欣赏

HTML5网页游戏 优秀网页设计 Flash多媒体应用可以用来构建线上游戏,但是随着HTML5 的到来,改变了线上游戏的构建方法.”HTML5 游戏设计”是近期设计师和开发者中最热门的话题. 小游戏终于可以尝试除了Flash以外的载体咯,迎接HTML5所带来的新世界,HTML5的好处是,可以无需插件. 本文收集了20个HTML5游戏,不妨试玩一下吧. Grav Suit 来自深空的恐惧,面对深邃的未知,陷入种种神秘的遗迹残骸.到底身处何境?无重力下无处不在的危险.你深吸了一口气,能保命的只有你的

arpg网页游戏特效播放(一)

页游戏中的特效,主要包括:场景特效,攻击特效和UI特效三种.场景特效是在地图层上播放的特效,攻击特效主要是技能触发的一些特效,UI特效是面板上的一些特效,还有一些在人物身上播放的特效,例如脚底光圈特效等.特效的播放方式有两种,一种是直接播放swf,二种是根据图片序列,直接绘画到Bitmap上,对于两种方式,我比较倾向于直接绘画到Bitmap上.一般我们我们处理程序的逻辑是,显示和逻辑分开.对于特效显示逻辑,就是特效的绘画逻辑,以及资源的整理方式,逻辑就是特效的播放位置和播放时机不一样而已.所以