首页 文章

处理来自不同部分的数据

提问于
浏览
0

我正在修改可执行文件,并希望将数据添加到 .rdata 部分 . 我在调试器中工作时可以正确读取它,但在运行独立的补丁可执行文件时却无法读取 .

如果我理解正确,问题是可执行文件可以加载到不同的基址中,这意味着我的 MOV 指令中的绝对地址实际上并不指向我的数据 .

如何让加载程序正确翻译附加说明中的地址?或者,如果我知道RVA,是否可以在运行时计算VA?

1 回答

  • 0

    您还需要修改可执行文件的重定位部分

    .reloc部分包含一个基本重定位表 . 基本重定位是对指令或初始化变量值的调整,如果加载程序无法加载链接器所假定的文件,则需要对其进行调整 . 如果加载器能够在链接器的首选基址加载映像,则加载器将完全忽略本节中的重定位信息 .

    您应该如何修改此部分超出我的范围,但在这里您可以找到有关microsoft的.reloc部分结构的文档:The .reloc Section

相关问题