2011-06-19 119 views
0

我想混淆使用Rhino引擎的项目。它有许多脚本调用类的方法,我一直在困难的工作。
当它被混淆时,它会更改方法名称,从而使脚本对不存在的类方法进行调用。
问题是,为了安全起见,我可以让这些类不被混淆,但也有相当多的这些类,我宁愿将它们混淆。
有什么办法可以让这项工作?脚本引擎和混淆

+1

如果你不得不混淆(kind.ve一个失败的原因,但我离题),你需要混淆跨所有文件,而不仅仅是一个文件请求。 –

+0

换句话说,您需要通过对函数调用进行“硬编码”来抢占函数调用,并且/或者在JS函数范围内创建别名重命名函数的别名方法。 –

+0

别担心 - 没有人想要你的代码。 – duffymo

回答

1

你在使用什么混淆器?看起来你正在使用一个完全混淆的商业广告。

混淆两种工作模式:

1)总的混淆 - 这意味着,你需要混淆ALL的源文件。对于需要保持不变的内容(以便可以从外部脚本调用它),您需要使用混淆软件的“导出”或“外部”或“阻止”列表。你必须一个一个地做。关于这一点的好处是,如果你投入所有的代码,你没有任何你不想改变的东西(因为根据定义,没有外部代码

2)文件混淆 - 这意味着混淆器只会更改局部变量名称并优化语句,但不会更改面向公众的名称。因此,你的“外部脚本”将继续工作。大多数minifier在此模式下工作,但混淆值非常有限。

你必须从这两种模式中选择。它们大致对应于Closure Compiler的简单和高级模式。

如果您需要对代码进行混淆以防止逆向工程,那么您必须使用完全混淆,在这种情况下,您只需执行大量工作来防止更改不需要的名称,或者如我所说,抛出在你所有的代码中。