- 浏览: 1428861 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以反编译任何SWF文件。所以,不要将重要的信息置于SWF文件中。SWF文件中不要包含个人的帐号或者密码。
我将简要的论述“保护”技术的历史,和他们是如何失败的,接着我将说明我们能尽的最大努力。中国古语有云,“规则只能防君子,不能仿小人”。
公开的文件格式
在讨论之前,我们先要知道,SWF的文件格式是公开的。公开的文件格式,意味着SWF文件并不是只能由Flash生成。其他公司也能制作可以在SWF播放器上播放的SWF文件。公开的文件格式意味着从什么位置获取什么信息是众所周知的,也就意味着每个字节都是众所周知的。因此,如果我有时间来一个字节一个字节的检查SWF文件,我可以了解所有的细节。
当然,对于一个2M大小的SWF文件,我没有时间来逐个字节的检查。因此,我就借助软件来完成这个工作。如果软件遇到问题,我会暂时接管这个工作,检查发生问题的字节。修正它,然后继续。所以,没有什么东西能够掩藏的住,其限制只是我的时间和我的耐性。如果反编译一个SWF文件的酬劳是数百美元的话,我想我会花上数年时间来逐个字节的读取它。
好了,以下是反编译和保护技术之间的战争历史。 防止被导入.
伴随着Flash的出现,Macromedia提供给开发者一个“防止导入的口令保护”功能。如果你给SWF文件加上导入口令的话,这个SWF文件就不能被导入了(知道倒入密码除外)。SWF文件不加保护的话,其中的矢量图形可以被导入到fla文件中。这种保护没有什么用处,仅仅是假想的安全。
试想一下,你的SWF被用户的播放器来播放的,你不可能利用用户的播放器来保护你的SWF文件。因此,它是如何来保护SWF文件的呢?很简单,这种保护存在于你所买的Flash开发工具中。Flash开发工具不能导入有(导入)密码的SWF文件。没关系,对吧?我可以用十六进制编辑打开那个SWF文件,删除保护密码,从而也就移除了保护功能。
如此简单,所以忘记导入保护功能吧。
转换成放映机文件并且压缩
如果我将它转化成exe格式的放映机文件,还可以被反编译吗?答案:是的,SWF文件仍然存在其中。借助软件可以很容易的将SWF文件从exe文件中释放出来。压缩可以使SWF文件不能被十六进制编辑器读取,压缩是一种保护措施吗?压缩算法类似于zip算法,很容易被破解。
FLASM AND THE P-CODE
在flash5的时代,出现了两种流行的工具,免费的“Flasm”和商业的“ASV 2.0”。Flasm就是“Flash asm”,它将SWF中的字节码解释成可理解的简短代码(p-codes)。比如“a=3”显示为"push 'a', 3", "setVariable";SWF中的字节码是:"96 08 00 00 61 00 07 03 00 00 00 1D"。如果想学习“SWF格式结构”的话,这是个非常有价值的工具。
程序员喜欢用高级语言(比如:C、C++)来开发软件,但是当讲求效率的时候,他们会在其中混合使用低级的汇编语言。因此,有时候开发者会利用 Flasm编写低级别的p-codes来增加效率。所以,Flasm编辑SWF中的actionscript是强有力的。你可以参考例子,了解如何利用这种技术来优化3D代码,但是怀有恶意的用户能够“编辑”SWF文件,SWF中的任何保护措施都可以不费力的移除。我们不需要知道密码就可以移除保护措施。
这儿有个通用、知名的技术来保护我们的影片不被偷窃并在其它的范围内显示。我们编辑脚本来检查_url属性,如果_url不是我们(合法)的范围,就使功能失效并显示一条“You are thief”的消息。可是,借助Flasm可以很容易删除这条脚本语句。不需要1分钟便可以破解这种保护措施。
ACTIONscript VIEWER AND "void (a)<=b>"c" || 0(!1 && !0)"
闪吧新社区:Y9FFPX0S2`V
ASV (Actionscript Viewer)能够从SWF中提取出角色,例如::声音、形状和位图等都可以被窃取。它同样可以提取actionscript字节码,ASV 2尝试将p-codes匹配成高级别的actionscript。当遇到"push 'a', 3", "setVariable";时显示"a=3"这样的等同于actionscript的语言。然而我们能够创造没有任何模式来匹配的代码,从而破坏ASV 的解析。利用Flasm,可以容易的编写不同于标准模式的代码,从而使ASV不能进行匹配工作。扰乱ASV 2工作的一句有名的代码是“;”,这是一条jung代码。它不做任何事,但是能搞乱ASV 2的工作。
但是,当保护脚本众所周知时,ASV的作者(Burakk)当然不会放过它。这种保护技术对于ASV 3来说就失效了。
飞速发展的反编译工具之后是MX时代的到来,许多反编译工具的出现,加快了Flash厄运的速度。
现行版本的ASV 4除了显示得到匹配的actionscript代码,得不到匹配的代码以p-codes形式显示。如果解释成p-codes发生问题,将显示SWF中的字节码。它同样能够显示代码在SWF文件中所处的偏移量,这意味着它不会失效。你不可能扰乱它的工作,因为,至少它能显示SWF文件中的“字节码”。
更甚的是,Flash MX2004提供通过Javascript API来生成”fla”文件。那使它能够建立发布成SWF格式的fla文件。此刻,所有的东西都在那边了。
更不用说声音、形状和位图了,偷窃者不喜欢这些东西,因为它们套容易取得了。偷窃者喜欢切的actionscript,因为其中隐藏着密码,因为其中有阻止此影片正常播放的脚本代码,
如果ASV只能将脚本反编译成字节码,那么它对于大多数偷窃者是没有用处的。因此很多人进他们的最大努力来阻止ASV 4将脚本反编译成actionscript或者p-codes。实际上,对于大多数反编译者来说,脚本得不到匹配,反编译工具就无用了。
这是曾经用过的一些技术,当它们在因特网上发布并且被反编译组织揭示之后,每种技术的保护效果最终都会变得非常薄弱和气数将尽。
依据数据尺寸(句子)分块反编译
大多数之所以能够成功的迷惑或者破坏反编译器,原因在于播放器和反编译器的不同行为。播放器逐个的执行字节码,就像现实世界中的读书一样,一个单词,接着下一个单词。然而反编译器通常将字节链分成有意义的片断,犹如现实世界中的读书一样,一个句子,接着下一个句子。
反编译器的行为如此简单的原因在于大多数的p-code都是遵循数据大小规律的。对于字节码("96 08 00 00 61 00 07 03 00 00 00 1D"),反编译器遇到代表"push"操作的0x96时会想“push什么呢”?下个字节(0x0008)指示的内容:接下去8个字节中的内容压入堆栈,即把("00 61 00 07 03 00 00 00")压入堆栈。所以,通常反编译器依据数据大小将简短的片断切成一块一块的,这样便会解释成“push something”。因此,("96 08 00 00 61 00 07 03 00 00 00")就成为一个句子。下一个字节是下一个句子的开始,就是代表"setVariable"的0x1D。这样8个字节的"something",将被更进一步解释成一个字符串“a”和一个数字“3”。
让我们来看一下字节码:("99 02 00 05 00 96")。0x99意味着分支(或者跳转),在哪里分支呢?接下去的是(0002),因此数据存储在机下去的两个字节中,将它在下面两个字节处截断。总之,我们知道"99 02 00 05 00"是个句子。接下去的是0x96,代表下个句子的开始。
再看第三个例子,字节码:("88 08 00 03 00 63 00 62 00 61 00 96 07 00")。0x88代表定义常数,定义的常数内容是什么呢?后续字节(0008),表明常数内容存储在后继的8个字节中。所以,句子就是:("88 08 00 03 00 63 00 62 00 61 00")。代表下个句子开始的("96 07 00 ...),意味着将7个字节的数据压入堆栈。
因此,字节码砍成单独的句子。每个句子由命令和数据组成,并且以命令打头。因此,每个句子都是一个基本的单元。理论上来说,对于这种方法没有什么错误。
}2s-]3M q0使播放器从句子中间开始读数据
让我们开始讨论“是播放器从句子中间读数据”的破坏反编译器的技术。
首先,我举一个现实世界的例子:
John says good morning.
:tux VW@bRg,}0Mary says thank you.
e^LH)DQ5T4Ko0现在生成SWF文件:闪吧新社区}X*f ?
发表评论
-
haXe是什么?
2016-01-04 10:50 1025haXe是什么? haXe是一种编程语言,官方网站在 ... -
用EA类图生成AS3代码
2008-10-15 16:18 2692EA(Enterprise Architect)是支持多种流 ... -
变形实例-source
2008-10-15 12:46 1514涂抹原理 橡皮擦原理 import flash.geom.P ... -
actionScript 3.0 图片裁剪及旋转
2008-10-10 12:54 5902package com.wdxc { /** ... -
Flash(AS3)读取Excel文件
2008-10-09 13:29 5125var excelXml:XML; var loader=ne ... -
AS3 Loading的制作方法
2008-10-09 13:28 6043AS2的时候做LOADING有很多种方法,做起来也得心应手可是 ... -
让"Flash" 写文件(AS3)
2008-09-11 16:23 1768目前,出于安全考虑Flash不支持写文件的操作,在AS3的A ... -
AS3 中的 拖动 及 碰撞 检测
2008-09-11 16:11 2918没有press和release事件 hitTest()被分尸 ... -
As和js通信问题完全解析(解决addcallback失效的问题)
2008-09-11 16:10 3622as和js通信最早用的是fscommand,这个我就不说了,老 ... -
Flash CS3制作Fla形式的组件
2008-06-16 14:45 1351本文为大家介绍如何制作Flash CS3中的[*.fla]形 ... -
AS3图像处理之剪裁、动态选取
2008-06-15 23:25 2227和师傅写C#写的思维混乱,方法变量几乎第一反应就是大写,习惯都 ... -
从界面入手 划分类
2008-06-15 19:25 1253如何将一个项目细化成各个类呢? 1 从一个项目的界面入手,按照 ... -
AS3-DisplayEffect组件
2008-06-14 20:40 2040[AS3]DisplayEffect组件【组件版本】:0.5【 ... -
KTooltip 工具提示组件
2008-06-14 20:38 1011发布一个小工具KTooltip 。这是0.9beta版,出发日 ... -
AS3.0写的一个滚动条【缓动效果】
2008-06-13 16:10 6376package { import flash.d ... -
一个简单的文本滚动条类 as3
2008-06-13 16:04 4360最近一直做会议与AS3有关项目今天花了点时间写了一个可以选择套 ... -
自定义滚动条类
2008-06-13 16:01 2064在平常的开发中,经常需要用到滚动条,今天将滚动条类整理了下,有 ... -
AS3加载机制
2008-06-13 15:03 2183摸了好一阵子,才弄明白AS3.0的加载机制.还是坚持自己的原则 ... -
写了一个Flash的Transition
2008-06-11 10:36 1722写了一个Flash的Transition package { ... -
JavaScript与ActionScript函数相互调用
2008-06-06 15:07 22551、在JavaScript中调用Flex( ...
相关推荐
swf 反编译工具
抽空再花时间,整理下具体的代码含义。 这提取的较完整的swf反编译的fla.. 纯参考研究用...希望对下载的童鞋有帮助..
中文很强大的反编译swf软件,导出包含脚本非常好用。ps使用规则打开swf文件后选择转换,指定转换目录,点击全部转换。转换完后就可以用ps软件打开。
flash、swf反编译工具,无时间限制限制,支持flash cs5及以上版本,exe文件
flash游戏开发之 如何反编译.swf文件得到actionscript3 as3源代码.zip
flex flash swf二进制封装加密防止反编译 flex flash swf二进制封装加密防止反编译 flex flash swf二进制封装加密防止反编译
jQuery Webcam Plugin jscam.swf文件反编译工具使用说明
SWiX Free是一款SWF编辑工具,准确的说是一款调试、更新SWF文件的XML编辑器,SWiX可以将SWF文件反编译为SWIX的XML格式(SWiX-format XML),支持全系列Flash格式(Flash 5/6/7/8/9/10),反编译为XML格式会支持语法...
用户必须得到您的授权才可以播放,同时还可以防止您的swf文件被反编译或者被一些工具提取;您可以为用户创建播放密码,播放密码与用户的电脑硬件绑定,用户无法传播播放密码和文件。新增了防止屏幕翻录功能;新增...
swf文件格式说明文档,用于反编译swf文件
Flash Decompiler即FFDec是一款SWF反编译软件,可通过打开图标或者拖动SWF文件到软件窗口中来开始反编译FLASH SWF/GFX/SWC文件。能够打开编辑FLASH,提供里面的图形、文本、图像、视频、声音、按钮以及字体框架...
Action Script Viewer是一个SWF反编译应用程序,准确的说是一款调试、更新SWF文件的XML编辑器。支持AS1到AS3,能让你查看 SWF 文件里面的动作脚本;能让你取位图、音频、视频、字体等原始文件;能让你浏览 SWF 文件...
这款swf文件反编译工具可以让用户将一个SWF文件导出资源并保存为其他格式的声音、图像、形状、框架、逐渐、字体、文本、按钮、动画层和Actions cripts,用户也可以直接导出可以在Flash中进行修改的源格式FLA数据。
QQ游戏反编译代码文件 可以见到游戏的算法及运行流程,高手分析
swf反编译软件。actionscript源码查看,可以用于swf后缀的文件的反编译。一般拿来研究加密方式
小巧的(仅58K)的,将大部份工具制的flash exe还原/反编译成swf,已经测试官方工具和多个第三方工具生成的flash exe,直接将要还原的文件拖到此程序上即可。
SWiX Free是一款SWF编辑工具,准确的说是一款调试、更新SWF文件的XML编辑器,SWiX可以将SWF文件反编译为SWIX的XML格式(SWiX-format XML),支持全系列Flash格式(Flash 5/6/7/8/9/10),反编译为XML格式会支持语法...
Flash Decompiler是一款反编译Flash的工具,可以把SWF文件转换为FLA格式,可以在原生Flash环境中进行编辑。软件还可以从FLASH文件swf格式中提取所有资源,包括:声音、图像、视频、图形、帧画面、文本、字体、按键、...
Flash EXE 文件反编译的方法一样常见的 SWF 文件。 Flash Decompiler Trillix 5.3.1370 汉化版也可以转换成 Adobe 的 Flex 文件,由 Adobe Flex Builder 中创建的。 Flash Decompiler Trillix 汉化版为您提供有关...
反编译 SWF 文件,在几秒钟内获得源代码 FLA。它支持批量转换,所以你可以给它留下一堆不同的任务和做任何其他事情,虽然我们的应用程序工作。 方便的时候你不需要重新做一遍整个 SWF 文件中,只是它的某些元素。您...