簡體   English   中英

在jar中為某些類附加源

[英]Attaching source for some classes in a jar

對於我們的項目,我們正在進行逆向工程。 為此,我們必須調試第三方jar。

我嘗試用DJ,JAD反編譯該jar,但輸出是帶有編譯時錯誤的源代碼(例如,方法原型中的返回類型為boolean,但返回int,為循環中斷等)。

現在,在這個損壞的源代碼中,有幾個.java文件,我想調試。 我想在jar中附加這幾個文件的源代碼和相應的類。

我用谷歌搜索,但沒有發現任何有用的東西。 ????

阻止程序是反編譯器很可能無法使用正確的行號重寫源文件。 因此,即使已編譯的庫具有適當的行號信息,也不能使用開箱即用的反編譯輸出。

您可以在方法中設置斷點(只要編譯的類文件中有行號信息),即使沒有源代碼也是如此。 您甚至可以讀取局部變量的值(同樣,如果已經使用調試信息編譯了類),但是您必須查看反編譯器輸出並希望最好,反編譯方法足夠接近真實的代碼。

這不是不可能,但需要一些“手動”工作。

要在java代碼中附加類的源代碼:

  • 右鍵單擊所需的類

  • 轉到公開聲明[F3]
    類文件編輯器將打開單擊Attach Source按鈕

  • 瀏覽具有源代碼的jar

  • 單擊<確定>
    完成上述步驟后,打開聲明將打開具有源代碼的.class文件。

您沒有提到您用於調試的IDE。 如果嘗試調試僅在類窗體中可用的類,Eclipse會詢問源代碼。 主要問題是Andreas_D已經提到了不匹配的行號。

我會嘗試以下方法。

  1. 刪除尚未在工作狀態下反編譯的所有反編譯的java文件。
  2. 嘗試使用classpath中的原始JAR編譯每個可反編譯的Java文件。 這允許您使用正確的行信息生成新的類文件以進行調試。
  3. 現在用您已成功重新編譯的文件替換JAR文件中的類文件。 還添加Java文件。 您的調試IDE應該自動識別源文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM