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反编 ...
随机推荐
- Java 中的 JVM、堆和栈 -- 初步了解
JVM -- Java Virtual Machine(Java虚拟机) —— 因为要说堆和栈,所以我们必须要先简单的说一下JVM.(JVM详细请找度娘啦~) 首先,我们都知道 java 一直宣传的口 ...
- mysql Date查询当天、本周,本月,上一个月的数据
出自:http://www.cnblogs.com/benefitworld/p/5832897.html 今天 select * from 表名 where to_days(时间字段名) = t ...
- ORM Nhibernate框架在项目中的配置
在项目中使用 Nhibernet 时,一定要将 配置文件 .xml 编译方式设置为 嵌入式资源,否则在运行项目时就会出现错误. 以下是hibernate.cfg.xml 的配置,在配置中使用的是 M ...
- jsp 传多个值给后端
页面上是这样 http://localhost:8080/smartcloset/getClothByCategory/1/11 直接用/分 后台是这样取的 @RequestMapping(valu ...
- left join 如何增加where条件(在on的后面),这很重要
SELECT [学号], [姓名],[备注2],[年级],专业,[学院],[x30] FROM [总表] left join k指标体系 on 学号 = x01 where 年级='2014'
- SpringMvc 获取ApplicationContext
有时,我们不通过Controller层进入Service层,比如同步数据,任务,以及文件上传共通Handler对文件处理后保存数据等都会由一个非Controller类调用Service. 这时候如果n ...
- UI5-文档-导航栏
UI5-文档-1-前言 UI5-文档-2-开发环境 UI5-文档-2.1-使用OpenUI5开发应用 UI5-文档-2.2-使用SAP Web IDE开发应用程序 UI5-文档-2.3-使用SAPUI ...
- C#怎么判断字符是不是汉字
.用ASCII码判断 在 ASCII码表中,英文的范围是0-,而汉字则是大于127,根据这个范围可以判断,具体代码如下: string text = "我去"; bool res ...
- python 文件移动
python实现文件移动: import shutil shutil.move("original_path", "new_folder") # move fi ...
- ECLIPSE修改xml配置文件TOMCAT不生效的解决
昨天和今天一直想研究一下SSH的项目,但把项目导入ECLIPSE后配置数据库时发现无论如何修改配置文件,TOMCAT上的文件还是旧文件,从未变过. 感觉很神奇也很崩溃,重启ECLIPSE,CLEAN, ...