首页 > 解决方案 > 如何获取.rdata的内存基础?

问题描述

我是汇编语言的新手,并尝试获取 .rdata 部分的内存库,因为我想将那里的字符串与堆栈上的当前字符串进行比较。我正在使用 x64dbg。

示例:在特定调用中,我从存储在 .rdata 中的某些数据中看到(相对)内存地址,假设它是0x001C0000并且 .rdata 开始0x001A0000并结束于.rdata 0x001F0000。在 x64dbg 中,我可以通过键入 mem.base(0x001C0000)which 返回来获取 .rdata 内存库,0x001A0000但我如何在 x86 汇编语言中做到这一点?我想要做的是从 .rdata 访问数据,但我不知道内存库的偏移量。我怎样才能做到这一点?

标签: debuggingassemblymemoryx86ida

解决方案


使用“dumpbin.exe”。方法如下:假设您的文件是“foo.exe”,请执行以下操作:

dumpbin.exe /all foo.exe >foo.txt

然后,打开 foo.txt 并查找“SECTION HEADER #1”并检查名称(例如“.text”)。然后,查找“SECTION HEADER #2”、#3 等。

其中之一将被命名为“.rdata”。在名称下方,您有“虚拟地址”字段。那正是你想要的。


推荐阅读