分享

加密swf、图片

 nywrb 2012-06-29

加密swf、图片


原理:

       假设要加密的文件是a.swf,首先通过AS3修改a.swf的ByteArray,然后发送到PHP(当然也可以是其他语言),在后台生成一个新的b.swf,这就是加密后的文件,别人如果下载下来打开,是无法观看的。如果想通过破解工具破解,那也是徒劳(因为这已经不是一个swf了)。

        然后我们就可以在AS3里解析这个b.swf,将它还原成a.swf,这是通过URLLoader+Loader完成的,还是来看看代码吧

加密:

代码:

var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,onLoaded);
urlLoader.load(new URLRequest('t1.swf'));
function onLoaded(evt)
{
    var ba:ByteArray = urlLoader.data;
    var bytes:ByteArray = new ByteArray();
     for(var i=0;i<ba.length;i++)
     {
         bytes.writeByte(ba[i] + 13);//这里的13可替换为你想要的数字
     }
     //bytes.compress();
     var request:URLRequest = new URLRequest ('http://127.0.0.1/today/t.php');
     var loader: URLLoader = new URLLoader();
     request.contentType = 'application/octet-stream';
     request.method = URLRequestMethod.POST;
     request.data = bytes;
     loader.load( request );
}

PHP代码:

$fp = fopen( 'test.swf', 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose( $fp );

解密:代码:var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,onLoaded);
urlLoader.load(new URLRequest('test.swf'));//加密后的swf文件
function onLoaded(evt)
{
     var ba:ByteArray = urlLoader.data;
     var bytes:ByteArray = new ByteArray();
     //trace(ba.length);
    
     //-------------------解密
     for(var i=0;i<ba.length;i++)
     {
         bytes.writeByte(ba[i] - 13);
     }
     //-------------------End
    
     var loader:Loader = new Loader();
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onBytesLoaded);
     loader.loadBytes(bytes);
}
function onBytesLoaded(evt)
{
     addChild(evt.target.content);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多