jd-gui众所周知,业界公认的反编译必备工具。
笔者目前遇到一个java项目,社区版,想做一个本地化的版本,询问官方,官方说闭源,无奈之下只能反编译了。
面对那么多jar,jd-gui一个个去反编译保存,工作量的确很大。幸好在网上找到一个不错的工具
高能预警:jd-gui反编译的错误的,你敢不敢放到cfr来反编译试一试,保证有惊喜。
http://www.benf.org/other/cfr/
使用方法:
java -jar cfr-0.145.jar InteractiveFrame_common.jar --outputdir d:/test
运行以上命令就可以把反编译后的InteractiveFrame_commonv.jar代码保存到d:/test
上面的jar如果用jd-gui手工反编译工作量很大,如果项目庞大,每次反编译将耽误好多时间。
于是笔者写了一个批处理decompile.bat,可以用于批量反编译,代码如下:
可以把需要单独需要反编译的jar拖拽到批处理文件上,默认情况下反编译当前目录及其子目录的所有jar
@echo off
color 17
if "%1" == "" (
for /f "delims=" %%i in ('dir /s /b /a-d /o-s *.jar') do (
echo Decompiling %%~ni...
title Decompiling %%i...
java -jar F:\test\cfr-0.145.jar "%%i" --caseinsensitivefs true --outputdir "%%~di%%~pi%%~ni"
echo ----%%iAlready reversed compilation---
)
goto :end
) else (
title Decompiling %1...
java -jar F:\test\cfr-0.145.jar %1 --caseinsensitivefs true --outputdir "%~d1%~p1%~n1"
echo Decompilation completed.
goto :end
)
echo Decompilation completed.
@pause>nul
:end
pause
exit
只要你把这个文件保存下来,放到项目根目录,运行以后,每个目录中都会根据jar文件名生成一个目录,里面是反编译后的Java代码
本人实际测试了了下,如图红色是反编译后的结果: