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

不知道是不是官网的链接:http://www.benf.org/other/cfr/

我把这个神器上传到了站里,大家可以随意取用:https://files.cnblogs.com/files/somefuture/cfr-1.5.7z (站里不能上传Jar文件,所以我压缩了一下)

用法相当简单,这是一个可执行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

参考:https://github.com/leibnitz27/cfr/issues/164

最新文章

  1. Android中Context的理解及使用(一)——Context的作用
  2. 利用js2image把代码压缩成圣诞树
  3. GIF
  4. SC.UI
  5. jQuery学习记录1
  6. c++builder 重载WindowProc、WndProc 截获消息
  7. html+css--水平居中总结-不定宽块状元素方法(三)
  8. Fragment 总结
  9. python(3)-lambda表达式
  10. 用JavaScript获取页面上被选中的文字的技巧
  11. Js之History对象
  12. [置顶] Android框架攻击之Fragment注入
  13. iOS使用自定义字体的方法(内置和任意下载ttf\otf\ttc字体文件)
  14. Python学习入门基础教程(learning Python)--2.3.3Python函数型参详解
  15. 运算符(C# 参考)
  16. Map Task内部实现分析
  17. REST(Representational state transfer)的四个级别以及HATEOAS介绍
  18. JavaScript遍历对象中所有元素
  19. LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏。
  20. [动态差分+二维前缀和][小a的轰炸游戏]

热门文章

  1. System.out.println();快捷键
  2. JAVA_数据类型介绍与基本数据类型之间的运算规则
  3. 题解-MtOI2019 幽灵乐团
  4. 题解-洛谷P4724 【模板】三维凸包
  5. 题解-[NOI2005]瑰丽华尔兹
  6. sort by背后使用了什么排序算法
  7. 廖雪峰官网学习js 数据类型和变量
  8. Zepto入门
  9. numpy和pandas-数据分析模块
  10. NET 单点登录原理