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来反编译。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6708
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2537
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2506
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

3985
来自专栏杨龙飞前端

scrollto 到指定位置

2494
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2632
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2697
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

31010
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2000
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4054

扫码关注云+社区