flash 加密尝试 简单二进制操作

第一步加密: 用flash读取一个正常的swf文件,以二进制读取后转化为byteArray对象。然后修改byteArray序列,然后把这个修改后的二进制对象保存到服务器上。这样这个flash文件的格式已经被破坏,破解工具就无法破解。(也可以用其他语言写个程序来修改二进制序列,目的就是打乱正常的flash文件格式。)
第二步解密:前端建立swf文件,用户正常访问这个swf文件。这个swf壳载入刚才加密的文件,以二进制读取。然后修正破环的序列,修正后可以loader.loadBytes来显示。
(但是这个壳还是可以被破解的,破解以后就知道我们的加密办法。但是那个主文件里面的代码和素材如果他想盗取的话还要在修改一下文件。增加了他的难度。这个swf壳可以做一些高强度的加密,增加难度,毕竟完全防止破解是不可能的。)

1首先建立一个临时的swf文件,随便载入一个test.swf。
2.建立一个加密文件 jiami.fla。复制一下代码

AS3代码
  1. var uq:URLRequest=new URLRequest("test.swf");      
  2. var ul:URLLoader=new URLLoader(uq);      
  3. ul.dataFormat=URLLoaderDataFormat.BINARY;      
  4. ul.addEventListener(Event.COMPLETE,success);      
  5. var bt:ByteArray=new ByteArray();      
  6. var bt2:ByteArray=new ByteArray();      
  7. function success(e:Event) {      
  8.    bt=e.target.data as ByteArray;      
  9.    bt2.writeByte(int(1));//就是这里,随便插入一个字节,然后把刚才的byteArray复制一份,格式就已经被打乱了      
  10.    for (var i=0; i<=bt.length; i++) {      
  11.      bt2.writeByte(bt[i]);//copy刚才byteArray对象。      
  12.    }        
  13.    loader.load(req);      
  14. }      
  15. var req:URLRequest = new URLRequest("http://127.0.0.1:8080/write.php");   
  16. //后台php接受这个byteArray保存成swf文件。   
  17. req.data = bt2;      
  18. req.method = URLRequestMethod.POST;      
  19. req.contentType = 'application/x-www-form-urlencoded';      
  20. var loader:URLLoader = new URLLoader();      
  21. loader.dataFormat=URLLoaderDataFormat.BINARY;      
  22. loader.addEventListener("complete",handler);      
  23. function handler(e:Event) {      
  24.    e.target.data;      
  25. }      
  26.      

 

3 建立一个解密文件 jiemi.fla。 复制以下代码:
 

AS3代码
  1. var uq:URLRequest=new URLRequest("test_jiami.swf");   
  2. var ul:URLLoader=new URLLoader(uq);   
  3. ul.dataFormat=URLLoaderDataFormat.BINARY;   
  4. ul.addEventListener(Event.COMPLETE,success);   
  5. var bt:ByteArray=new ByteArray();   
  6. var bt2:ByteArray=new ByteArray();   
  7. function success(e:Event) {   
  8.    bt=e.target.data as ByteArray;   
  9.    for (var i=1; i<=bt.length; i++) {//从1开始,跳过我们刚才插入的1个字节   
  10.      bt2.writeByte(bt[i]);   
  11.    }   
  12.    var ld:Loader=new Loader();   
  13.    ld.loadBytes(bt2);   
  14.    addChild(ld);   
  15.   
  16. }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值