2011-06-19 201 views
0

我想混淆使用Rhino引擎的項目。它有許多腳本調用類的方法,我一直在困難的工作。
當它被混淆時,它會更改方法名稱,從而使腳本對不存在的類方法進行調用。
問題是,爲了安全起見,我可以讓這些類不被混淆,但也有相當多的這些類,我寧願將它們混淆。
有什麼辦法可以讓這項工作?腳本引擎和混淆

+1

如果你不得不混淆(kind.ve一個失敗的原因,但我離題),你需要混淆跨所有文件,而不僅僅是一個文件請求。 –

+0

換句話說,您需要通過對函數調用進行「硬編碼」來搶佔函數調用,並且/或者在JS函數範圍內創建別名重命名函數的別名方法。 –

+0

別擔心 - 沒有人想要你的代碼。 – duffymo

回答

1

你在使用什麼混淆器?看起來你正在使用一個完全混淆的商業廣告。

混淆兩種工作模式:

1)總的混淆 - 這意味着,你需要混淆ALL的源文件。對於需要保持不變的內容(以便可以從外部腳本調用它),您需要使用混淆軟件的「導出」或「外部」或「阻止」列表。你必須一個一個地做。關於這一點的好處是,如果你投入所有的代碼,你沒有任何你不想改變的東西(因爲根據定義,沒有外部代碼

2)文件混淆 - 這意味着混淆器只會更改局部變量名稱並優化語句,但不會更改面向公衆的名稱。因此,你的「外部腳本」將繼續工作。大多數minifier在此模式下工作,但混淆值非常有限。

你必須從這兩種模式中選擇。它們大致對應於Closure Compiler的簡單和高級模式。

如果您需要對代碼進行混淆以防止逆向工程,那麼您必須使用完全混淆,在這種情況下,您只需執行大量工作來防止更改不需要的名稱,或者如我所說,拋出在你所有的代碼中。