VA和内存地址
这应该是一个简单的问题:我知道 PE 的 VA = RVA + 映像库,现在我尝试在反汇编程序中找到一个字符串,并且恰好位于 .text 部分中的 0042720E 处。
imagebase是400000,2720E是RVA,目前还可以。
但是为什么当我在调试器中加载 exe 时,指令映射的内存是 0140720E ?
0140720E(我在ram中看到的)和0042720E(VA)与FE0000不同,为什么呢?我错过了什么吗?
This should be a simple question: I know that VA = RVA + imagebase for a PE, now I'm trying to locate in a disassembler a string and happens to be located at 0042720E in the .text section.
The imagebase is 400000 and 2720E is the RVA, it is okay till now.
But why when I load the exe in a debugger the memory where the instruction is mapped is 0140720E ?
0140720E (what I see in ram) and 0042720E (the VA) differs by FE0000, why is that? Am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
实际上只有两种可能性:发生了重新分配或者您的 RVA 错误。更有可能的是它的重新分配,特别是如果您由于 ASLR 而在 Windows Vista 或 Windows 7 上运行。根据您附加的方式和使用的调试器,可以让调试器调整报告的地址以匹配 PE 中指定的基本部分加载地址,ollydbg 是其中之一(您必须通过 ollydbg 启动应用程序,对于动态链接库)
There are really only two possibilities: a reallocation occured or you got the RVA wrong. The more likely is its a reallocation, especially if your running on windows vista or windows 7 due to ASLR. Depending on how you attached and what debugger your using, its possible to get the debugger to adjust the reported addresses to match the base section load addresses specified in the PE, ollydbg is one of these (you must start the app through ollydbg, same for dlls)