CFR - another java decompiler批量反编译jar文件
jd-gui众所周知,业界公认的反编译必备工具。
笔者目前遇到一个java项目,社区版,想做一个本地化的版本,询问官方,官方说闭源,无奈之下只能反编译了。
面对那么多jar,jd-gui一个个去反编译保存,工作量的确很大。幸好在网上找到一个不错的工具
高能预警:jd-gui反编译的错误的,你敢不敢放到cfr来反编译试一试,保证有惊喜。
CFR - another java decompiler
特性:
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 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
只要你把这个文件保存下来,放到项目根目录,运行以后,每个目录中都会根据jar文件名生成一个目录,里面是反编译后的Java代码。
CFR - another java decompiler批量反编译jar文件的更多相关文章
- Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件
引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行 ...
- JAVA 如何反编译JAR文件
1 直接的jar文件可以用winrar解压,然后得到class文件,但是这里得到的class文件也是编译过的二进制文件,用传统的文本编辑器无法打开. 2 用XJad这个软件可以反编译Jar文件,直接找 ...
- Java Decompiler反编译Jar文件
1.重新编译已经打包的Jar包,使用 Java Decompiler 打开需要重新编译的jar包,找到自己需要自己修改的Class文件 ,修改之后电子保存文件 ,保存的时候编译工具自动将class文件 ...
- Java 批量反编译class文件,并保持目录结构
jad -o -r -d d:\src -s java C:\Users\spring\Desktop\egorder3.0\WEB-INF\classes\**\*.class -o - overw ...
- 批量反编译class文件
首先得进入jad的路径中,一般都放在jdk的安装目录的bin中 进入到该目录中,否则无法使用jad命令. jad -o -r -d F:\src -s java F:\classes\**\*.cla ...
- 【原创】Java批量反编译利器(jd-gui)介绍
Java反编译利器(jd-gui)介绍 当要做白盒测试或安全测试时,我们需要借助工具扫描被测代码,相信大家都遇到过没有源代码,而需要反编译的情形吧,也可能大家用过jad工具,我这里介绍下方便的工具jd ...
- 反编译Jar包
Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...
- IDEA—使用插件反编译jar包
关注微信公众号:CodingTechWork,一起学习进步. 引言 在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...
- Java 7 中的Switch 谈 Java版本更新和反编译知识
Java 7 中的Switch 谈 Java版本更新和反编译知识 学习编程,享受生活,大家好,我是追寻梦的飞飞.今天主要讲述的是Java7中的更新Switch实现内部原理和JAD反编 ...
随机推荐
- php 学习笔记 设计和管理
代码管理 文件路径.数据库名.密码禁止 hard coded 避免重复代码在多个页面复制粘贴 Gang of Four eXtreme Programming 的主要原则是坚决主张测试是项目成功的关键 ...
- JavaScript中的坑
内容:关于JavaScript中的一些蛋疼的问题以及面试笔试中常见的一些坑爹套路总结 此部分内容持续总结完善中... 1.undefined和null的区别 null: Null类型,代表空值,代表一 ...
- openStack虚拟机error 错误状态基于差异镜像+基镜像做恢复
- elk6.22
启动错误: 参考网站:https://blog.csdn.net/feinifi/article/details/73633235?utm_source=itdadao&utm_medium= ...
- CAD2010安装说明
1. 2. 3. 4. 5. . 提供算号服务(也就是付费才能获得的注册码)... 不会的可以问的撒....
- scala -- 传名参数
object Test{ def main(args: Array[String]): Unit = { def test(code : => Unit){// 传名参数 不计算函数值,而是把函 ...
- Windows 2008开启远程桌面连接
具体请看下面的截图. 最重要的就是要打开远程允许远程桌面的默认端口 3389 的入站规则,我第一次弄,这一端口没打开,折腾了很久!!! 第一.首先打开“服务器管理器”—“配置”—“高级安全Window ...
- date.getTime()
Date date = new Date(); System.out.println(date.getTime()); 输出结果是1210745780625 编译时间当时时间大概是2008年5.14好 ...
- springmvc后台生成验证码
url http://localhost:8080/admin/getCode http://localhost:8080/admin/checkCode controller package com ...
- Android通过DeepLink方式跳转其他App传递参数
网上对于安卓DeepLink方式跳转传递参数的例子较少,说的也不客观,实践之后发现还是有一些坑.其实为什么要用DeepLink方式跳转,有些是因为引流的原因,他们希望通过网页就能直接跳转到App的界面 ...