2014-02-26 132 views
0

在我最近的項目中,我們需要修改一些業務規則,但我們沒有源代碼。使用反編譯的java代碼

我把最新的生產部署的jar文件通過JD-gui打開。通過使用選項保存所有資源,我可以得到de編譯的java文件。現在我的問題是:

  1. 我看到反編譯的java代碼在每一行都有不必要的行註釋。有什麼方法可以避免它們?

  2. 如果我對某個文件進行了更改,然後重新編譯代碼並將jar發送到生產環境,會不會有任何隱藏的挑戰?

+3

由Java解壓器生成的代碼並不總是按原樣編譯。您最終可能花費大量的時間來修復編譯錯誤。 – assylias

+0

如果只是稍作修改才能使代碼編譯和工作,請考慮一下自己的幸運。 –

+0

不僅反編譯器輸出不總是編譯,但它不一定**正確**,即使它*編譯*。要非常小心地重新部署由反編譯器生成的代碼。在幾種情況下,JD-GUI可能會產生不正確的代碼。其他反編譯器可能會更好,但相信他們仍然在尋求麻煩。如果你必須走這條路線,至少要比較兩個或三個體面的反編譯器的輸出,並確保結果一致。我推薦Procyon,CFR和Krakatau。 –

回答

2

1.這取決於您使用的工具,大多數情況下您必須自行清理。
2.某些jar文件包含MD5校驗和,您必須刪除或更新校驗和才能使新的jar文件正常工作。

+0

3)反編譯不會產生完全相同的代碼。在少數情況下,我使用了一個反編譯器(不是你引用的那個),我已經看到了在重新編譯之前必須手動重寫一些代碼的情況, d想要在沒有進行完整的代碼審查的情況下成功往返投注業務。 – keshlam

+0

同意..有可能在變量名稱或東西..一些變形..但到目前爲止,我的反編譯代碼能夠編譯..沒有任何錯誤...我發現我只需要改變一個文件..我是想具體更改該文件...編譯它,然後替換原始jar中的單個文件...我希望它能工作.. – Apt