关注蓝字 看点网络安全
Hello,亲爱的看官们,大家晚上好,今天是周六,一个看似不错,但却充满了无奈的天气,特别是远在外面的2 cats大侠听说北京今天又污染了,心里真的有些五味杂陈啊。
原本晴空万里,蓝天白云的日子难道就这么随着五一假期刚过而消失了吗?还是说近期由于工程项目类工作比较多,土地经过开春后阳光和雨水的滋润慢慢变得松软导致呢?
目前具体原因不得而知,可是有一点非常肯定,那就是污染非常严重,各位出门时一定要记得戴口罩,不然很容易吸入不健康的颗粒物而导致呼吸道疾病出现。
好啦,说过每日开篇的小闲话之后,赶快进入到我们的技术分享环节来。
依靠命令行来进行反编译的工具
今天我们将继续分享有关逆向工程方面的技术知识。
Java作为开发语言中相对成熟的语种,无论是Web开发还是图形界面开发,都较之微软的C#语言好很多。
Java的克星
也正是因为如此,在经过二十多年的发展后,Java不仅保持着开发语言界佼佼者身份外,还成为逆向工程中最先被照顾的目标。从而诞生了专门进行反编译Java所开发的应用或Web。这款工具的名字叫做JAD,一个依靠命令行来进行反编译的工具。
JAD介绍
JAD最大的优势在于可以将二进制字节码文件(Class文件)转换成Java源文件使用,另外后来市面中很多注明的逆向工程工具也都是使用了JAD为核心引擎。
虽说JAD早期不存在图形界面,不过后来很多开发者在原有内核的基础上进行扩展工作,于是便有了我们今天所能看到的JAD图形界面工具。
工具演示
现在,我们来一起看下JAD的一些相关命令参数及功能描述。
1
命令:jad –h
反馈:
Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov (kpdus@yahoo.com).
反馈:
Usage: jad [option(s)]
说明:
Options:
-a 生成JVM指令作为注释
-af 在注释时输出完全限定的名称
-b 生成冗余支持(括号)
-clear 清除所有前缀,包括默认前缀
-d 输出文件目录
-dead 尝试反编译代码死亡的部分(如果它们存在)
-dis 反汇编指令(逆向编译)
-f 生成完全合格的名称(首次出现时请给出全称)
-ff 在输出领域的地方(fieldsfirst)
-i 字段打印默认初始化(定义)
-l 拆分字符串到最大字符快(splitstr)
-lnc 输出原来的行号(LNC)评论
-lradix使用指定基数显示长整数
-nl 分割字符串的换行符(noconv)
-noconv 不转换为有效的java标识符(noconv)
-nocast 不生成辅助铸件
-noclass 不要转换类操作符
-nocode 不要生成方法的源代码
-noctor 抑制空构造函数
-nodos 关闭在DOS模式下编写的类文件的检查
-nofd 不消除歧义字段具有相同的名称(nofldis)
-noinner 关闭内部类的支持
-nolvt 忽略局部变量表条目(nolvt)
-nonlb 插入一个换行符之前不开括号(nonlb)
-o 无确认地覆盖输出文件
-p 将所有输出到标准输出设备(管道)
-pa
生成源文件中所有包的前缀
-pc
对于数值名称类前缀(默认:_cls)
-pe
未使用的异常名前缀(默认:_ex)
-pf
对于数值名称字段重新(默认:_fld)
-pi 装进口成一行使用。*(packimports)
-pl
与当地人数值名称前缀(默认:_lcl)
-pm
用树枝方法(默认名称前缀:_mth)
-pp
方法参数数值名称前缀(默认:_prm)
-pv 包装领域的同类型成一行(packfields)
-r 恢复包目录结构
-radix 使用指定基数(8、10或16)显示整数
-s 输出文件扩展名(默认:.jad)
-safe 产生额外的转换来消除方法/领域
-space 关键字(如果,当,等)和表达式之间的输出空间
-t 缩进使用空格(默认:4)
-t 使用制表符代替空格缩进
-v 显示方法名而反编译
好啦,JAD工具相关的参数及解释说明已经给各位看官们罗列出来啦,具体用法方便各位看官们可以通过使用和练习进行熟悉。
2
现在再来看下JAD的用法示例:
好啦,今天的分享就到这里,请各位喜欢JAD的看官们多多尝试哦。
2cats 寄语
老规矩不变,
如果有任何问题依旧可以发给e品小顽童。
小顽童的邮箱是:
xiaowantong@epinjianghu.com。
也可以在微信公众号的下方留言,我们会及时整理反馈的。
期待各位的来信交流!
另外,大家可以扫描下面的二维码,加我2cats的个人微信哈!
e品江湖
不失初心 不忘初衷
长按扫码 加关注!
领取专属 10元无门槛券
私享最新 技术干货