如何防止Java程序被反编译

GoldTiger 2005-08-05 07:59:40
如何防止Java 的Class类程序被反编译
...全文
1329 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
pshpan 2006-07-04
  • 打赏
  • 举报
回复
混淆器,再参杂点杂七杂八的代码
china2001ok 2006-06-24
  • 打赏
  • 举报
回复
干嘛要这样呢 不是提倡开源么
UnAgain 2006-06-03
  • 打赏
  • 举报
回复
到IBM developer搜索java源代码加密,有几篇好文章
Tony_OY 2006-05-26
  • 打赏
  • 举报
回复
频繁用exception机制很对运行效率可是大打折扣.
  • 打赏
  • 举报
回复
哪位有jade给我发一个,qianjingfan@163.com谢谢
boxzang 2006-04-25
  • 打赏
  • 举报
回复
给个混淆器的例子呢
Preamble 2006-04-23
  • 打赏
  • 举报
回复
shine333(enihs) ( ) 信誉:125
还有就是在关键代码处改变写作风格

比如,
if ("a".equals(x)) {
y++;
} else if ("b".equals(x)) {
y--;
} else {
y+=10;
}
可以改为下面代码,看了反编译的代码之后一定惨不忍睹
try {
if ("a".equals(x)) {
Object o = null;
o.toString();
} else if ("b".equals(x)) {
char c = x.charAt(2);
} else {
throw new Exception(); // 需要显示throw来破坏try-catch为break-label操作
}
} catch (NullPointerException ex) {
y++
} catch (IndexOutOfBoundsException ex) {
y--;
} catch (Exception ex) {
y+=10;
}

看来zuihao些垃圾代码·!不用混都没人看
强人!

xueyi0108 2006-04-05
  • 打赏
  • 举报
回复
mark
boydream 2006-04-04
  • 打赏
  • 举报
回复
关注~~~
gzshenlong 2006-03-30
  • 打赏
  • 举报
回复
java开发的程序的保护

众所周知,java开发语言提供了很方便的开发平台,而且开发出来的程序很容易在不同的平台上面进行移植,现在越来越多的人使用它开发软件。
Java有了它方便的一个方面,但是他同时也带给了开发者一个烦恼,这就是保护的办法不多,而且大多数不是很好用,这样自己辛苦开发出来的程序很容易被人复制而据为己有,一般情况下,大多数的人都是用混编器(java obfuscator)来把开发出来的程序进行打乱以达到没有办法来反编译观看源代码,但是这种办法在网上很容易找到相关的软件来重新整理,那么这个混编只能控制一些本来也没有办法动您的软件的人,而对于一些掌握工具的人几乎是透明的,还有就是利用硬件加密锁,但大多数公司提供的硬件加密锁只是提供了一些dll的连接或简单的api调用,只要反编译他们,就很容易把一些api调用去掉,这样硬件加密锁也就不起作用了,但是现在到底有没有好的办法呢?
以色列阿拉丁公司提供的HASP HL加密锁提供的外壳加密工具中有一个叫做数据加密的功能,这个功能能更好的防止去除api的调用,各位都知道:硬件加密锁的保护原理就是要您被加密过的软件和加密锁的硬件要紧紧地结合在一起,而且不容易被轻易的剔出原来的调用,这样才能更好的保证您的软件不被盗版,同时这种方式也很容易被程序员掌握,要对一个软件实现保护,只需要几分钟的时间就可以了,下面简单介绍一下他的原理:
运用阿拉丁公司提供的外壳工具先把调用您的java解释器来进行加密,那么就是说如果要运用这个解释器就需要有一把特定的加密锁存在,然后我们再运用它提供的外壳加密工具中的数据加密功能,把您写好的java程序代码class文件进行数据加密产生新的文件来代替(加密过后的class文件是乱码,这时采用任何反编译工具都编译不出),然后再用加密过后的java解释器来调用,这个加密是采用的AES128位的算法的,这样这个加密过的数据文件——您的软件就只能被您保护过的java解释器来进行解释,但是在没有加密锁的情况下就不能够运行您的软件,或者是在有锁的情况下也看不到软件代码从而达到真正保护您的软件的目的。
我们作为以色列aladdin加密锁的代理商,很愿意和您分享这样的保护方式,如果您对我们的产品感兴趣,我们公司将提供产品测试!

联系人 龙令军 13538771708
邮件 :long@hzbhasp.com.cn
英文网址:http://www.ealaddin.com
中文网址:http://www.ealaddin.com.cn
QQ 501623419
iwlk 2006-03-09
  • 打赏
  • 举报
回复
还有就是在关键代码处改变写作风格

比如,
if ("a".equals(x)) {
y++;
} else if ("b".equals(x)) {
y--;
} else {
y+=10;
}
可以改为下面代码,看了反编译的代码之后一定惨不忍睹
try {
if ("a".equals(x)) {
Object o = null;
o.toString();
} else if ("b".equals(x)) {
char c = x.charAt(2);
} else {
throw new Exception(); // 需要显示throw来破坏try-catch为break-label操作
}
} catch (NullPointerException ex) {
y++
} catch (IndexOutOfBoundsException ex) {
y--;
} catch (Exception ex) {
y+=10;
}

强人, 但是有个问题, 速度应该会下降吧,
Student02370236 2006-03-08
  • 打赏
  • 举报
回复
连自己都不知道在写什么是“最高境界”
Saro 2006-03-05
  • 打赏
  • 举报
回复
shine333真强。
笑得在地上打滚。
楼主明白了吧,把程序写得谁也看不懂就是最好的方式了哩。
prentice1001 2006-02-28
  • 打赏
  • 举报
回复
强人shine333(enihs) ( )
panzi667 2006-02-28
  • 打赏
  • 举报
回复
楼上是强人
creating_myth 2006-02-28
  • 打赏
  • 举报
回复
不行的呀,我试过了,用jad反编译出来很完整的。
shine333 2006-02-17
  • 打赏
  • 举报
回复
还有就是在关键代码处改变写作风格

比如,
if ("a".equals(x)) {
y++;
} else if ("b".equals(x)) {
y--;
} else {
y+=10;
}
可以改为下面代码,看了反编译的代码之后一定惨不忍睹
try {
if ("a".equals(x)) {
Object o = null;
o.toString();
} else if ("b".equals(x)) {
char c = x.charAt(2);
} else {
throw new Exception(); // 需要显示throw来破坏try-catch为break-label操作
}
} catch (NullPointerException ex) {
y++
} catch (IndexOutOfBoundsException ex) {
y--;
} catch (Exception ex) {
y+=10;
}
gushansanren 2006-02-15
  • 打赏
  • 举报
回复
可以自己把类文件加密或做什么运算。在调用的时候,自己写一个加载类的继承类,重载classload()方法,自己再变会来就行了。绝对比混淆器好用。
hcmsxy 2006-02-02
  • 打赏
  • 举报
回复
自己使用任何一种方法将class加密,使用运行时解密加载。

提供一个思路。
jxdn_yang 2006-01-23
  • 打赏
  • 举报
回复
还是不要混淆的好,不然好代码可以研究下了
加载更多回复(12)

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧