首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java反编译->重新编译过程,安全吗?

Java反编译->重新编译过程,安全吗?
EN

Stack Overflow用户
提问于 2015-07-31 23:04:07
回答 1查看 109关注 0票数 3

我知道如果我拿一些源码,编译和反编译,原始源码和最终源码是不一样的,因为可能会以不同的方式表达相同的东西(例如whilefor循环)。换句话说,这个过程在某种程度上是多对一的,这意味着它是不可逆的。

我的问题是在另一个方向。如果我采用字节码,反编译它,然后用最初使用的完全相同的编译器重新编译它,原始和最终的字节码是否逐字节是相同的(忽略时间戳和非执行元数据)?如果不是逐字节相等,那么它是否至少在逻辑上相等,或者可能存在由进程引入的逻辑错误?

我没有工具,但我可以回答我自己的第一个问题(逐字节相等),但不能回答第二个问题(逻辑等价),因此我在这里询问人们的经验。

EN

回答 1

Stack Overflow用户

发布于 2015-07-31 23:36:00

我觉得反编译器没有办法输出100%准确的可重新编译的代码,原因如下:

  • 编译(如反编译)不是被设计成双射的file.
  • Decompilation没有办法让反编译器猜测使用了哪个编译器以及使用什么选项来生成
    • 不需要像在.class中那样遵守契约或规范,也不能保证它会给出有效的、可重复的或经过认证的结果。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31749437

复制
相关文章

相似问题

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