什么情况下动态符号不能被混淆?

时间:2015-05-19 18:45:09

标签: actionscript-3 obfuscation

所有混淆器都会说它们不能混淆动态变量,类等,因为它可能会导致错误。据我所知,动态符号就是这样的符号 被编程为在运行时添加或删除属性,这些属性在编译时可能不存在。

如果我对编译前的时间进行模糊处理,那么首先只是区分命名符号的方式不同,从而不应该引起任何问题?

1 个答案:

答案 0 :(得分:0)

某些代码可以使用字符串(例如,从资源文件中读取的字符串)引用变量/类型(符号) - 例如通过反射。您找到的混淆器可能无法检测到字符串引用符号的时间 - 它可能重命名符号,其名称显示在字符串中 - 并且在混淆之后,代码将被破坏,因为该字符串将引用已重命名的符号

如果混淆器模糊了帧标签但没有使用新名称(或SWF中的资源文件)更新字符串,这也会导致错误 - 代码可能会从XML资源加载旧名称,但时间轴不会再也没有旧标签了。

这些是通过混淆来破坏代码的简单方法,但还有更多。这就是大多数混淆器产品具有“忽略列表”的原因 - 在混淆期间要忽略的符号名称(或正则表达式)列表。在大型项目中,维护忽略列表可能非常不方便,因为需要记住包含在混淆后可能会中断的所有符号。