资讯专栏INFORMATION COLUMN

反编译工具jad的使用

chaos_G / 1655人阅读

摘要:怎样去用如果要简单的反编译一个文件的话,用以下命令这个命令在当前文件夹下创建了一个文件如果文件已经存在的话,会提示你是否要覆盖这个文件。

安装

解压缩jad.zip包,并把它放在你硬盘的某个目录下。将会创建两个文件 jad.exereadme.txt文件,不需要其他的安装文件。

怎样去用jad

如果要简单的反编译一个.class文件的话,用以下命令 jad example1.class这个命 令在当前文件夹下创建了一个 example1.jad 文件如果 jad 文件已经存在的话,会提示你是否要覆盖这个jad文件 。

-o 允许你直接覆盖掉以前存在的jad文件
-s 允许你改变输出文件的扩展类型

如下所示将输出文件类型变成 *.java
jad -sjava example1.class
这个命令创建了一个example1.java文件
要注意的是连用-o,-s命令,可能会将你自己的源文件也覆盖掉的
jad 用 class 自己的名字作为一个输出文件的名字,比如example1.class包含一个test1的类就会创建一个test1.jad文件而不是创建example1.jad文件

-d允许你指定另外一个文件目录作为输出文件的目录,没有指定的情况下会输出到缺省路径下
jad -o -dtest -sjava *.class

或者

jad -o -d test -s java *.class

以下的命令反编译了所有的*.class文件,并且将输出文件放置到test文件目录下
如果你想反编译tree目录下的所有*.class文件,用下面的命令

jad -o -r -sjava -dsrc tree/**/*.class

这个命令反编译了tree目录下所有.class文件,将输出文件以.java的形式
放置到src目录下
注意到**了吗?在unix可以表示为:

jad -o -r -sjava -dsrc "tree/**/*.class"

如果你想测试一下反编译的精确度的话,用-a
jad支持所有内部和匿名的类

命令行选择的列表
-a - 用JVM字节格式来注解输出
-af - 同 -a,但是注解的时候用全名称
-clear - 清除所有的前缀
-b - 输出多于的括号 (e.g., if(a) { b(); }, default: no)
-d  - 指定输出文件的文件目录
-dead -试图反编译代码的dead 部分(default: no)
-disass - 不用用字节码的方式反编译 (no JAVA source generated)
-f - 输出整个的名字,无论是类还是方法
-ff -输出类的成员在方法之前 (default: after methods)
-i - 输出所有的变量的缺省的最初值
-l - 将strings分割成指定数目的块的字符 (default: no)
-lnc - 将输出文件用行号来注解 (default: no)
-nl - 分割strings用新行字符 newline character (default: no)
-nodos -不要去检查class文件是否以dos方式写 (CR before NL, default: check)
-nocast - 不要生成辅助文件
-nocode -不要生成方法的源代码 
-noconv - 不要转换java的定义符 (default: do)
-noctor - 不允许空的构造器存在
-noinner ?关掉对内部类的支持 (default: turn on)
-nolvt - 忽略局部变量的表信息
-nonlb - 不要输出一个新行在打开一个括号之前 (default: do)
-o - 无需确认直接覆盖输出 (default: no)
-p - 发送反编译代码到标准输出 STDOUT (e.g., for piping)
-pi -在 的导入之后将其他引用包裹成一行导入 (default: 3)
-pv -将同类型的成员包裹成一行 (default: no)
-pa - 在生成源代码时将所有的包加前缀
-pc - 用数字名字给所有的类加前缀 (default: _cls)
-pf - 用数字名字给所有的成员变量加前缀 (default: _fld)
-pe -给没有用到的异常的名字加前缀
-pl - 给局部变量用数字名字加前缀 (default: _lcl)
-pm -给方法用数字名字加前缀 (default: _mth)
-pp - 给方法的参数用数字名字加前缀 (default: _prm)
-r - 恢复包的目录结构
-s  - 指定输出文件的类型 (by default ".jad")
-space -遇到关键字(if/for/while/etc)输出空格和表达式 (default: off)
-stat - 显示所有的类,方法,成员变量的总数
-t - 用tabs代替空格对于边缘
-t -用 个的空格 (default: 4)
-v - 正在反编译的时候 显示方法的名字
-8 - 将 UNICODE strings 转换成 8-bit strings
用当前的 ANSI 码页 (Win32 only)
-& - 重新定向 STDERR to STDOUT (Win32 only)

最常用的命令是

jad -o -a -sjava -d目录名 class文件名.class

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66426.html

相关文章

  • 一些Java编译工具/源代码查看工具介绍

    摘要:有的朋友抱怨他们在使用他们公司的闭源框架时看不到底层的源代码。假设我们想在里查看第行的源代码直接加左键进去是看不见源码的。我们可以使用一个开源的工具通过反编译来查看其源代码。现在选中一个按,即可看到反编译之后的源代码。 有的朋友抱怨他们在使用他们公司的闭源框架时看不到底层的源代码。那么可以尝试使用一些Java反编译工具。 下面我举个例子介绍具体使用这些反编译工具的步骤。 JAD 假设我...

    MageekChiu 评论0 收藏0
  • JAVA语法糖和语法糖编译

    摘要:提供给了用户大量的语法糖,比如泛型自动装箱拆箱循环变长参数内部类枚举类断言新特性方法引用等解语法糖语法糖的存在主要是方便开发人员使用。 首先,部分总结文字引用 简书作者:Eric新之助 。链接:https://www.jianshu.com/p/4de08deb6ba4 已获得授权 showImg(https://segmentfault.com/img/bVbfuX9?w=646&...

    weakish 评论0 收藏0
  • 教妹学 Java:晦涩难懂泛型

    摘要:首先,我们来按照泛型的标准重新设计一下类。注意参数为而不是泛型。利用形式的通配符,可以实现泛型的向上转型,来看例子。需要注意的是,无法从这样类型的中取出数据。showImg(https://user-gold-cdn.xitu.io/2019/5/17/16ac3bf3eb16160c); 00、故事的起源 二哥,要不我上大学的时候也学习编程吧?有一天,三妹突发奇想地问我。 你确定要做一名...

    Crazy_Coder 评论0 收藏0
  • 爱上Java诊断利器之Arthas

    摘要:是什么摘自的介绍大意为是阿里开源的一个诊断工具,可以帮助开发人员在不修改代码或重启服务器的情况下快速定位线上问题。听起来确实是我们的程序员的一大福利。参考资料使用手册 1. Arthas是什么? 摘自Arthas的Github介绍: Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas allows deve...

    Hancock_Xu 评论0 收藏0
  • 推荐一款阿里开源 Java 诊断工具,好用到爆!

    摘要:是什么鬼是一款阿里巴巴开源的线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题。诊断使用的是命令行交互模式,支持,操作系统,命令还支持使用键对各种信息的自动补全,诊断起来非常利索。显示当前系统的实时数据面板,按即可退出。 Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题。 Arthas诊断使用的是...

    Rango 评论0 收藏0

发表评论

0条评论

chaos_G

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<