0

我有一个 64 位 COFF 目标文件(没有源代码或调试信息),我需要从中提取单个过程。

该过程相对较短,其唯一依赖项是:

  1. 一个全局变量。
  2. 几个导入的程序。

我已经尝试过拆卸和重新组装代码;然而,出于某种奇怪的原因,即使代码在调试器和反汇编器中看起来相同,但它的行为方式并不相同。(我已经尝试确保可执行部分具有正确的标志等,但据我所知,所有这些都是正确的,并且这些值也与它们在运行时“应该”的值相匹配。)

那么有没有办法直接将函数复制到新的目标文件(或删除该函数之外的所有内容),而无需在此过程中反汇编和重新组装代码?

4

1 回答 1

1

我不确定,一般情况下有简单的方法。

例如,多个过程可以引用一个共享的代码(即静态函数)。因此,您需要为文件中的所有代码块构建调用图,并获取过程引用的代码块。比你应该修复所有跳转和调用中的地址,因为会有新的代码布局。

于 2012-01-25T12:06:19.833 回答