经过自己的实验,我确信java代码混淆在防止反向代码工程方面是不安全的。因此,我转而使用Launch4J将我的一个核心jar文件捆绑到一个可执行文件中。jar文件也包含主输入方法。这会再次保护代码逆向工程吗?
发布于 2010-02-11 20:24:23
如果计算机可以运行它,人类就可以对其进行逆向工程。
发布于 2010-02-11 20:53:20
Launch4J不会将您的Java代码转换为本机可执行代码,它只提供一个本机启动器,用于查找JDK并将您的JAR作为资源(无论是否打包在可执行文件中)。这只是一种便利,而不是安全性。如果您的JAR位于可执行文件的外部,则有人可以像常规Java应用程序一样对您的代码进行反向工程。如果您的JAR被打包到可执行文件中-假设有人对逻辑进行了编程以将JAR包装在可执行文件中,而其他人可以对逻辑进行编程以从可执行文件中解开JAR (或者使用许多可以从可执行文件中提取资源的工具之一)-然后就可以像常规Java应用程序一样对代码进行反向工程。
发布于 2010-02-11 20:36:04
简单地说,你不能阻止你的代码被逆向工程。
即使你保护了代码,它也是可以被监控的。也许在字节码级别上,也许在ASM级别上,这并不重要-重要的是,当一个人可以监控正在执行的代码时,它也可以被逆向工程。有些方法确实比其他方法需要更多的时间,但没有哪种方法是不可能的。
停止从security through obscurity的角度思考,而是开始分析实际存在的安全等问题,并相应地修复它们。防止反向工程-即使这不是徒劳的练习-也不会神奇地解决你的软件的问题。
https://stackoverflow.com/questions/2244321
复制相似问题