关于JAVA的*.CLASS文件可反编译的思索!!

heton 2001-07-20 09:49:31
JAVA的*.CLASS文件能通过各种工具反编译,且反编译的效果很好,几乎根源代码一样,这是JAVA的一个阴影吗?我对JAVA认识颇浅,请高人指点迷津!
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
seasun2k 2001-07-20
  • 打赏
  • 举报
回复
同意alou()
alou 2001-07-20
  • 打赏
  • 举报
回复
呵呵,最好的办法是自己跑得更快一些,让对手在你的后面吃土!
keiga 2001-07-20
  • 打赏
  • 举报
回复
当然你还可以编译成针对于不同机型的机器码
keiga 2001-07-20
  • 打赏
  • 举报
回复
我认为,java源程序编译后可提高执行效率,至于保密,不让人得到你的.class文件就可以了
iloveyouonlyonce 2001-07-20
  • 打赏
  • 举报
回复
针锋相对的代码模糊处理
代码模糊处理字面上的意思就是模糊处理您代码的行为。Java 模糊处理器用不易察觉的方法改变程序,以致于它的运行对 JVM 来说是一模一样的,但它使得试图理解程序的人更加迷惑了。

让我们看一下当反汇编器遇到经过模糊处理后的代码会发生什么情况。清单 6 显示了 Mocha 在尝试反汇编被一种名为 jmangle 的工具模糊处理的 Java 代码后的结果。请注意以下的一小段程序和我们在前面清单中使用的是相同的,尽管乍一看,您肯定不会这么认为。

清单 6. 经过 jmangle 模糊处理的代码
public Foo()
{
jm2 = 10;
int i = jm0();
System.out.println("foo constructor");
jm1(i);
}




象 jmangle 这样的模糊处理器把许多变量名和方法名(有时甚至是类名和包的名称)转换成没有意义的字符串。这样就使得人们难以阅读程序,但对于 JVM 来说,其在本质上和原来的程序是一样的。

一种常用的模糊处理代码的方法是用一个非法的字符串来替代类文件中的标记,这比使用没有意义的字符串更进了一步。替代的有可能是一个关键字,例如 private,或者甚至是象 *** 这样没有意义的标记。一些虚拟机 -- 尤其在浏览器中 -- 对这些古怪的用法不会作出合法的反应。从技术上说,一个象 = 这样的变量与 Java 的规范是相反的;一些虚拟机可以忽略它,而另一些不可以这样。

还可以通过模糊处理放置代码炸弹~~
yatwql 2001-07-20
  • 打赏
  • 举报
回复
可以通过代码混稽器来保密
gzproger 2001-07-20
  • 打赏
  • 举报
回复
混淆有时不起作用,比如你做个30天试用版,再怎么混淆,人家反编译一把,找个IDE跟踪一下,再重新编译一把,就破解了。
situju 2001-07-20
  • 打赏
  • 举报
回复
编译成exe文件

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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