java 反编译 批量_CFR - another java decompiler批量反编译jar文件

jd-gui众所周知,业界公认的反编译必备工具。

笔者目前遇到一个java项目,社区版,想做一个本地化的版本,询问官方,官方说闭源,无奈之下只能反编译了。

面对那么多jar,jd-gui一个个去反编译保存,工作量的确很大。幸好在网上找到一个不错的工具

高能预警:jd-gui反编译的错误的,你敢不敢放到cfr来反编译试一试,保证有惊喜。

特性:

CFR will decompile modern Java features - Java 8 lambdas (pre and post Java beta 103 changes),

Java 7 String switches etc, but is written entirely in Java 6.

支持主流java特性-java 8 lambdas表达式,java7字符串切换,最主要的他是用java6编写,这个就有点厉害了。

笔者还发现,他可以反编译类的注解,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 offcolor17

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值