java批量反编译——CFR

两盒软妹~` 提交于 2019-12-17 10:27:13

CFR - another java decompiler
支持主流java特性-java 8 lambdas表达式,java7字符串切换,可以反编译类的注解,jd-gui无法反编译的 ,cfr却游刃有余。

使用方法比较简单,如下:

java -jar cfr_0_121.jar test.jar --outputdir c:/test
运行以上命令就可以把反编译后的test.jar代码保存到c:/test

笔者想要本地化的软件目录结构如下

└─proj
├─actions
│ └─aaa.jar
├─drawing.jar
├─favs.jar
├─feeders.jar
├─imex.jar
├─impl.jar
├─language.jar
├─option.jar
├─resources.jar
├─runtime.jar
├─test.jar
├─treelist.jar
└─view
├─editor.jar
├─progress.jar
└─startup.jar

上面的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 正在反编译 %%~ni...
        title 正在反编译 %%i...
        java -jar D:\develop\java逆向\cfr_0_122.jar "%%i" --caseinsensitivefs true  --outputdir "%%~di%%~pi%%~ni"
        echo ----%%i已经翻反编译---
    )
    goto :end 
) else (
    title 正在反编译 %1...
    java -jar D:\develop\java逆向\cfr_0_122.jar %1 --caseinsensitivefs true  --outputdir "%~d1%~p1%~n1"
    echo 反编译完成.
    goto :end
)

echo 反编译完成.
@pause>nul

:end
pause
exit

注意把代码中CFR的目录更换为你自己的目录,只要你把这个文件保存下来,放到项目根目录,运行以后,每个目录中都会根据jar文件名生成一个目录,里面是反编译后的Java代码。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!