我知道如果我拿一些源码,编译和反编译,原始源码和最终源码是不一样的,因为可能会以不同的方式表达相同的东西(例如while和for循环)。换句话说,这个过程在某种程度上是多对一的,这意味着它是不可逆的。
我的问题是在另一个方向。如果我采用字节码,反编译它,然后用最初使用的完全相同的编译器重新编译它,原始和最终的字节码是否逐字节是相同的(忽略时间戳和非执行元数据)?如果不是逐字节相等,那么它是否至少在逻辑上相等,或者可能存在由进程引入的逻辑错误?
我没有工具,但我可以回答我自己的第一个问题(逐字节相等),但不能回答第二个问题(逻辑等价),因此我在这里询问人们的经验。
发布于 2015-07-31 23:36:00
我觉得反编译器没有办法输出100%准确的可重新编译的代码,原因如下:
https://stackoverflow.com/questions/31749437
复制相似问题