Java反編譯反混淆神器 - CFR


最近有大量jar包需要反編譯后使用,但是由於jar包中的類被混淆過了,直接反編譯以后的里面所有的變量都是一個名字。所以這里介紹一個反混淆神器:CRF。

不知道是不是官網的鏈接:http://www.benf.org/other/cfr/

我把這個神器上傳到了站里,大家可以隨意取用:https://files.cnblogs.com/files/somefuture/cfr-1.5.7z (站里不能上傳Jar文件,所以我壓縮了一下)

用法相當簡單,這是一個可執行jar包,把要反編譯的jar傳為參數即可。比如我要反編譯的jar是aaa-bbb.1.0.jar,所在位置是~/lib下面,則運行

java -jar cfr-1.5.jar ~/lib/aaa-bbb.1.0.jar

就能在控制台看到輸出了。

當然我們可以重定向到文件:

java -jar cfr-1.5.jar ~/lib/aaa-bbb.1.0.jar >> dec.txt

所有的類都是在同一個文件里,我也不知道有啥方法可以直接生成多個Java文件。

上面這樣運行后並沒有反混淆,里面的變量名字依然一樣。我們需要多加一個參數:

--renamedupmembers true

望文生義都能知道參數的意思是把重名的變量改個名:

java -jar cfr-1.5.jar ~/lib/aaa-bbb.1.0.jar --renamedupmembers true >> dec.txt

所以這樣就可以了。

接下來是最后一個問題:這樣反編譯的結果中,所有的中文都被轉為unicode了,如何解決呢?可以增加一個參數:

--hideutf false

參考:https://github.com/leibnitz27/cfr/issues/164


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM