透视JAVA——反编译.修补和逆向工程技术 读书笔记 1.  Java source is not compiled to binary machine code like C/C++ source is. 2.  Because the bytecode does not represent the lowest-level machine language, the format of the code closely resembles the source code. 3.public…
Java是一种 跨平台的.解释型语言 Java 源代码编译中间“字节码”存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名.方法名 等.因此,Java中间代码的反编译就变得非常容易.目前市场上有许多免费的.商用的反编译软件,都能够生成高质量的反编译后的源代码.所以,对开发人员 来说,如何保护Java程序就变成了一个非常重要的挑战.下面我们就结合实例讨论 保护Java程序的基本方法然后对代码混淆问题进行深入研究,最后结合一个实际的应用程序…
1.反编译工具之_jd-gui 官网下载地址:http://java-decompiler.github.io/#jd-gui-download 使用: 下载后解压直接使用即可. jd-gui的优势是图形化界面 操作简单,但gui很久没有更新了 存在无法反编译的情况.   2.反编译工具之_CFR 官网下载地址:http://www.benf.org/other/cfr/ 使用: (1)命令行操作: 进入到CFR所在目标 执行命令(需反编译jar:http_operator.jar.反编译后输出…
Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要使用反编译工具,代码很容易被暴露,这里需要了解的就是Java的]; String algorithm = "DES"; // 生成密匙 SecureRandom sr = new SecureRandom(); KeyGenerator kg = KeyGenerator.getInsta…
本文介绍下Java Jar常见的反编译工具,并给出使用感受. 反编译JAR能干什么: 排查问题.分析商业软件代码逻辑,学习优秀的源码思路. JD-GUI 下载地址:http://java-decompiler.github.io/ 点评:支持的java版本不会太高,中文注释能够正常显示. Luyten 下载地址:https://github.com/deathmarine/Luyten 点评: 支持更多,但是中文不正常显示.底层使用的是Procyon. Jadx 下载地址:https://git…
第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记…
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10840818.html 一:反编译 通常用于第三方JAR包的逆向工程. 一般我们拿到的jar包都是经过编译后的 .class文件,但是我们在开发过程中对jar包的调用有疑问,或者像深入探索原理时,根本无法查看源码,这对我们来说就比较沮丧了. 这个时候,我们可以通过一些反编译工具,将 .class 文件逆向成 java源代码,这样就可以看到它的真面目啦- java反编译我们一般使用jad工具,或者网上提供的…
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.通常情况下,反编译可以利用现有的工具jd-gui.exe或者jad.exe. (这两个反编译工具在我的资源里有下载: jd-gui.exe: http://download.csdn.net/detail/dianacody/7760019: jad.exe: http://download.csdn…
第一部分 走进Java 一.走进Java 1.概述 java广泛应用于嵌入式系统.移动终端.企业服务器.大型机等各种场合,摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想 2.java技术体系结构 按照功能来划分 包括以下几个组成部分:Java程序设计语言,各种硬件平台的java虚拟机,Java API类库,来自商业机构和开源社区的第三方Java类库,Class文件格式 Java程序设计语言,java虚拟机,Java API类库统称为JDK,是用于支持java程序开发的最小环境 Java…
很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成.程序以后将不能重新改变数组对象在内存中的位置和大小. 从用法角度来看,数组元素相当于普通变量,程序既可把数组元素的值赋给普通变量,也可把普通变量的值赋给数组元素. 1.1数组初始化 1.1.1 Java数组是静态的 Java语言是典型的静态语言,因此Java的数组是静…