最近有大量jar包需要反编译后使用,但是由于jar包中的类被混淆过了,直接反编译以后的里面所有的变量都是一个名字。所以这里介绍一个反混淆神器:CRF。

用法相当简单,这是一个可执行jar包,把要反编译的jar传为参数即可。比如我要反编译的jar是aaa-bbb.1.0.jar,所在位置是~/lib下面,则运行

java -jar cfr-1.5.jar ~/lib/aaa-bbb.1.0.jar

就能在控制台看到输出了。

当然我们可以重定向到文件:

java -jar cfr-1.5.jar ~/lib/aaa-bbb.1.0.jar >> dec.txt

所有的类都是在同一个文件里,我也不知道有啥方法可以直接生成多个Java文件。

上面这样运行后并没有反混淆,里面的变量名字依然一样。我们需要多加一个参数:

--renamedupmembers true

望文生义都能知道参数的意思是把重名的变量改个名:

java -jar cfr-1.5.jar ~/lib/aaa-bbb.1.0.jar --renamedupmembers true >> dec.txt

所以这样就可以了。

接下来是最后一个问题:这样反编译的结果中,所有的中文都被转为unicode了,如何解决呢?可以增加一个参数:

--hideutf false

java反编译 混淆_Java反编译反混淆神器 - CFR相关推荐

  1. java 源码分析_Java 源代码编译成 Class 文件的过程分析

    原标题:Java 源代码编译成 Class 文件的过程分析 在上篇文章< Java三种编译方式:前端编译 JIT编译 AOT编译 >中了解到了它们各有什么优点和缺点,以及前端编译+JIT编 ...

  2. java编译机制_java的编译机制

    我们通常写的文件都是java文件,最后要在JVM上运行则需要将java文件编译成class(二进制文件). 各厂商在实现JDK时通常会符合java语言规范的源码编译为class文件的编译器.编译器的好 ...

  3. java 匹配反斜杠_java正则表达式的反斜杠(\)匹配

    源文:http://chz2002.diandian.com/post/2012-05-24/19803797 java中匹配正则表达式匹配反斜杠要用""两个反斜杠就要用" ...

  4. java获取系统斜线_java从含反斜线路径截取文件名

    例如:获取到的文件路径为C:/Documents and Settings/Leeo/My Documents/logo.gif      现在想要取得图片的名称logo.gif,我们知道反斜杠&qu ...

  5. java是解释型_Java 是编译型还是解释型?

    Java 是编译型还是解释型? Java既不属于传统的编译型语言,也不属于解释型语言,Java是先编译成".class"字节码文件,然后再利用JVM虚拟机进行解释执行的,所以Jav ...

  6. java编译源文件_Java实现编译源文件(Java源码)

    代码案例: import java.util.ArrayList; import java.util.List; import javax.tools.DiagnosticCollector; imp ...

  7. java代码编译过程_Java代码编译和执行的整个过程

    一.简述 Java代码编译和执行的整个过程包含了三个重要的机制:①Java源码编译机制:②类加载机制:③类执行机制 二.Java源码编译机制 Java代码编译是由Javac编译器来完成,流程如图: J ...

  8. Java代码混淆案例(附反编译工具)

       我们开发的软件上线后,经常会遇到核心代码不希望给别人抄袭,但系统是用Java开发的,又无法避免被反编译的情况,这样可以用代码混淆的方式来解决. 一.编译 顾名思义,就是将我们写的代码运行一遍,然 ...

  9. java 反编译项目_Java 7 –反编译项目硬币

    java 反编译项目 大家好,该是从2012年开始写作的时候了.正如您在其他博客中可能已经看到的那样,有一些更改可以使您使用Java编程时的开发人员生活变得更加轻松:Diamond运算符,Switch ...

  10. java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...

    我之前推送过Java代码的编译与反编译,其中简单的介绍了Java编译与反编译相关的知识,最近给GitChat写<深入分析Java语法糖>的时候,又用到了很多反编译相关的知识,遂发现哪篇文章 ...

最新文章

  1. python没有上方工具栏_Python体验(08)-图形界面之工具栏和状态栏
  2. 我该建数仓、大数据平台还是数据中台?看完脑子终于清醒了
  3. Redis中的可用性保证之Sentinel的Ratf 算法
  4. HALCON示例程序color_simple.hdev在HSV空间筛选黄色线
  5. Unity3D学习笔记之九为场景添加细节(二)
  6. 网络数据采集(AngleSharp)-使用AngleSharp做html解析
  7. 计算机的硬件发展趋势为,高性能计算机的发展趋势
  8. 详述 hosts 文件的作用及修改 hosts 文件的方法
  9. 大数据分析技术有哪些应用步骤
  10. 什么是 GPL GNU,自由软件
  11. 【愚公系列】2022年02月 攻防世界-进阶题-MISC-86(picture2)
  12. 小学计算机房荷载,资深暖通设计师总结的常用参数参考值,新手们都说感谢大神支招...
  13. 2019 春季算法工程师实习生招聘历程
  14. linux shutdown关不了机
  15. Hadoop性能测试工具
  16. vlog拍摄与剪辑入门之路
  17. 基于Spring Boot的校园志愿者服务网站
  18. python投票系统项目ppt_python fastApi实战项目 - 爱投票管理系统(一)
  19. windows10怎么配置二个或多个JDK版本_详细图解
  20. Salome_meca2019安装教程

热门文章

  1. react 表单设计器_神器:让你相见恨晚的5个React应用程序库
  2. java 809 128 题_java编程题809*??=800*??+9*??+1
  3. rest风格使用两个变量_SpringBoot2.x系列教程|构建RESTful风格的API接口
  4. java ole excel_Java 添加OLE对象到Excel文档
  5. CMU 15-213 Introduction to Computer Systems学习笔记(5) Machine-Level Programming-Control
  6. android多音字排序,再谈Contacts中姓氏多音字排序错误问题
  7. iOS:segment对齐原则
  8. 【题解】守望者的逃离
  9. 面试总结——Java篇
  10. 【解决办法】C++2015安装不上,说是要安装Windows6.1-KB2999226-x64.msu这个补丁,下载下来怎么安装!...