这应该是一个简单的问题:我知道 VA = RVA + PE 的 imagebase,现在我试图在反汇编程序中找到一个字符串,恰好位于 .text 部分的 0042720E。
imagebase是400000,2720E是RVA,到现在没问题。
但为什么当我在调试器中加载 exe 时,指令映射到的内存是 0140720E?
0140720E(我在 ram 中看到的)和 0042720E(VA)的区别在于 FE0000,这是为什么?我错过了什么吗?
最佳答案
实际上只有两种可能性:发生了重新分配或者您弄错了 RVA。它更有可能是重新分配,特别是如果您由于 ASLR 而在 Windows Vista 或 Windows 7 上运行。根据您的连接方式和您使用的调试器,可以让调试器调整报告的地址以匹配 PE 中指定的基本部分加载地址,ollydbg 是其中之一(您必须通过 ollydbg 启动应用程序,对于dll)
关于c++ - VA 和内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780620/