如何防止swf文件被反编译

如何防止swf文件被反编译

ID:20267025

大小:55.50 KB

页数:4页

时间:2018-10-08

如何防止swf文件被反编译_第1页
如何防止swf文件被反编译_第2页
如何防止swf文件被反编译_第3页
如何防止swf文件被反编译_第4页
资源描述:

《如何防止swf文件被反编译》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何防止SWF文件被反编译这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以反编译任何S大小的Sacromedia提供给开发者一个“防止导入的口令保护”功能。如果你给SANDTHEP-CODE在flash5的时代,出现了两种流行的工具,免费的“Flasm”和商业的“ASV2.0”。Flasm就是“Flashasm”,它将SX时代的到来,许多反编译工具的出现,加快了Flash厄运的速度。现行版本的ASV4除了显示得到匹配的actionscript代码,得不到匹配的代码以p-codes形式显示。如果解释成p-codes发生问题,将显示SX2004提供通过

2、javascriptAPI来生成”fla”文件。那使它能够建立发布成SWF格式的fla文件。此刻,所有的东西都在那边了。更不用说声音、形状和位图了,偷窃者不喜欢这些东西,因为它们套容易取得了。偷窃者喜欢切的actionscript,因为其中隐藏着密码,因为其中有阻止此影片正常播放的脚本代码,如果ASV只能将脚本反编译成字节码,那么它对于大多数偷窃者是没有用处的。因此很多人进他们的最大努力来阻止ASV4将脚本反编译成actionscript或者p-codes。实际上,对于大多数反编译者来说,脚本得不到匹配,反编译工具就无用了。这是曾经用过的一些技术,当它们在因特网上发布并且被反编译组织揭示之后,

3、每种技术的保护效果最终都会变得非常薄弱和气数将尽。依据数据尺寸(句子)分块反编译大多数之所以能够成功的迷惑或者破坏反编译器,原因在于播放器和反编译器的不同行为。播放器逐个的执行字节码,就像现实世界中的读书一样,一个单词,接着下一个单词。然而反编译器通常将字节链分成有意义的片断,犹如现实世界中的读书一样,一个句子,接着下一个句子。反编译器的行为如此简单的原因在于大多数的p-code都是遵循数据大小规律的。对于字节码("96080000610007030000001D"),反编译器遇到代表"push"操作的0x96时会想“p123下一页[感谢阅读这篇文章,..,]ush什么呢”?下个字节(0x00

4、08)指示的内容:接下去8个字节中的内容压入堆栈,即把("0061000703000000")压入堆栈。所以,通常反编译器依据数据大小将简短的片断切成一块一块的,这样便会解释成“pushsomething”。因此,("9608000061000703000000")就成为一个句子。下一个字节是下一个句子的开始,就是代表"setVariable"的0x1D。这样8个字节的"something",将被更进一步解释成一个字符串“a”和一个数字“3”。让我们来看一下字节码:("990200050096")。0x99意味着分支(或者跳转),在哪里分支呢?接下去的是(0002),因此数据存储在机下去的两个

5、字节中,将它在下面两个字节处截断。总之,我们知道"9902000500"是个句子。接下去的是0x96,代表下个句子的开始。再看第三个例子,字节码:("8808000300630062006100960700")。0x88代表定义常数,定义的常数内容是什么呢?后续字节(0008),表明常数内容存储在后继的8个字节中。所以,句子就是:("8808000300630062006100")。代表下个句子开始的("960700...),意味着将7个字节的数据压入堆栈。因此,字节码砍成单独的句子。每个句子由命令和数据组成,并且以命令打头。因此,每个句子都是一个基本的单元。理论上来说,对于这种方法没有什么错

6、误。使播放器从句子中间开始读数据让我们开始讨论“是播放器从句子中间读数据”的破坏反编译器的技术。首先,我举一个现实世界的例子:Johnsaysgoodmorning.Marysaysthankyou.现在生成Sorning.skip3说了什么,但语法不对,汇报出错;第二,它没有看到第二个“skip”命令,因为它处于句子中间;第三,当它被迫退回7个字后,感到迷惑,认为应该从“Tomsaid”开始执行整个句子;第四,这个错误使它在第二行和第三行之间陷入无限循环之中。总之,我们增加了“Tomsaid”这句垃圾代码,并提供整个句子长度的错误数据大小信息。这个错误的长度覆盖了“skip”命令。来看个真实

7、的例子,请注意,这些技术需要操作字节码,纯actionscript不能够实现。例1:向前跳转的包含无效尺寸数据的死代码。pushTruebranchifTruelabel2constants''label2:push'a',3setVariable你仔细看的话,会发现"constants''"这行是垃圾代码,它不可能被执行到。然而,理论上,当第二行的结果为"notTrue"时,它将被执行。因此,反

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。