任何人都可以使用任何Java应用程序的代码吗?

Avi*_*ohn 4 java bytecode reverse-engineering class

任何类文件都可以相对容易地反编译为原始的Java源代码.

这是否意味着任何Java程序的源代码,除非以某种方式加密,对于拥有最终程序的任何人来说都相对容易获得?

如果是这样,对于那些不希望任何人可以获得商业秘密或工作的大公司来说,这不是一个问题吗?

cor*_*zza 7

开源是指许可证.例如,您可以拥有非开源程序的源代码.

一般来说,,任何人都无法使用您的原始源代码 - 如果您担心这一点,您可以轻松使用混淆和加密等方法.看看这个问题.

但是,Java字节码可以反向设计为Java源代码.您可以在这里查看更多信息:http://resources.infosecinstitute.com/java-bytecode-reverse-engineering.

如果是这样,对于那些不希望任何人可以获得商业秘密或工作的大公司来说,这不是一个问题吗?

为什么会这样?Java通常在服务器端运行,您甚至无法访问字节码.如果你正在创建一个桌面应用程序,那么你就可能将它设计为盗版,我敢打赌.

从本质上讲,可以从字节码中获取源代码,但是你可以防止这种情况,而且通常不是什么大问题.

  • @Prog,比反向工程本机代码更容易,是的.实际上,当以助记符形式(基本上是JVM相当于汇编语言)显示方法的原始字节码指令时,读取和理解方法通常并不困难,而无需将其反编译为Java源代码.(但是,在解读单个方法和理解所有类和方法如何组合在一起的"大图"之间存在很大差异.) (3认同)
  • @Prog,反编译器可以为您提供有效的Java源代码,但它不是*原始*源代码.反编译的代码缺少原始注释(因为它们不存在于字节码中),并且混淆可以将所有类,方法和变量名称变成无意义的废话.这使得任何人都很难阅读和理解反编译代码. (2认同)