从目标文件中提取单个过程?

时间:2012-01-25 11:15:14

标签: c visual-c++ assembly coff object-files

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

该过程相对较短,其依赖项为:

  1. 一个全局变量。
  2. 一些导入的程序。
  3. 我已经尝试过拆解和重新组装代码;但是,由于一些奇怪的原因,即使代码在调试器和反汇编程序中看起来相同,它的行为方式也不一样。 (我已经尝试确保可执行部分具有正确的标志等,但据我所知,所有这些都是正确的,并且值也与它们“应该”在运行时的内容相匹配。)

    有没有办法 直接 将函数复制到新的目标文件(或删除除该函数之外的所有), 没有必须在流程中反汇编并重新组合代码?

1 个答案:

答案 0 :(得分:1)

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

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