Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java代码安全性_Java_Jar_Obfuscation_Deobfuscation - Fatal编程技术网

Java代码安全性

Java代码安全性,java,jar,obfuscation,deobfuscation,Java,Jar,Obfuscation,Deobfuscation,可能重复: 除了模糊处理之外,还有什么其他方法可以保护罐子不被其他人打开吗?问题是我不希望任何人访问代码,这就是为什么我不喜欢Java。从我使用的反编译器来看,用C#和Java编写的程序具有完整的变量名称,这使得访问非免费程序变得很容易。更糟糕的是,给出源代码。据我所知,jar文件(使用NetBeans生成)可能只包含.class文件,这些文件是Java位代码,而不是源代码。我不知道是否有办法对.class文件进行反向工程,但它只有很少的ASCII可用文本。上面的注释涵盖了这些要点中的大部分,

可能重复:


除了模糊处理之外,还有什么其他方法可以保护罐子不被其他人打开吗?问题是我不希望任何人访问代码,这就是为什么我不喜欢Java。从我使用的反编译器来看,用C#和Java编写的程序具有完整的变量名称,这使得访问非免费程序变得很容易。更糟糕的是,给出源代码。

据我所知,
jar
文件(使用NetBeans生成)可能只包含
.class
文件,这些文件是Java位代码,而不是源代码。我不知道是否有办法对
.class
文件进行反向工程,但它只有很少的ASCII可用文本。

上面的注释涵盖了这些要点中的大部分,但我将在这里对它们进行一点扩展:

如果您的代码正在用户的计算机上运行,则用户可以反编译您的代码。不管它是什么语言。Java,C,空白,脑力操,都没关系。如果代码在计算机上运行,人类可以读取它。即使你自己制作了自己的自制语言和编译器,编译后的代码仍然是一系列标准的机器指令,反编译器会很容易地将其转换成C或任何你喜欢的语言的可读代码

没有例外。算了吧。

但是有一些方法可以得到你想要的:保护一些秘密的商业逻辑。一种简单的方法是将业务逻辑放在您自己的机器上,并使用web服务公开它。用户仍然可以看到客户机请求和服务响应,但除此之外,您的逻辑是一个黑盒


你也可以自己制作机器,锁定它们,然后分发给用户。请注意,虽然这是可能的,但在技术上很难做到正确(想想所有被黑客攻击的游戏机和智能手机),并且会显著增加您的服务成本。

没有。如果JRE可以打开它,那么任何人都可以。将安全代码和逻辑放在服务器上“问题是我不希望任何人访问代码,这就是我不喜欢Java的原因。”任何语言都可以。更简单、更合法的做法是让测试人员负责描述输入和输出,让编程团队负责创建更好的版本。他们既不需要也不想查看代码的任何部分,除非它使用了真正非直观的算法。如果是这样的话,把那个部分移到服务器端,如@ jigARJHJH.@安德鲁汤普森所说,你知道C++有什么好的反编译器吗?很容易逆向设计一个<代码>。事实上,它的大部分卷都是ASCII码——所有相关类的全称。即使是硬件也可以用足够的时间、资源和创造力进行逆向工程。