2009-09-03 136 views
5

我們將混淆我們的項目,但不想失去遠程調試和熱門程序的能力。調試java混淆代碼

可能嗎?哪些工具可以處理此問題?我會很滿意簡單的混淆 - 只需重命名類/方法/變量。

[已編輯]我們使用Intellij IDEA,但無法找到任何此任務的插件。

回答

5

我們有同樣的需求(簡單混淆,需要稍後調試) ,我們使用ProGuard。這是一個Java應用程序,可以集成到Ant任務中。

它可以做很多事情,但它也是完全可調的。所以你可以保持簡單的混淆。其中一個選項是生成一個「符號對應表」,它允許您從混淆的表中檢索非obfucated代碼。 (它跟蹤類qksdnqd中的變量xyz實際上是類MeaningfulClassName中的myCuteVarName)

編輯:混淆可能會非常棘手。一些示例:

  • 您不能更改主要方法的名稱。
  • 你使用類加載器嗎?它可以在混淆之後仍然檢索這個類嗎?
  • 你的ORM映射怎麼樣?你的Spring上下文? (如果有的話)

EDIT2: 您還可以看到:

+0

是的,我知道SC表。但是我和我的團隊不是那些能夠輕鬆地調試和更改混淆代碼甚至是使用表格的專家:)所以我只是在尋找一種工具,它可以讓我透明地調試代碼。 – Vitaly 2009-09-03 15:31:52

+0

你不必成爲古茹,你提供的表格和混淆的jar到應用程序,並且它們變得可讀(減去評論)。 啊......但我不認爲你可以用這個過程「熱切換」(這是刪除和替換所有的罐子) – 2009-09-04 09:01:44

+0

可能是我不明白的東西。我能夠「一步一步」遠程調試混淆代碼並在某種調試器中同時查看「正常」代碼(沒有任何其他操作,如查看錶,啓動其他應用程序等)? – Vitaly 2009-09-06 07:11:37

0

SD Java Obfuscator。它刪除註釋和空白,並重命名所有不公開的成員/方法/類名稱。

它還爲您提供了代碼如何被模糊處理的映射,例如,針對每個符號FOO模糊化爲XYZ,映射FOO-> XYZ。這意味着如果您獲得了XYZ的回溯,您可以輕鬆確定原始符號FOO。當然,因爲只有你(做混淆的人)擁有這張地圖,只有你可以做到這一點。