刚作做的swf 加密 ,完全用as3 对原swf自我加密。
使用alchemy对原swf加壳,加壳方法非常简单。加密过程全部使用的c代码也就三行。外层的无用代码应该还可以看到,"但内层swf源代码估计不会有人能破解了! 大家可以尝试反编译 一下。不敢说无人能破,但我估计应该是很难破解的!"
前面的贴中as3加壳已很容易被“flash 023” 兄破解了,其实那只是as3加壳试验部分,本来应该注释掉的,结果给大家造成误导...(我想要破解的是alchemy-C语言加壳部分(象征性的三行加壳代码,其实改成一行也可以))现在重新制作加密文件(as3加壳部分去掉了,只剩下C加壳部分)。
提示:1.想要破解出去壳的C代码应该是不可能的。
2.我想到的方法是运行时save出alchemy解壳后的原始swf,是否可行请自行尝试(如果asv 可以导出alchemy编译的swc因该没问题,如果asv可以动态修改swf脚本并直接运行也应该是可以的,如果以上两条有任意一条成立,则任何简单的swf加壳方法都是完全可以破解的,想要加密推荐混淆,或干脆使用HaXe或alchemy去写主要代码)
3.代码未作变量名替换,没有使用加密软件,加密的swf生成代码/内层swf源代码(*=待破解的变量名):
var *= new TextField();
*.text="请您破解";
*.textColor=0xff0000;
*.scaleX=*.scaleY=10;
addChild(*);
欢迎回复破解方法,思路 。
AS3_encrypt_test.swf (84.47 KB)
问题已解决?经验:
我的加密方法(直接对原始.swf):
1.加壳“使用loader读入原始.swf”对 bytearray重新编码,save加壳.swf;
2.embed 加壳.swf(已无法正常运行)到loader类,传加壳.swf给alchemy,使用1中方法去壳(重新编码)得到原始.swf
传给 flash,
3.使用loader加载 原始.swf,addChild到舞台.
解密思路:
加密方法第1步:无懈可击.加壳过程及加壳时用代码是破解者无法得到的。
加密方法第2步:由于去壳代码使用c语言编写,alchemy编译,基本上很难有任何作为.
问题就出在要想显示原始.swf,运行时内存中一定存在还原后的swf,此时如果没有任何保护措施,那就...哈哈!
解密方法:
多谢flash023兄:
看来“混淆"才是加密的王道啊!
java,flash加密还是很难的.想起了C语言,不要说反编译exe了,前几天在看某程序 源码 ,其中一百多行的内嵌汇编写的,让我直接吐血了...
在下flash加解密方面的的的确确是一个实实在在的"新手 未入门",是因为之前对其不是太感兴趣...代码注释是永远无法破译的...
然而真的要想加密也很简单:
只不过不喜欢这种加密方法.
附件未使用任何工具 作加密,但任何破解在此时都是无意义的...大家反编译一下就明白了...
加密其实很容易.swf (3.63 KB)
源代码:
- var * = root.createEmptyMovieClip("*",1);
- *._x=256;
- *._y=256;
- *.beginFill(0xFF0000);
- *.moveTo(-256,-256);
- *.lineTo(256,-256);
- *.lineTo(256,256);
- *.lineTo(-256,256);
- *.endFill();
- *.onEnterFrame=function(){
- *._rotation+=10;
- new Color(*).setRGB(Math.floor(Math.random()*0xffffff));
- }
希望大家继续多汇报一下反编译过程中遇到的情况!我比较想了解 alchemy被反编译后能否重新正常编译出swf
补充:
这里的alchemy的加密方法对swf文件加密虽然被flash023破解了,但起码如果用于加密图片资源还是绝对有效的.
Bengine详细介绍:http://flash.9ria .com/thread-44986-1-1.html
引擎demo中使用的5个贴图文件资源绝对是任何人无法通过反编译破译导出的