保护你的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)