欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

RolfRolles的答复

RolfRolles的答复

OpenRCE的RolfRolles答复如下:
Nice job on the decompilation.
My experience diffing patches (noticing that sometimes the only difference between two functions seemed to be register/stack allocation) makes me suspect that MSVC uses a non-deterministic register allocator.  I may be wrong, and would be interested to hear the correct answer if so.  Register allocation is often formulated as a graph-coloring problem, which is in NP, and therefore there can exist no algorithm to solve it optimally in polynomial time (assuming P != NP).  Consequently, approximation algorithms are often used to "solve" problems such as this, and these algorithms often employ the use of random variables.
Therefore, in general, there is no guarantee that two successive compilations of the same source code (or a conforming decompilation/recompilation) will see the same variables assigned to the same registers at the same program points.  If the only differences between your recompilation and the original binary are register assignments / stack spills, you should consider it a job well-done; I would, anyway.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功