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

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

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

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

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

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

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

最佳答案

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

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

关于c - 从目标文件中提取单个过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001772/

相关文章:

c++ - 如何登录页面并从中读取url内容?

.net - 使用 C++/CLI 包装非托管 C++ 类库 - 问题 2 - 集合

c++ - 事件目录实现

c++ - 为什么计算出的可用和总驱动器空间上限为 2G?

ios - 从 arm 汇编函数返回 float 到 objective-c

c - 是否建议在 C 中将可变长度数组 (VLA) 与内联函数一起使用?

c - 使用二维数组写访问冲突

c - 如何使用 fscanf 进行条件解析?

c - 汇编 如何将操作码 DIV 转换为 C 代码

arrays - 遍历NASM中的阵列