swf加密解密常见方式分析
swf加密常见的方式是对swf二进制数据流加进一些数据,然后生成一个加密后的swf。 swf解密常见的方式是对加密后的swf二进制数据流,删除那些加进来的数据,就得到了未加密的swf. 代码示例: Encryption.as,加密; package 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,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); ?? ??? ?} ?? ?} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |