Flash actionscript DoABC标记中的奇怪方法
在测试我自己的DoABC标记解析器(Actionscript字节码)实现时,我遇到了一个swf文件,其中有一些奇怪的东西。有一种使用字节码的方法几乎没有意义(甚至是没有定义的操作码!) 我还发现了一些具有这种方法的swf文件。奇怪的是,这个方法似乎总是相同的长度,并且总是最后定义的一个,但是字节码因文件而异。但是,swf文件似乎不受此方法的任何影响,因为它工作正常。我想也许这个方法没有被调用,但我现在无法验证 有人知道这种方法的目的是什么吗?Flash actionscript DoABC标记中的奇怪方法,flash,actionscript-3,bytecode,Flash,Actionscript 3,Bytecode,在测试我自己的DoABC标记解析器(Actionscript字节码)实现时,我遇到了一个swf文件,其中有一些奇怪的东西。有一种使用字节码的方法几乎没有意义(甚至是没有定义的操作码!) 我还发现了一些具有这种方法的swf文件。奇怪的是,这个方法似乎总是相同的长度,并且总是最后定义的一个,但是字节码因文件而异。但是,swf文件似乎不受此方法的任何影响,因为它工作正常。我想也许这个方法没有被调用,但我现在无法验证 有人知道这种方法的目的是什么吗? 这里有一个这样的文件供参考:Trillix在此swf
这里有一个这样的文件供参考:Trillix在此swf上显示“内存不足”消息,并且不显示反编译的ActionScript。我猜这个方法是针对反编译器的保护措施(可能不是唯一的方法)。这个swf有一些非常奇怪的东西,我很确定它已经被混淆了。 例如,它出现在每个方法的开头:
#1 pushbyte byteValue: 37
#2 pushbyte byteValue: 34
#3 ifne reference: #6
反编译成
if(37 != 34)
至于你找到的方法,它看起来像是充满了胡言乱语。没有对它的引用,因此验证器甚至不会查看代码。这绝对是一种阻止减压的好方法
我用自己的应用程序进行了检查: