【技术累积】【点】【java】【3】编译和反编译

本文探讨了编译与反编译的基本概念及其在实际应用中的意义,包括编译过程中信息丢失的影响、反编译的目的及用途,并提到了一些常用的反编译工具。

闲聊

擦,打脸了,但打完了还是得继续写呗,水着水着看呗。


概述

理解的不深入,但是实用。

总而言之:编译,是将书写的代码翻译为机器能够理解的代码;反编译,则是相反的过程。

来源在于语言的等级,一般认为,自己写的,比如java这种,就是高级语言;编译的结果,比如汇编语言,就是机器能够理解的低级语言。

当然,更低级的是机器语言,是cpu可以直接解读的数据,对于人而言是完全的天书了吧。


理解

其实编译和反编译能进行到什么程度,说白了还是信息的丢失与否。

若编译丢失数据过多,反编译出来逻辑都看不懂;当然,信息丢失很少,但是全部乱掉(其实也是一种信息丢失了吧),也tm是废物(代码混淆了解一下)。

查了半天,还是没懂为啥会有反编译这种东西出来,最直观的想法还是想搞点事情吧,毕竟一个是东西可以编译,自然就可以反编译,另一个是不开源是吧,我反编译搞个开源的出来;

所以,事情就自然的再发展下去了,编译的时候加密,编译的时候混淆,各种骚操作。。


使用

之前看枚举的时候,发现博主通过反编译.class文件看了枚举的实质,刺激。

结果用jd-gui反编译了自己的枚举...

还是enum,根本没有extends Enum这回事儿

然后自己写个类继承Enum,直接报错咯,不能直接引用,看来1.5之后的应该是改了

public class TestClass extends Enum {
    protected TestClass(String name, int ordinal) {
        super(name, ordinal);
    }
}

工具的话:jd-gui,各种ide

以后用到反编译的时候再补充吧。


引用

基础了解:看完这篇文章之后,终于明白了编译到底怎么回事。

丰富了解:Java| 编译和反编译

透彻了解:为什么有些语言可以被反编译?而有的不能?

转载于:https://www.cnblogs.com/andy1202go/p/9338692.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值