2011-06-30 61 views
1

我正在尋找一個支持maven-plugin的java混淆器?我們嘗試使用ProGuard,但遇到了一些運行時問題,如果不進行混淆處理,這些問題不會發生。有沒有其他的混淆器。支持maven插件的java混淆器

回答

4

由於ProGuard的類似於大多數其他Java模糊處理(至少我熟悉的那些)的方式工作,它很可能你會遇到類似的問題。 (事實上​​,ProGuard會採用它來發射符合字節碼的方法,而另外一些混淆器則傳聞這種方法不那麼警惕。)

你有什麼樣的問題?通常,使用混淆的問題與名稱混淆有關 - 遇到其他庫無法找到公共類/方法/字段或使用反射的問題時出現問題。這通常是可以解決的,因爲要非常小心哪些類名稱和方法名稱可以被修改。

我用Java項目混淆最後一次,我們是相當保守的什麼被混淆。我們將我們想要混淆的類放入其原始包的子包中,我們只對.internal進行混淆。。我們發現這比試圖確定什麼不是混淆更有用。

與模糊處理的另一個問題是他們的最優化。儘管我沒有看到ProGuard中的優化問題,但這絕對不是不可能的。無論如何,我都會關閉它,原因如下:首先,當您爲客戶收到(混淆)的堆棧跟蹤時,很難將名稱取消擴展以確定發生了什麼問題。如果您的混淆器已經優化了任何內容,那麼堆棧跟蹤可能沒有意義。其次,這是不必要的:在JVM是非常,在優化字節代碼非常好,這與(潛在從而使情況變得更糟。)干擾

0

幾年前,我有類似的問題,比你。 如果我沒記錯的話ProGuard錯誤地優化了短私人方法: 它在內聯期間確實消除了方法的「同步」按鍵效果。

我們固定通過使用ProGuard的-dontoptimize選擇這個問題。