首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将java代码编译成exe (例如使用Launch4Java)能确保代码不会被反向工程吗?

将java代码编译成exe (例如使用Launch4Java)能确保代码不会被反向工程吗?
EN

Stack Overflow用户
提问于 2010-02-11 20:22:38
回答 6查看 3.3K关注 0票数 2

经过自己的实验,我确信java代码混淆在防止反向代码工程方面是不安全的。因此,我转而使用Launch4J将我的一个核心jar文件捆绑到一个可执行文件中。jar文件也包含主输入方法。这会再次保护代码逆向工程吗?

EN

回答 6

Stack Overflow用户

发布于 2010-02-11 20:24:23

如果计算机可以运行它,人类就可以对其进行逆向工程。

票数 17
EN

Stack Overflow用户

发布于 2010-02-11 20:53:20

Launch4J不会将您的Java代码转换为本机可执行代码,它只提供一个本机启动器,用于查找JDK并将您的JAR作为资源(无论是否打包在可执行文件中)。这只是一种便利,而不是安全性。如果您的JAR位于可执行文件的外部,则有人可以像常规Java应用程序一样对您的代码进行反向工程。如果您的JAR被打包到可执行文件中-假设有人对逻辑进行了编程以将JAR包装在可执行文件中,而其他人可以对逻辑进行编程以从可执行文件中解开JAR (或者使用许多可以从可执行文件中提取资源的工具之一)-然后就可以像常规Java应用程序一样对代码进行反向工程。

票数 8
EN

Stack Overflow用户

发布于 2010-02-11 20:36:04

简单地说,你不能阻止你的代码被逆向工程。

  • 你已经注意到了混淆的好处(实际上没什么)
  • 类分割/组合(故意混合不同的类来破坏代码的逻辑结构)也不会有那么大的帮助,特别是当你必须调试
  • 也不能真正加密/混淆字节码的时候,因为在字节码到达你的自定义ClassLoader之后,它已经以完全可读的格式返回了。More information here.

即使你保护了代码,它也是可以被监控的。也许在字节码级别上,也许在ASM级别上,这并不重要-重要的是,当一个人可以监控正在执行的代码时,它也可以被逆向工程。有些方法确实比其他方法需要更多的时间,但没有哪种方法是不可能的。

停止从security through obscurity的角度思考,而是开始分析实际存在的安全等问题,并相应地修复它们。防止反向工程-即使这不是徒劳的练习-也不会神奇地解决你的软件的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2244321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档