修改jar包中的class文件

需求及準備

需求

現在有一個.jar文件,要修改其中某個文件的代碼。

準備

  • 確保JRE已安裝且環境變量已配置。

  • 安裝Java Decompiler。官方地址爲:

    http://java-decompiler.github.io/

    選擇其中的JD-GUI進行下載。

  • 安裝winrar。

提取class內容並修改

打開JD-GUI,將.jar拖進來。JD-GUI會將jar包反編譯爲java源碼。
在JD-GUI中可以看到反編譯源碼,但不能直接修改。找到要修改的文件,複製。
創建一個與.class同名的空白.java文件(爲了後續生成.class不衝突,建議放在一個單獨目錄下),將複製的內容粘貼到該文件中。對其代碼進行修改。

編譯

打開CMD,定位到上面創建的.java所在目錄下,輸入:

javac xxx.java

編譯後,會生成同名的.class文件。
注意此方式只能編譯不依賴其他模塊的.java文件。對於依賴其他模塊的,需要分析並定位.class的虛擬機代碼後,創建java工程引入jclasslib修改。可以參考修改jar中的class:殺戮尖塔修改教程

替換jar中class文件

替換jar中class有兩種方式:

  1. 藉助rar直接替換。
  2. 解壓jar爲文件夾,替換class後重新打包爲jar。

藉助winrar直接替換

使用winrar直接打開.jar文件,進入指定目錄後,將剛纔編譯生成的class直接拖進來替換即可。

解壓jar爲文件夾,替換class後重新打包爲jar

使用winrar將.jar文件解壓爲文件夾,然後替換class。
設該文件夾名稱爲xxx。打開CMD並定位到該文件夾所在目錄下,輸入:

jar cvfm xxx.jar xxx\META-INF\MANIFEST.MF -C xxx /

其含義爲:使用xxx\META-INF\MANIFEST.MF作爲配置文件,並調用-C切換路徑爲xxx文件夾下。然後打包出.jar文件。
注意-C xxx /最後的文件夾名稱xxx與/之間有個空格,不可省略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章