反编译工具jd-gui、luyten学习使用

1、反编译

1.1介绍

要了解反编译,首先需要了解计算机语言,它包括机器语言、汇编语言、高级语言三种。其中,机器语言和汇编语言通常被称之为低级语言。

简单来说,可以这样简单的理解:低级语言是计算机认识的语言、高级语言是程序员认识的语言。

所谓编译,就是指高级语言转换成低级语言让计算机执行的过程。反编译则相反,通过低级语言进行反向工程,获取其源代码。

1.2作用

1. Java这门编程语言,有许多如泛型、自动装箱拆箱等语法糖。因为java虚拟机不认识这些,所以就会在编译的时候进行相应的解糖,得到class文件。反编译工具就可以帮我们反编译class文件,获得一份java文件,让我们了解到这些语法糖是如何实现的。

2.可以对其他人的代码进行反编译,学习代码实现。或者通过源代码查找bug,制作外挂等。

1.3防止反编译

由于我们有工具可以对Class文件进行反编译,当然就要有对应的技术可以应对反编译,从而保护java程序。比较典型的应对策略如下:

(1)隔离Java程序,让用户接触不到你的Class文件

(2)对Class文件进行加密,提高破解难度

(3)代码混淆,将代码转换成功能上等价,但是难于阅读和理解的形式

2、jd-gui的使用

首先我们可以自制一个demo的class文件来测试使用反编译工具。在自定义路径下,新建一个demo的java文件。简单测试即可,具体内部代码如下图。

图2-2 demo.java

然后我们在该路径下,用cmd进入命令界面,输入javac demo.java指令,即可将java文件编译成class文件,并在同目录下出现。

图2-3 编译demo.java文件

图2-4 同目录下出现demo.class文件

得到class文件以后我们就可以来测试反编译功能了。首先还是打开jd-gui.exe文件。单击【file】从中选择【Open File ...】选项,弹出一个文件选择框,可以选择要打开的文件,或者直接单击文件夹图标,直接弹出文件选择框;从文件选择框中选择要打开的.class类型的文件,单击【确定】。在打开的文件里,左侧可以看到文件的保存位置,类及方法,右侧显示类的具体内容,注释不会显示

图2-5 打开文件进行反编译

图2-6 反编译结果

Jd-gui同时也支持高级搜索。点击下图所示图标,即可进入搜索界面,快速定位需要的东西。

图2-7 高级搜索

搜索方法。类似电脑的快捷键Ctrl+F,此时不会打开小窗,在界面的下方会显示一个输入框,输入想要查找的方法名,即可。

图2-8 搜索方法

搜索类。菜单栏快捷方式,在弹框内输入想要查找的类名。

图2-9 搜索类

3、luyten的使用

同样,那前面做的demo.class文件进行举例使用。打开luyten工具进入图形界面,打开文件,可以看到展示如下图。

图3-1 luyten反编译界面

可以看到,编码格式有些问题,默认为Unicode显示。我们可以点击【Settings】做一些配置,如勾选【Force Explicit Imports】,显示全部引入包的路径,默认为*显示;同时勾选【Enable Unicode Replacement】,正常显示中文。具体如下图。

图3-2 luyten配置

之后就可以正常显示了。反编译中,点击【save as】是生成当前指定文件源码,【save all】是生成当前jar包的全部文件源码。

图3-3 生成源码

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值