如何防止SWF文件被反编译
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-14
法没有什么错误。
使播放器从句子中间开始读数据
让我们开始讨论“是播放器从句子中间读数据”的破坏反编译器的技术。
首先,我举一个现实世界的例子:
John says good morning. ????Mary says thank you. ????现在生成SWF文件: skip 9 words ????Tom says John says good morning. ????skip 3 words ????back 7 wordsMary says thank you. ????如果逐个字读的话,结果和原来一样,然而反编译器按句子来读取,自然发生错误。第一,它知道Tom说了什么,但语法不对,汇报出错;第二,它没有看到第二个“skip”命令,因为它处于句子中间;第三,当它被迫退回7个字后,感到迷惑,认为应该从“Tom said”开始执行整个句子;第四,这个错误使它在第二行和第三行之间陷入无限循环之中。 总之,我们增加了“Tom said”这句垃圾代码,并提供整个句子长度的错误数据大小信息。这个错误的长度覆盖了“skip”命令。 来看个真实的例子,请注意,这些技术需要操作字节码,纯actionscript不能够实现。 例1 : 向前跳转的包含无效尺寸数据的死代码。 push True ????branchifTrue label2 ????constants ''''label2:push ''a'',3setVariable ????你仔细看的话,会发现"constants ''''"这行是垃圾代码,它不可能被执行到。然而,理论上,当第二行的结果为"not True"时,它将被执行。因此,反编译器尝试对它进行反编译。 让我们来增大"0x88 - constants"后面的"sentence size",从而包括知道脚本结尾的所有字节。你知道,反编译器将把字节码砍成像这样的3个句子: push True ????branchifTrue label2 ????constants label2: push ''a'',3 setVariable ????如果你试图反编译此SWF文件,根据我前面提到的4个错误,一些反编译器将碰壁。仍旧有些反编译器幸存,但只是显示:"if(false){};"。ASV 3也不能显示此脚本,但是ASV 4能够显示。为了破解这个SWF,我们移除死代码"constant xxxx", (0x88和随后两个字节),然后所有的东西都得到反编译。 这儿是zip格式的文件,将详细解释怎样制作这样的受保护文件。 例2: 先后跳转的包含无效尺寸数据的死代码。 ????push ''b'' ????label1: ????push ''a'',3 ????setVariable ????branch label2 ????branch label1 ????label2:push ''b''是句垃圾代码,我们将修改它,用来使ASV 4碰壁。让我们来修改push ''b''的"length of sentence"。修改"0x96"后面的2个字节的数据,使句子的长度增长到分支Label1之前。这样,反编译器将把字节码作为3个句子: ????push label1: push ''a'',3 setVariable branch label2 ????branch label1 ????label2: ????现在,反编译器不知道将把什么压入堆栈,同样它将在第一个句子和第二个句子之间形成死循环。这种技术将使大部分反编译器碰壁。Flasm、ASV 4同样也无效。为了破解这个SWF,我们手工删除"push b" (0x96和后随的2个字节),这样所有的东西都可反编译了。 当这个技术流传后,burakk将修改ASV 4,使它能正确处理死循环。这样下个版本的ASV就可对付这种技术了。 这儿是zip格式的文件,将详细解释怎样制作这样的受保护文件 ????非显示字符和混淆器 除了阻碍反编译器的技术之外,我们还可以使反编译的结果不容易读。你可以浏览关于混淆器的网站。 基本上,它是对变量和函数的名字进行重命名。 function -3(-4){trace(-4);} ????function -1(0,-2){ ???? if(0<-2){-3(1);} ????} 肯定的是,偷窃者不能仅仅是拷贝、粘贴就能使用这些代码。编译器不允许你对一个函数进行这样的命名。 混淆器的局限是改变函数的名字可能给下面的脚本代码带来麻烦。 function myFun(){trace("myFun");} ????a="my"; ????b="Fun"; ????this[a+b](); 另一个技术是使函数的名字不可显示。比如,用汉字作为函数名,反编译器可能就会不能很 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于如何防止SWF文件被反编译的所有评论