java decompiler Fernflower java 反編譯 Fernflower

網上搜了不少反編譯工具都一一試過,有不少反編譯出來都是缺斤少兩或者各類報錯, 最後仍是以爲Fernflower最好用。java

順便附上在線反編譯的一個網站: http://www.javadecompilers.comgit

 

目的:將war包反編譯拿到源碼後並將項目運行起來, 在原有的基礎上修改代碼, 再次打成war包github

 

Fernflower的gitHub : https://github.com/addiction/fernfloweride

做爲一個菜鳥, 雖然找到了這個反編譯工具, 可是看着ReadMe.md的命令行, 殊不知道怎麼用。工具

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

忽然看到了build.grandle   靈光一現。 grandle這個構建工具我仍是據說過的。 這個項目既然是用grandle構建的 , 見readMe中的命令行gradle

又是執行jar包進行反編譯操做,那必定是用grandle將這個項目打成jar包以後再使用。話很少說, 先去學學grandle打包再說, 因而就跑去網站

google了grandle的教程。安裝完gradle, 發現要配置gradle的配置文件:build.gradle, 配置好以後, 執行gradle build便可(fernflow這個項目已經配置好了,直接運行構建就會生成jar包).ui

 

執行gradlegoogle

構建完以後在fernflower中找build文件夾下的jar文件.: \fernflower-master\build\libs\fernflower.jaridea

 

接着將全部的class文件打成zip包.  執行以下命令: 

javar -jar ./fernflower.jar  ./source.zip ./source

./source是壓縮後的待反編譯的class的zip包, ./source當前目錄下的一個文件夾, 反編譯完成以後, 會將反編譯過的java文件的zip壓縮包輸出到source文件夾

 

 

反編譯就完成啦

反編譯的命令參數有不少, 具體能夠看github上的readMe.md

 

不過在項目運行的時候還遇到了報錯, 緣由是變量名的衝突, 反編譯過來的變量名有不少是相同的名字, 實際上確實不一樣兩個變量, 還有就是泛型沒有編譯出來, 直接省略了. 

泛型的問題. 我直接在jetbrains idea中雙擊對應的class文件反編譯過來的內容是有泛型的....而後將正確的泛型複製過去.  這就奇了怪了,   idea用的也是fernflower反編譯的

我也是用fernflower反編譯的.  編譯出來的內容確實有出入的.   多是參數不一樣吧

相關文章
相關標籤/搜索