`

1保护Java代码 ClassLoader加密方式改进

阅读更多
目前关于JAVA程序的加密方式不外乎JAVA模糊处理(Obfuscator)和运用 ClassLoader方法进行加密处理这两种方式(其他的方式亦有,但大多是这两种的延伸和变异)。这两种方式不管给JAVA反编译器造成多少困难, 毕竟还是有迹可寻,有机可乘的。本文介绍的方法是对ClassLoader方式加密处理的一种改进,使之达到传统二进制程序代码安全。

第一章 流行的加密方式简介

关于JAVA程序的加密方式,一直以来都是以JAVA模糊处理(Obfuscator)为主。这方面的研究结果也颇多,既有模糊器(如现在大名鼎鼎的JODE),也有针对反编译器的"ZT"(如针对反编译工具Mocha的 "ZT" Crema和HoseMocha)。模糊器,从其字面上,我们就可以知道它是通过模糊处理JAVA代码,具体的说,就是更换变量名,函数名,甚至类名等方法使其反编译出来的代码变得不可理解。举个例子来说吧。

先将将下面源代码编译成class文件。

public class test



int sortway;

void sort(Vector a)

{

……

}

void setSortWay(int way)

{

……

}

void sort(Vector a, int way)

{

……

}



后通过JODE进行模糊处理后,反编译过来后, 可能变成下列代码。

public class OoOoooOo0Oo0O



int OoOo0oOo0Oo0O;

void OoO0ooOo0Oo0O (Vector OoOoo0Oo0OoOO)

{

……

}

void OoOo00oOoOo0O (int Oo0oooOo0Oo0O)

{

……

}

void OoO0ooOo0Oo0O (Vector OoOoo0Oo0OoOO, int Oo0oooOo0Oo0O)

{

OoOo00oOoOo0O (Oo0oooOo0Oo0O);

OoO0ooOo0Oo0O (OoOoo0Oo0OoOO);

}



其实这只是做到了视觉上的处理,其业务逻辑却依然不变,加以耐心,仍是可以攻破的,如果用在用户身份验证等目的上,完全可以找到身份验证算法而加以突破限制。

而所谓的"ZD"是针对反编译工具本身的缺陷,这种方法对于特定的反编译工具是非常有效的,然而到目前为止,还没有一个全能型的,对每一种反编译工具皆有效,其局限性是明显的!

另一种方法是采用ClassLoader加密。JAVA虚拟机通过一个称为ClassLoader的对象装来载类文件的字节码,而 ClassLoader是可以由JAVA程序自己来定制的。ClassLoader是如何装载类的呢?ClassLoader根据类名在jar包中找到该类的文件,读取文件,并把它转换成一个Class对象。该方法的原理就是,对需加密的类文件我们先行采用一定的方法(可以是PGP, RSA, MD5等方法)进行加密处理,我们可以在读取文件之后,进行解密后,再转换成一个Class对象。

关于ClassLoader工作方式的详细介绍就不在此一一述说了,前面已有文章专题讨论了。

有没有发现,该方法并未解决ClassLoader本身的安全性? 显然,只要反编译了该ClassLoader类,就可以顺藤摸瓜找到其它的类了。可见ClassLoader本身"明码"方式仍然造成一定的不安全性,然而,如果该方法解决了ClassLoader本身的安全性,其不失为一个比较好安全方案。
分享到:
评论

相关推荐

    java class加密保护(完全免费) v2.1

    很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式, 但这样会带来很多麻烦,而且也不能真正保护class文件, 本工具是对class文件进行加密,采用jni的方式解密运行, 加密算法达到256位...

    java类加密工具v2.1

    很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式, 但这样会带来很多麻烦,而且也不能真正保护class文件, 本工具是对class文件进行加密,采用jni的方式解密运行, 加密算法达到256位...

    一种改进加密Java源码的方法.pdf

    混淆器,顾名思义,就是通过模糊处理Java代码,具体地说,就是更换变量名、函数名、类名等方法使其反编译出来的代码变得难以理解。其 实这只是做到了视觉上的欺骗处理,其程序逻辑却依然不变,只要有耐心,仍是可以...

    一种改进的加密JAVA源码的方法.pdf

    目前,主要有两种流行的JAVA源代码保护方法:JAVA模糊处理(Obfuscation)和修改ClassLoader的加密方式。这些方法虽然提供了一定的安全保障,但也存在一定的局限性和安全隐患。 ##### JAVA模糊处理(Obfuscator) ...

    Java类加密工具v2.2(免注册)

    很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式, 但这样会带来很多麻烦,而且也不能真正保护class文件, 本工具是对class文件进行加密,采用jni的方式解密运行, 加密算法达到256...

    Java字节码文件保护分析与研究.pdf

    这些方法包括本地编译技术、代码隔离技术、代码混淆技术、数字水印技术和ClassLoader加密技术等。但是,这些方法都存在局限性。 本地编译技术是一种将Java应用程序编译成本地应用程序的方法,该方法应用于Java软件...

    我心飞扬java类加密工具2.1(亲测可用)

    java编译后的class文件是一种中间字节字文件,很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式,但这样会带来很多麻烦,而且也不能真正保护class文件,本工具是对class文件进行加密,...

    ava的ClassLoader介绍.doc

    在Java 1.2及后续版本中,ClassLoader系统进行了改进,引入了双亲委派模型,即新的类加载请求首先会委托给父ClassLoader尝试加载,只有在父ClassLoader无法加载时,才会尝试自己加载。这样做提高了安全性,避免了类...

    j-classloader-ltr

    1. **继承`java.lang.ClassLoader`类**:创建一个新的类,该类继承自`java.lang.ClassLoader`。 2. **重写`findClass`方法**:在这个方法中,实现如何从特定位置加载类文件。 3. **处理字节码**:加载类文件后,需要...

    Java类文件保护技术中密码技术的新应用.pdf

    为解决这一问题,Java开发者采取了多种保护措施,如重载类文件加载器技术和代码混淆技术。 1. 重载类文件加载器技术:Java 类文件加载器是Java虚拟机(JVM)的一部分,负责将类文件加载到内存中以便执行。通过重载...

    Java虚拟机1.6

    4. **安全管理**:Java 1.6增强了安全特性,包括改进的证书处理、更强的加密算法支持以及更严格的沙箱模型,保护系统免受恶意代码的侵害。 5. **NIO.2**:Java 1.6引入了NIO.2,即New IO 2.0,增加了对异步I/O的...

    Java后端技术面试基础汇总

    ### Java后端技术面试基础汇总 #### 一、Java基础知识 **1.1 Java基础** - **面向对象的特征:** - 继承:子类可以继承父类的属性和方法。 - 封装:将数据和行为封装在一起,提高数据安全性。 - 多态:同一...

    最新Java面试大全

    - **SSL加密**:保护数据传输安全。 - **代码安全性**:避免SQL注入、XSS攻击等。 #### 2. MVC模式简介 - **MVC (Model-View-Controller)**:一种常用的设计模式,将应用程序分为模型、视图、控制器三个部分。 ##...

    互联网大厂Java面试题合集

    ##### 4.1.6 Java8的ConcurrentHashMap改进 - **改进原因**:放弃分段锁是因为在高并发情况下锁粒度过大。 - **替代方案**:使用CAS和Synchronized关键字来减少锁的使用。 ##### 4.1.7 有序Map实现 - **有序Map**:...

    coreJava-开源

    开源,作为一种开放源代码、鼓励协作的开发模式,使得Core Java的相关知识得以广泛传播和持续改进。本文将围绕“coreJava-开源”这一主题,通过分析“classloaderDemo.jar”这个压缩包中的文件,来探讨Core Java的...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    1.3.8.1版(18-04-02)360加固保Hook

    360加固保是一款针对安卓应用的加固工具,通过混淆代码、资源加密、防逆向等多种手段,提高应用的抗破解能力,保护开发者权益。它通过对应用进行深度加密和优化,使得黑客难以通过常规手段进行反编译和调试。 3. ...

Global site tag (gtag.js) - Google Analytics