保护你的JAVA / .net 程序,终极避免被反编译方法研究

反编译真的让JAVA / .net 制作者讨厌的东西。你花大量的精力做了一个很好的软件,却有人盗用,

盗用都算了

人家还用来商业...

 

就像某文说的.你的软件买 XXXXXXXX大元.人家公司买200元.....

 

怎么做到呢?就是通过反编译。

我们可以看到

就算保护很强的reflector4/6 也未能幸免

如果你不将你的Application进行保护,它将很容易被反编译

只需一个软件就可以获取阅读性很强的源代码。

 

现行方法我说一下,

一个 是所谓混淆。

二个是加壳或者虚拟机

 

我最近研究 是 终极大法。

就是将他彻底编译为本机代码,或者就是类似C/C++一样

编译为真正的机器码。

然后 你就高枕无忧吧。

我想如果对方真有本事能ASM-〉C or C#

上面什么保护对他而言都是纸老虎。

 

 

本机编译话题 网上不多,而且很多内容也比较旧了(好几篇2002年,也没有人验证)

http://www.ibm.com/developerworks/cn/java/j-native/

我花了一个星期时间 验证每一种方法,给大家做个汇报

 

JAVA 篇

我倒不敢班门弄斧,JAVA有问题去请教我徒弟吧

(这是他的BLOG http://blog.csdn.net/DL88250)

 

JAVA 现行本机编译商业软件比较强悍,也比较成熟。直接去购买就是

不属于本文研究内容。

 

我研究的是GCJ。windows

 

 

倒腾 几天

结果是这样的:

GCJ 太老土了

支持JAVA 1.2

像范型 这些都不支持。 最糟糕是不支持 AWT.EVEN

SWING 没法用

 

IBM 开发人员网站好像有篇文章说 用IBM SWT源代码编译  就可以了。

我也懒得搞了

 

最终就是 只解决输出中文问题。我手上研究的GCJ 已经可以

System.out.printf("欢迎使用GCJ");

 

最终结果就是

GCJ 仅支持他提供 那个基础JAVA框架内容(GCJ网站上有下载)

 

题外话:

现在有一种趋势就是,用自己开发的JRE运行程序

来进行保护

Excelsior JET 新版就采用这个方法

 

.netframework

.net 这边比较幸运些

.net本身就支持 本机编译

我已经彻底实现 这个方法

不足之处 就是 必须整个.net 框架,一起打包发布

.net 2.0 完全安装就有300 多MB

.net4.0 则有 700多MB

 

国内顶尖高手 紫雨轩 MM(DNGuard的作者)

好像用那个 飞信那个Linker

代替 整个.net 框架

我今天倒腾Linker半天,也没有研究出来。。。

反正我是太菜了 (还是因为我不够PL?)

不能和 紫雨轩 MM比。

 

题外话:

难怪很多人不愿意装.netframework这玩艺.....

300MB  可以装个CS或者SC了。

还有

打包VM工具 最新版居然不支持压缩。。。。

(估计是故意取消了,我选了压缩没用)

 

FLash

最后再附上 我研究FLash 加密

研究FLash 加密终极方法就是 axe加密

就是用haxe 或者类似的平台 写flash。

这是因为

swf反编译器只试图将字节码翻译为as代码

问题就是

ActionScript 3 以上才能使用 这些旁门左道

所以 Doswf 就算再强

直接Dump 内存,Doswf 加密的Actionscript  2 就原形毕露了。。。

 

最后还是说一句 

 

与本话题类似:

如何java应用程序编译为exe可执行文件

如何脱 离.netframework框架

JAVA / .net本机编译器

 

就是常说得,一通则百 通。。。。。

本文的方法 通解上面全部问题

 

虽然谈到3种平台的加密

但是 这些都是方法都是可以互相通吃的

比如Flash 也有 混淆保护软件 比如 SWFEncrypt就有类似功能

众所周知,java开发语言提供了很方便的开发平台,而且开发出来的程序很容易在不同的平台上面进行移植,现在越来越多的人使用它开发软件。 Java有了它方便的一个方面,但是他同时也带给了开发者一个烦恼,这就是保护的办法不多,而且大多数不是很好用,这样自己辛苦开发出来的程序很容易被人反编译过来而据为己有,一般情况下,大多数的人都是用混编器(java obfuscator)来把开发出来的程序进行打乱以达到没有办法来反编译观看源代码,但是这种办法在网上很容易找到相关的软件来重新整理,那么这个混编只能控制一些本来也没有办法动您的软件的人,而对于一些掌握工具的人几乎是透明的,还有就是利用硬件加密锁,但大多数公司提供的硬件加密锁只是提供了一些dll的连接或简单的api调用,只要反编译他们,就很容易把一些api调用去掉,这样硬件加密锁也就不起作用了,但是现在到底有没有好的办法呢? 市场上现有的几款防止反编译工具其实都是改进了加载过程。但是加载到JAVA虚拟机后一样可以得到CLASS字节码的。 只要懂JAVA原理的人其实很用意破解的. JAVACOMPILE 这款工具就不一样了,javacompile 它是修改了虚拟机内核, 用户目录里没有需要的JAVA字节码,而是当JAVA需要调用函数的时候才通过网络下载相对应的已经二次编译的字节码,就算用户通过 CLASS.getClass 也得不到可以用来反编译字节码。 真正意义上保护JAVA知识产权。 个人版限制编译30个CLASS文件,文件打包方式下载。
评论 99
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值