我有一个64位COFF目标文件(没有源代码或调试信息),我需要从中提取单个过程。
该过程相对较短,其仅依赖项为:
我已经尝试过拆解和重新组装代码;但是,由于一些奇怪的原因,即使代码在调试器和反汇编程序中看起来相同,它的行为方式也不一样。 (我已经尝试确保可执行部分具有正确的标志等,但据我所知,所有这些都是正确的,并且值也与它们“应该”在运行时的内容相匹配。)
有没有办法 直接 将函数复制到新的目标文件(或删除除该函数之外的所有), 没有必须在流程中反汇编并重新组合代码?
答案 0 :(得分:1)
我不确定,一般情况下有简单的方法。
例如,多个过程可以引用一个共享代码段(即静态函数)。因此,您需要为文件中的所有代码块构建调用图,并获取您的过程引用的代码块。比你应该修复所有跳转和调用中的地址,因为会有新的代码布局。