Java 加密 防盗版 源码保护 - Disruptor

Disruptor - 一款用于Java工程的加密和反盗版的Eclipse插件

程序截图:

 

Disruptor具有如下特点:

  • 维护知识产权

  多种运行控制手段,防止盗版行为。

  独特的混淆机制可以完全的防止任何类型的反编译,反编译后的代码逻辑不完全,不具有任何可读性。 

  • 安装、使用方便

  Disruptor以插件形式集成在Eclipse开发环境中,安装简单,使用时与开发环境相结合,操作方便。

  • 轻松部署

  无需对现有项目做任何改动,Disruptor会直接生成加密后的class文件和解密所需文件。

  仅仅替换项目的类文件就可以完成部署,无需对运行环境做任何改动。

  • 应用广泛

  可以应用于任意的Java桌面应用及Java Web应用。

 

示例程序:

原始代码:

Test.java

package abc.test;
public class Test {
	public static void main(String[] args) {
		Human h1 = new Human();
		h1.setName("Safrain");
		h1.setAge(22);
		Human h2 = new Human();
		h2.setName("X");
		h2.setAge(999);
		h1.sayHello(h2);
		h1.sayAge();
		h2.sleep();
	}
}

Human.java

package abc.test;
public class Human {
	private String name;
	private int age;
	public void sayHello(Human h) {
		System.out.println(String.format("Hello,%s! My name is %s.", h.name,
				name));
	}
	public void sayAge() {
		System.out.println(String.format("I am %d years old", age));
	}
	public void sleep() {
		System.out.println("Zzzzz..");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

反编译加密后的类文件

Test.java

package abc.test;
public class Test {
	public static void main(String[] args) {
		Human h1 = new Human();
		safrain.disruptor.Invoker.stub.stub_11("Safrain", h1, h1);
		safrain.disruptor.Invoker.stub.stub_12(h1, 22, h1);
		Human h2 = new Human();
		safrain.disruptor.Invoker.stub.stub_13(h2, "X");
		safrain.disruptor.Invoker.stub.stub_14(h2, h2, 999);
		safrain.disruptor.Invoker.stub.stub_15(h1, h1, h2);
		safrain.disruptor.Invoker.stub.stub_16(h1);
		safrain.disruptor.Invoker.stub.stub_17(h2, h2);
	}
}

Human.java

package abc.test;
public class Human {
	private String name;
	private int age;
	public void sayHello(Human h) {
		safrain.disruptor.Invoker.stub.stub_18(System.out, String.format("Hello,%s! My name is %s.", h.name,
				name), name);
	}
	public void sayAge() {
		safrain.disruptor.Invoker.stub.stub_19(System.out, String.format("I am %d years old", age), name);
	}
	public void sleep() {
		safrain.disruptor.Invoker.stub.stub_20(System.out, name, "Zzzzz..");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

 

运行效果(直接输入密码启动方式):

C:\>java abc.test.Test

Loading native lib...

Input Decryption Key:123123

**Native Loader : Class loaded: safrain/disruptor/Stub

Hello,X! 

My name is Safrain.

I am 22 years old.

Zzzzz..
C:\>

 

  除了输入密码的启动方式,Disruptor还提供了程序绑定硬件启动的功能,让程序只能够在指定的计算机上运行,当加密后的程序启动时,会首先检测计算机的硬件信息是否与加密时指定的硬件信息一致,只有硬件信息一致程序才能够启动。目前以注册码进行版权控制的功能正在开发之中。

 ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

工作一阵子了

发现当初做的东西真是幼稚啊

JVM 都是开源的

得到Java文件的字节码可以说是易如反掌

再怎么折腾源代码都是没有用的

就算打乱了代码,也能通过一些手段把代码还原回来

唉 悲剧 

还是使用proguard吧。

至少靠谱一点

 

有问题请留言或发送邮件到z.safrain@gmail.com,或者联系QQ:65439119

转载于:https://www.cnblogs.com/safrain/archive/2010/10/01/disruptor.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值