我有一个 64 位 COFF 目标文件(没有源代码或调试信息),我需要从中提取一个单个过程。
该过程相对较短,其唯一依赖项是:
- 一个全局变量。
- 几个导入的过程。
我已经尝试过反汇编和重新组装代码;然而,由于某些奇怪的原因,即使代码在调试器和反汇编器中看起来相同,但其行为方式却不同。 (我已经尝试确保可执行部分具有正确的标志等。但据我所知,所有这些都是正确的,并且这些值也与运行时“应该”的值相匹配。)
那么有没有办法直接将函数复制到新的目标文件(或者删除除了该函数之外的所有内容), 无需在此过程中拆卸和重新组装代码?
最佳答案
我不确定,一般情况下有简单的方法。
例如,多个过程可以引用一段共享代码(即静态函数)。因此,您需要为文件中的所有代码块构建调用图,并获取过程引用的代码块。您应该修复所有跳转和调用中的地址,因为将会有新的代码布局。
关于c - 从目标文件中提取单个过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001772/