精华内容
下载资源
问答
  • swf解密破解

    2013-05-21 11:26:02
    新东方swf破解后在手机上播放的软件
  • 烈焰SWF解密

    2015-01-16 14:16:00
    SWF 解密 是用UE编辑器 改 SWF开头 的AA AA AA ,改成43 57 53 就解密

    SWF 解密 是用UE编辑器 改 SWF开头 的AA AA AA ,改成43 57 53 就解密了

    展开全文
  • 解密SWF工具打开加密的SWF文件

    热门讨论 2009-04-27 02:32:55
    打开加密的SWF文件,为SWF解密!很好用的小工具,不需要安装即可!
  • swf破解解密

    热门讨论 2007-12-09 11:34:54
    完美解密 active
  • Flash之swf文件的加密与破解

    千次阅读 2018-12-28 23:31:14
    Flash之swf文件的加密与破解 Flash,现在叫animate,风靡于PC网络时代,整个时代弥漫着无数经典的作品,现在是移动互联时代H5逐渐代替了她的位置。逐渐地,flash变成了制作H5的一个工具。 深呼吸一下……顺便追忆...

    Flash之swf文件的加密与破解

    Flash,现在叫animate,风靡于PC网络时代,整个时代弥漫着无数经典的作品,现在是移动互联时代H5逐渐代替了她的位置。逐渐地,flash变成了制作H5的一个工具。


    深呼吸一下……顺便追忆前世今生
    好了,闲言少叙,且看flash的swf文件。
    swf文件是一种公开标准的文件格式,一般由flash软件发布。
    文件格式(SWF)详细说明书
    https://blog.csdn.net/yjfkpyu/article/details/4032202
    http://www.360doc.com/content/15/0112/12/9200790_440101266.shtml


    用其开发软件可以承载交互丰富的多媒体内容。
    为了保护软件内容不被轻易的盗取,一般都要进行加密。



    一般swf加密方法,都是按照一定的算法将文件的bytearray进行变换,得到一个player无法识别的文件。
    player播放时需要按照算法逆运算,就可以得到swf文件然后进行装载播放了。
    说白了加密解密就是玩一个字符串的游戏。


    常用的操作如下
    异或、替换或增加数据、改变字节顺序、base64转换、压缩等

    本来嘛,内容既要隐藏又要展现就是矛盾的。

    软件可以扫描内存从中提取展示的swf文件。
    不管怎样内容还是要给人看的,所以再怎么变换也有让别人拿走的机会。
    因此这些加密的手法也只能做到在一定程度上的防备。


    对于一个经验多一点的闪客来说,想要的都能想办法拿到。
    声明:本人遵纪、守法、讲道德,且一贯的尊重所有软件的知识产权。反编译代码仅为学习研究之目的,并无恶意。


    下面举个栗子:
    案例1

    base64+增加数据实施对文件的加密。                
    反编译代码

    package 
    {
    
    
        import com.hurlant.util.*;
        import flash.utils.*;
        
        public class ByteCodeMix extends Object
        {
            public function ByteCodeMix(arg1:String)
            {
                super();
                if (arg1) 
                {
                    _key = arg1 + innerKey;
                }
                else 
                {
                    _key = innerKey;
                }
                endkb = new flash.utils.ByteArray();
                endkb.writeUTFBytes(endkey);
                return;
            }
    
            public function enCodeMix(arg1:flash.utils.ByteArray, arg2:int):flash.utils.ByteArray
            {
                var loc3:*;
                (loc3 = new flash.utils.ByteArray()).writeUTF(_key);
                var loc4:*;
                (loc4 = new flash.utils.ByteArray()).writeInt(loc3.length);
                loc4.writeBytes(loc3);
                loc4.writeBytes(arg1);
                loc4.writeBytes(endkb);
                var loc5:*;
                (loc5 = new flash.utils.ByteArray()).writeBytes(loc4, 0, arg2);
                var loc1:*=com.hurlant.util.Base64.encodeByteArray(loc5) + _key;
                var loc2:*;
                (loc2 = new flash.utils.ByteArray()).writeUTF(loc1);
                loc2.writeBytes(loc4, arg2);
                return loc2;
            }
    
            public function deCodeMix(arg1:flash.utils.ByteArray):flash.utils.ByteArray
            {
                arg1.position = 0;
                var loc3:*=(loc3 = arg1.readUTF()).replace(_key, "");
                var loc2:*=com.hurlant.util.Base64.decodeToByteArray(loc3);
                var loc1:*=new flash.utils.ByteArray();
                arg1.readBytes(loc1, 0, arg1.bytesAvailable);
                var loc4:*;
                (loc4 = new flash.utils.ByteArray()).writeBytes(loc2);
                loc4.writeBytes(loc1);
                var loc6:*=new flash.utils.ByteArray();
                loc4.position = 0;
                var loc5:*=loc4.readInt();
                loc4.position = loc4.position + loc5;
                loc4.readBytes(loc6, 0, loc4.length - loc5 - 4 - endkb.length);
                return loc6;
            }
    
            private var _key:String;
    
            private var innerKey:String="iZSBGbGV4IDQgQXBwbGljYXRpb248";
    
            private var endkey:String="lt_xggh_fla.sprite185copy3_89";
    
            private var endkb:flash.utils.ByteArray;
        }


    解密方法
     

    loc1 = (loc3 = new ByteCodeMix("RpdGxlPjxkYzpkZXNjcmlwdG")).deCodeMix(flash.net.URLLoader(arg1.target).data as flash.utils.ByteArray);

    分析:
    能看出 有用的加密的文件结构是
    --------------------------------------------------------------------------
    | RpdGxlPjxkYzpkZXNjcmlwdGiZSBGbGV4IDQgQXBwbGljYXRpb248 |
    --------------------------------------------------------------------------
    | swf数据                                                                                          |
    --------------------------------------------------------------------------
    | lt_xggh_fla.sprite185copy3_89                                                         |
    --------------------------------------------------------------------------

    案例2

    改变顺序反编译代码

    package 
    {
    
    
        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        import flash.system.*;
        import flash.utils.*;
        
        public class DecryptLoader extends flash.events.EventDispatcher
        {
            public function DecryptLoader(arg1:String, arg2:String, arg3:Boolean=true)
            {
                super();
                isEncode = arg3;
                _strUrl = arg1;
                _strKey = arg2;
                return;
            }
    
            public function get getUrl():String
            {
                return _strUrl;
            }
    
            public function get getKey():String
            {
                return _strKey;
            }
    
            public function set setUrl(arg1:String):void
            {
                _strUrl = arg1;
                return;
            }
    
            public function set setkey(arg1:String):void
            {
                _strKey = arg1;
                return;
            }
    
            private function validKey(arg1:Array):Boolean
            {
                arg1.sort();
                trace(arg1);
                return arg1.every(sequential);
            }
    
            private function sequential(arg1:*, arg2:int, arg3:Array):Boolean
            {
                return arg1 == arg2;
            }
    
            public function startLoad(arg1:Function=null):void
            {
                var loc2:*=new flash.net.URLRequest(_strUrl);
                var loc1:*=new flash.net.URLLoader();
                loc1.dataFormat = "binary";
                loc1.addEventListener("complete", handleUrlLoadComplete);
                loc1.addEventListener("ioError", onErr);
                if (arg1 != null) 
                {
                    _progress = arg1;
                    loc1.addEventListener("progress", arg1);
                }
                loc1.load(loc2);
                return;
            }
    
            private function onErr(arg1:flash.events.IOErrorEvent):void
            {
                dispatchEvent(new flash.events.Event("LoadFail"));
                return;
            }
    
            private function handleUrlLoadComplete(arg1:flash.events.Event):void
            {
                if (_progress != null) 
                {
                    arg1.target.removeEventListener("progress", _progress);
                }
                var loc1:*=arg1.target.data as flash.utils.ByteArray;
                var loc4:*=new flash.utils.ByteArray();
                if (isEncode) 
                {
                    if (!decrypt(loc1, loc4)) 
                    {
                        dispatchEvent(new flash.events.Event("LoadFail"));
                        return;
                    }
                }
                var loc2:*=new flash.display.Loader();
                loc2.contentLoaderInfo.addEventListener("complete", handleByteLoadComplete);
                var loc3:*;
                (loc3 = new flash.system.LoaderContext()).allowCodeImport = true;
                loc3.allowLoadBytesCodeExecution = true;
                loc3.applicationDomain = flash.system.ApplicationDomain.currentDomain;
                if (isEncode) 
                {
                    loc2.loadBytes(loc4, loc3);
                    bytes = loc4;
                }
                else 
                {
                    loc2.loadBytes(loc1, loc3);
                    bytes = loc1;
                }
                loader = loc2;
                return;
            }
    
            private function decrypt(arg1:flash.utils.ByteArray, arg2:flash.utils.ByteArray):Boolean
            {
                var loc4:*=0;
                var loc6:*=0;
                var loc3:*=0;
                if (arg1.length < 2000) 
                {
                    return false;
                }
                if (_strKey.length != 20 * 2) 
                {
                    return false;
                }
                var loc5:*=[];
                var loc7:*=[];
                loc4 = 0;
                while (loc4 < _strKey.length) 
                {
                    loc5.push(_strKey.substr(loc4, 2));
                    loc7.push(_strKey.substr(loc4, 2));
                    loc4 = loc4 + 2;
                }
                if (!validKey(loc7)) 
                {
                    return false;
                }
                var loc2:*=[];
                var loc1:*=new flash.utils.ByteArray();
                loc6 = 0;
                while (loc6 < loc5.length) 
                {
                    loc2["byte" + loc6] = new flash.utils.ByteArray();
                    arg1.readBytes(loc2["byte" + loc6], 0, 2000 / 20);
                    ++loc6;
                }
                arg1.readBytes(loc1);
                loc3 = 0;
                while (loc3 < loc5.length) 
                {
                    trace("byte" + loc5[loc3]);
                    arg2.writeBytes(loc2["byte" + int(loc5[loc3])]);
                    ++loc3;
                }
                arg2.writeBytes(loc1);
                return true;
            }
    
            private function handleByteLoadComplete(arg1:flash.events.Event):void
            {
                trace((arg1.target as LoaderInfo).loader);
                dispatchEvent(arg1);
                return;
            }
            public var loader:Loader;
            public var bytes:ByteArray;
            private const KEYLENGTH:uint=20;
    
            private const BUFFERSIZE:uint=2000;
    
            private var _strUrl:String;
    
            private var _strKey:String;
    
            private var _progress:Function;
    
            private var isEncode:Boolean;
        }
    }
    }
    
    


    解密代码

     

    var loc1:*=new DecryptLoader(arg1, "0010170918061315121405160704110803021901");
                loc1.addEventListener("LoadFail", loadFail);
                loc1.startLoad();

    分析:
    很有意思的参数"0010170918061315121405160704110803021901"是0-19的组合
    也是打乱顺序的规则。
    100个字节为1组,打乱前20组。


     

    展开全文
  • 烈焰swf加-解密

    2015-12-05 22:10:12
    烈焰游戏SWF解密加密工具!直接将SWF文件拖进去就行了!
  • swf密码破解器

    2015-08-20 09:56:06
    swf密码破解器是一款破解swf文件的工具,能把swf文件破解成FLASH原码。
  • swf加密解密

    2014-04-02 17:28:35
    加密软件 doswf secureSWF 解密软件 asv flash decompiler 提取软件 Flash Vampires http://www.swfvampire.com/

    加密软件

    doswf

    secureSWF


    解密软件

    asv

    flash decompiler

    As3 Sorcerer


    提取软件

    Flash Vampires

    http://www.swfvampire.com/

    展开全文
  • swf加密解密常见方式分析

    千次阅读 2014-06-06 18:00:00
    swf加密解密常见的方式是对swf

    swf加密常见的方式是对swf二进制数据流加进一些数据,然后生成一个加密后的swf。

    swf解密常见的方式是对加密后的swf二进制数据流,删除那些加进来的数据,就得到了未加密的swf.

    代码示例:


    Encryption.as,加密;

    package
    {
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.filesystem.File;
        import flash.filesystem.FileStream;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.utils.ByteArray;
        
        public class Encryption extends Sprite
        {
            private var _url:String="assets/init.swf";
            private var urlloader:URLLoader=new URLLoader;
            public function Encryption()
            {
                loadSwfs();
            }            
            
            private function loadSwfs():void
            {
                urlloader.load(new URLRequest(_url));
                urlloader.dataFormat="binary";
                urlloader.addEventListener(Event.COMPLETE,completeHandler);
            }
            
            private function completeHandler(event:Event):void
            {
                urlloader.removeEventListener(Event.COMPLETE,completeHandler);
                var bytes:ByteArray=event.target.data as ByteArray;
                bytes.position=bytes.length;
                trace("bytes:",bytes.length);
                bytes.writeBoolean(true);
                trace("bytes.length:",bytes.length);
                var file:File=new File;
                file.save(bytes,"encryption.swf");
            }
        }
    }


    Encryption.as,解密;

    package
    {
        import flash.display.Loader;
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.system.LoaderContext;
        import flash.utils.ByteArray;
        import flash.display.LoaderInfo;
        
        public class Decryption extends Sprite
        {
            private var _url:String="assets/encryption.swf";
            private var urlloader:URLLoader=new URLLoader;
            public function Decryption()
            {
                urlloader.load(new URLRequest(_url));
                urlloader.dataFormat="binary";
                urlloader.addEventListener(Event.COMPLETE,completeHandler);
            }            
            
            private function completeHandler(event:Event):void
            {
                var bytes:ByteArray=urlloader.data;
                bytes.position=0;
                trace(bytes.length);
                var decryBytes:ByteArray=new ByteArray;

                bytes.readBytes(decryBytes,0,bytes.length-2);
                trace(decryBytes.length);
                var loader:Loader=new Loader;
                var context:LoaderContext=new LoaderContext();
                context.allowCodeImport=true;
                loader.loadBytes(decryBytes,context);
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadSuccess);
            }
            
            private function loadSuccess(event:Event):void
            {
                this.addChild(LoaderInfo(event.target).loader.content);
            }
        }
    }

    展开全文
  • 破解swf文件

    2014-02-18 12:01:00
    但我们在网页上看到漂亮的flashs,想看下别人是怎么做的,怎么办?... swf_reader_2.3 (把浏览器中的flash下载到本地的swf文件)下载地址http://download.csdn.net/detail/woshiluochen/6932221  F...
  • 1.提供air和exe俩种安装方式; 2.加密时候的密钥请先记住,解密的密钥是...3.提供了俩个列子供参考,一个是单个swf解密素材的用法,一个加载素材的解密用法; 4.SWFMaterialDecode是我提供的解密算法,详细使用看列子;
  • Python工具和有关解密 Flash / SWF并生成请求签名的教程 由用于生成请求签名。 纯教育性并激发好奇心 :exclamation_mark: 我不再是FoE玩家,因此不再由我自己维护此项目,而据我所知,他们已经/正在转向基于HTML5...
  • 有效的去除flash swf文件加密,使flash文件中的各种资源 可以提取编辑 有效的去除flash swf文件加密,使flash文件中的各种资源 可以提取编辑
  • 控件名称: 流加密解密播放swf文件控件 软件版本: 1.1.0.0 软件分类: 国产软件 / 共享软件 / 媒体控件 软件容量: 1.6M 应用平台: win2000/winXP/win2003 联系EMAIL: hhcvod@gmail.com 软件网站: ...
  • SWF加密工具

    2012-07-11 09:05:46
    一款视频编辑软件...可以给视频加密...
  • swf 解压、解密脚本

    2009-02-10 17:57:55
    swf解压脚本 swf解压脚本 swf解压脚本
  • 这个可以内存提取(demo版可以无限制保存swf),比上次介绍的swf窗口吸血鬼要猛得多。 而且,更恐怖的是直接针对SWF Encrypt,DoSwf,SecureSWF等主流加密工具一键破解... 这个东西本来是开源的,...
  • 利用as3Loader简单的加密swf解密swf前言准备工作基本思路加密类解密类主类 前言 最近公司让我了解一下怎样加密swf解密swf。于是我在网上看了一些简单的教程。 在这里我简单的记录一下。 准备工作 工具: flash...
  • 破解加密过的SWF文件

    千次阅读 2010-11-19 12:33:00
     Flash制作的文件格式是swf,有些人在制作时都会加上输入保护,然后转成EXE文件。这样我们就不能用Flsah程序打开来编辑这个文件了,这样做可以维护作者的版权,但如果你不是出于商业用途,而只想获得一些素材...
  • 从前面两节的分析可以看出,脆弱的swf文件极其容易被一些现成的工具反编译回可执行源代码。一旦可以进行动态调试,那 么这个文件将被他人掌控,即使你使用了最先进的加密算法来保护你的资源,但是你的解密操作总会...
  • AS3-实用程序 一堆用于加密和解密 SWF 文件的实用程序、包装加密 SWF 文件的自定义加载程序等......
  • SWF Seeker SWF内存提取工具

    热门讨论 2011-03-30 19:31:11
    SWF Seeker是一个通用的SWF内存提取工具,可用于电子杂志,小游戏等的解密. 【功能介绍】 1.软件内置了最新的解密引擎,在同类软件中速度最高。 2、100%抓取到用户看到的任何形式封装的swf文件。 3.特有智能扫描模式,...
  • swf文件修改总结

    千次阅读 2019-10-19 14:43:31
    swf文件修改总结 目标: 有一个网页内嵌swf文件,没有源代码,需要修改其功能。 步骤: 一、下载网页中的swf文件     ... 二、解密client.swf 用JPEXS逆向工具打开c...
  • SWF Seeker(SWF提取工具)

    2011-12-01 16:10:12
    SWF Seeker是一个通用的SWF提取工具,可用于电子杂志,小游戏等的解密. 这是一个试用版本。
  • DoSWF加密解密

    2014-12-17 22:17:38
    没什么好描述的啊!就一个Doswf没什么好描述的啊!就一个Doswf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,864
精华内容 745
关键字:

swf解密