java 如何保护源码_如何有效的保护 JAVA 程序

本文探讨了如何保护JAVA程序的源码,从使用模糊处理(Obfuscator)防止反编译,到利用ClassLoader加密技术,详细介绍了自定义ClassLoader的加载过程和加密解密策略,强调了在特定场景下使用加密的重要性。
摘要由CSDN通过智能技术生成

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

关于 JAVA 程序的加密方式,一直以来都是以 JAVA 模糊处理(Obfuscator)为主。这方面的研究结果也颇多,既有模糊器(如现在大名鼎鼎的 JODE),也有针对反编译器的"炸弹"(如针对反编译工具 Mocha 的 "炸弹" 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);

}

}

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

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

另一种方法是采用 ClassLoader 加密。JAVA 虚拟机通过一个称为 ClassLoader 的对象装来载类文件的字节码,而 ClassLoader 是可以由 JAVA 程序自己来定制的。ClassLoader 是如何装载类的呢? ClassLoader 根据类名在 jar 包中找到该类的文件,读取文件,并把它转换成一个 Class 对象。该方法的原

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值