Flash 加密和破解

关于Flash(swf),我们需要明确一点:

***Flash字节码的意义都是公开的 所以如果cracker真的有足够的耐心他最终还是可以破解掉你的Flash。我们能做的只是尽量提高Flash被破解的门槛让cracker破解它需要消耗的时间大于自己更新版本的间隔就好了。

一般而言,对于游戏,无非是为了防止cracker修改游戏数据,制作外挂,当然也有人为了破解游戏,提取素材,提取音频,提取音乐等等。

现在Flash页游已经走下坡了,没多少人关注了,而且这种加密方案也比较成熟了。但是,正因为Flash小游戏很多,这里边大量的素材资源,也许就是非常不错的资料来源。

先简单回顾一下怎么做游戏的加密,防止破解或外挂:

 1、关键数据加密

适用防范对象   使用内存修改工具妄图直接修改关键数据的初级cracker 原理   关键数据不使用明文保存 具体做法   对关键数据的存取使用AES或XOR等算法进行处理保证关键数据在内存中不以明文保存(做一个类用于存取,每次把数据取出后用临时变量做加密解密)

2、修改数据包

适用防范对象   使用Fiddler等各种工具篡改回包或使用假数据发包的初中级cracker 原理   加密数据包并在数据包里面加入防伪信息 具体做法   对数据包内容进行简单的AES或XOR加密并在其中加入类似TCP/IP协议的Sequence ID前后台共同对数据包进行校验。

3、Flash初级加密

适用防范对象   会用Flash破解工具破解之后尝试对Flash源码进行修改的中高级cracker 原理   提高使用工具破解Flash之后读懂源码并进行修改的门槛 具体做法   直接使用工具如DoSWF等对Flash的关键代码进行加密和混淆 4、Flash高级加密 适用防范对象   没有足够的时间和耐心的高级cracker 原理   使用各种恶心的技巧对自己的Flash关键内容进行保护 具体做法   (1)对关键代码进行混淆 ——提高破解后读懂代码的门槛   (2)将保有关键逻辑的main.swf以二进制形式嵌入到工程里在外层使用loader的loadBytes()方法进行读取并实例化 ——提高直接被抓包抓到关键SWF的门槛需要cracker解析文件二进制内容才能拿出来关键的swf   (3)加载main.swf之前检测关键类是否已经被定义过并且将main.swf加载到与loader.swf不同的ApplicationDomain ——防止cracker用preloader等方法事先定义关键类用来顶替main.swf中的同名关键类提高类替换的门槛(父程序域覆盖子程序域)

  (4)关于第2点,还可以把二进制做得更绝一些,例如把二进制加密了,然后再在程序里边解密,而解密程序,又可以用Pixelbender来做(Pixelbender的破解又难了很多)。当然,最重要的是,必须先把loader部分混淆,让反编译软件无法直接得到可运行代码,这样cracker就失去耐心了。

好了,说完加密,那么现在这么多flash小游戏,破解一下,拿点素材来使用也是不错的选择。

反编译提取素材,当然要依赖于Sothink等反编译软件了,但是很多游戏的素材和主swf都以二进制形式嵌入的,这样对于sothink swf decompiler来说是无能为力的。反编译出来只有这样的空类:

这时候需要自己根据swf格式说明,写个程序提取出对应的二进制数据,再用sothink来反编译。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏听雨堂

将自动通知窗体集成到类中

        在IE的右下角自动弹出一个通知窗口,几秒后慢慢消失,这个现在是很常见的js代码实现的功能,但是,我希望能够把这个功能集成起来,使用时尽量简化,所...

1727
来自专栏hbbliyong

WPF备忘录(4)打个勾画个叉娱乐下

<Path Grid.Column="2" Data="M43,5 L20,40 20,40 0,20 6,15 18,26 37,7 43,5 z" Fil...

2954
来自专栏前端说吧

Vue-自定义事件之—— 子组件修改父组件的值

3375
来自专栏更流畅、简洁的软件开发方式

【自然框架】——页面基类与设计模式(一)桥接模式(11.14补充了一段对桥接模式的理解)

【自然框架】 页面里的父类—— (补充) 【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。 =================== ...

2047
来自专栏YouMeek

优化单点登录流程的好东西:JWT 介绍

JWT 概念 官网介绍:https://jwt.io/introduction/ 别人翻译(翻译得很好):https://github.com/smilings...

6928
来自专栏DannyHoo的专栏

利用plist文件查看后台返回数据的数据类型

当看客看到标题的时候或许会有些疑惑,有的人甚至会鄙视写者。查看后台返回的数据类型为什么要用plist文件,这也太麻烦了吧。我既然写这篇博客,肯定是有一定的原因的...

551
来自专栏ytkah

微信公众平台开放JS-SDK(微信内网页开发工具包)

微信公众平台开放JS-SDK(微信内网页开发工具包),这次开放接口是质的飞跃,是对开发者和广大用户一个利好的消息。未来的公众号图文消息会更丰富多彩,准备脑洞大开...

4066
来自专栏程序猿DD

JSON Web Token - 在Web应用间安全地传递信息

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。

712
来自专栏听雨堂

VB下中文URL编码问题的解决

        因为编码涉及的内容既多且烦,特别是vb的编码,又有诸多限制,所以在解决URL中文编码的时候走了很久的弯路。 问题:         我的VB...

3226
来自专栏Java架构沉思录

如何使用JWT向服务器证明你就是你

原文地址:http://blog.leapoahead.com/2015/09/06/understanding-jwt/

1054

扫码关注云+社区