9RIA.com天地会 - 论坛

返回列表 发帖

天地培训

9RIA天地会官方培训机构

Adobe官方认证培训中心

[宣传] 使用as3+alchemy对swf自我加密_欢迎大家来破解

本帖最后由 Bruce_Jawn 于 2010-2-16 22:40 编辑

刚作做的swf加密,完全用as3对原swf自我加密。
使用alchemy对原swf加壳,加壳方法非常简单。加密过程全部使用的c代码也就三行。
外层的无用代码应该还可以看到,"但内层swf源代码估计不会有人能破解了!
大家可以尝试反编译一下。不敢说无人能破,但我估计应该是很难破解的!"
前面的贴中as3加壳已很容易被“flash023”兄破解了,其实那只是as3加壳试验部分,本来应该注释掉的,
结果给大家造成误导...(我想要破解的是alchemy-C语言加壳部分(象征性的三行加壳代码,其实改成一行也可以))
现在重新制作加密文件(as3加壳部分去掉了,只剩下C加壳部分)。

提示:1.想要破解出去壳的C代码应该是不可能的。
2.我想到的方法是运行时save出alchemy解壳后的原始swf,是否可行请自行尝试
(如果asv可以导出alchemy编译的swc因该没问题,如果asv可以动态修改swf脚本并直接运行也应该是可以的,
如果以上两条有任意一条成立,则任何简单的swf加壳方法都是完全可以破解的,想要加密推荐混淆,或干脆使用HaXe或alchemy去写主要代码)
3.代码未作变量名替换,没有使用加密软件,加密的swf生成代码/内层swf源代码(*=待破解的变量名):
  1. var *= new TextField();
  2. *.text="请您破解";
  3. *.textColor=0xff0000;
  4. *.scaleX=*.scaleY=10;
  5. addChild(*);
复制代码
欢迎回复破解方法,思路。

问题已解决?经验:
我的加密方法(直接对原始.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兄:
不是写进去
因为你的壳子的所有类是暴露的,所以直接用你的类,再做一个加载器来加载你的SWF ,然后保存出 ...
flash023 发表于 2010-1-29 14:27

看来“混淆"才是加密的王道啊!
java,flash加密还是很难的.
想起了C语言,不要说反编译exe了,前几天在看某程序源码,其中一百多行的内嵌汇编写的,让我直接吐血了...

在下flash加解密方面的的的确确是一个实实在在的"新手未入门",是因为之前对其不是太感兴趣...代码注释是永远无法破译的...
然而真的要想加密也很简单:
只不过不喜欢这种加密方法.
附件未使用任何工具作加密,但任何破解在此时都是无意义的...大家反编译一下就明白了...

源代码:
  1. var *  = root.createEmptyMovieClip("*",1);
  2.         *._x=256;
  3.         *._y=256;
  4.         *.beginFill(0xFF0000);
  5.         *.moveTo(-256,-256);
  6.         *.lineTo(256,-256);
  7.         *.lineTo(256,256);
  8.         *.lineTo(-256,256);
  9.         *.endFill();
  10.                 *.onEnterFrame=function(){
  11.                         *._rotation+=10;
  12.                         new Color(*).setRGB(Math.floor(Math.random()*0xffffff));
  13.                 }
复制代码
希望大家继续多汇报一下反编译过程中遇到的情况!我比较想了解alchemy被反编译后能否重新正常编译出swf

补充:
这里的alchemy的加密方法对swf文件加密虽然被flash023破解了,但起码如果用于加密图片资源还是绝对有效的.
这里顺便show一下自己的最新的实验性3D引擎(代号Bengine)的雏形(无限bug版):http://flaswf.googlecode.com/files/Bengine.swf
Bengine详细介绍:http://flash.9ria.com/thread-44986-1-1.html
引擎demo中使用的5个贴图文件资源绝对是任何人无法通过反编译破译导出的。
破解此swf的具体操作过程(傻瓜教程):http://flash.9ria.com/thread-45137-1-1.html
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
flaswf.yo2.cn
bruce-lab.blogspot.com

天地人才库
  1.     public dynamic class MainTimeline extends MovieClip {

  2.         public var Bruce_Jawn_test

  3.         public function MainTimeline(){
  4.             addFrameScript(0, this.frame1);
  5.         }
  6.         function frame1(){
  7.             this.Bruce_Jawn_test = new TextField();
  8.             this.Bruce_Jawn_test.text = "请您破解";
  9.             this.Bruce_Jawn_test.textColor = 0xFF0000;
  10.             this.Bruce_Jawn_test.scaleX = (this.Bruce_Jawn_test.scaleY = 10);
  11.             addChild(this.Bruce_Jawn_test);
  12.         }

  13.     }
复制代码
是不是这个?
1

评分人数

Bruce_Jawn 赐本贴 银子 + 1  诏曰:

TOP

本帖最后由 Bruce_Jawn 于 2010-1-29 14:12 编辑

YES!
THANKS!
请说一下破解思路,方法软件?
好久不用破解软件了,现在的工具能导出swc或直接修改swf中的代码么(不妨碍swf运行前提下)?
另外,去壳代码估计应该看不到吧(虽然破解出原始swf不需要)?
flaswf.yo2.cn
bruce-lab.blogspot.com

TOP

好兄弟,讲义气!---by eko

踏上天地会荣耀之路!

 

申请舵主

加入掘金队

加入译林军

知识专题整理

 

咨询(QQ):

1442604479(小地)

 

还是和上一个帖子方法一样

用ASV直接可以查看到壳子的所有代码 ,其中  alchemy.loadBytes(this.out); 中的this.out 就是未加壳之前的原始SWF  的二进制   FileReference.save 把它保存成SWF  就是原始SWF

再用ASV看这个原始SWF  就看到代码了
1

评分人数

Bruce_Jawn 赐本贴 银子 + 1  诏曰:

TOP

本帖最后由 Bruce_Jawn 于 2010-1-29 14:25 编辑

非常感谢,
其实this.out正是经过alchemy去壳后的原始swf序列,
我想到的方法就是如此破解,只是具体操作不知如何进行。
“FileReference.save "可以用工具直接写入编译后的swf?
flaswf.yo2.cn
bruce-lab.blogspot.com

TOP

不是写进去
因为你的壳子的所有类是暴露的,所以直接用你的类,再做一个加载器来加载你的SWF ,然后保存出来


另外,楼主这种方法,可以直接用内存提取工具把原始的SWF取到。比如,吸血鬼就是干这个的
1

评分人数

Bruce_Jawn 赐本贴 银子 + 1  诏曰:

TOP

明白了,多谢!
flaswf.yo2.cn
bruce-lab.blogspot.com

TOP

flash023  是破解高手,不服不行啊

TOP

我不是破解高手哦
闪吧的 askforone   才是破解高手!

春叶飘零大虾无论加密和破解都是高手

TOP

本帖最后由 Bruce_Jawn 于 2010-1-29 16:13 编辑

flash023 能否把你写的"加载器+源文件"上传一下?还有一些东西不明白,也可以直接mail给我zhoubu1988@yahoo.com.cn
另外你使用什么工具?
flaswf.yo2.cn
bruce-lab.blogspot.com

TOP

抱歉,我放在桌面上已经删除了。
就是在你的壳子的类中把loadBytes这一行,改用save 方法

TOP

本帖最后由 Bruce_Jawn 于 2010-1-29 16:38 编辑

回复 11# flash023
先导出所有源文件再重新编译?这样好像行不通?我刚装的sothink还没完全导出源文件就crash了!已导出的编译也不通过!(大家也可以试一下!)

你是用什么工具?求解!

TOP

还是和上一个帖子方法一样

ASV直接可以查看到壳子的所有代码 ,其中  alchemy.loadBytes(this.out); 中 ...
flash023 发表于 2010-1-29 14:13



ASV啊

TOP

LZ要不试试看配合使用做Shader的Adobe Pixel Bender Toolkit,可以直接用汇编,目前好像几乎无可行性
正式开始疯狂学习

TOP

本帖最后由 Bruce_Jawn 于 2010-1-29 20:12 编辑

@asstarsa 其实对swf加密保护并不太在意,这个加壳试验是之前做alchemy读写bytearray
是突发奇想的玩意,与简单的as3加壳,区别是去壳代码可以完全保护。
现在为了速度,基本上都在用alchemy做flash,源C代码是无法通过反编译还原的,
能反编译出的代码可读性也几乎为零。
另外用pixelbender加解壳应该是行得通的(可以同样操作bytearray,没试过),加密的难度不在于此,而是难在终免不了还原的swf终究会暴露于内存中。

回复 13# flash023
Action Script Viewer? 好久不关注了,flash023 兄用的是什么版本?
是反编译出所有代码后,再修改代码重新编译?
能编译通过么?

TOP

返回列表