Debugging 如何获取.rdata的内存基?

Debugging 如何获取.rdata的内存基?,debugging,assembly,memory,x86,ida,Debugging,Assembly,Memory,X86,Ida,我是汇编语言新手,尝试获取.rdata部分的内存基础,因为我想将其中的字符串与堆栈上的当前字符串进行比较。我使用的是x64dbg 示例:在一个特定调用中,我从存储在.rdata中的一些数据中看到(相对)内存地址,假设它是0x001C0000,并且.rdata从0x001A0000开始,到0x001F0000结束。在x64dbg中,我可以通过键入mem.base(0x001C0000)来获取.rdata内存库,返回0x001A0000,但如何在x86汇编语言中实现?我试图做的是从.rdata访问数

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

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

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

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

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


其中一个将命名为“.rdata”。就在名称下,有“虚拟地址”字段。这就是你想要的。

你在写汇编代码吗?在这种情况下,只需使用一个标签,让链接器处理地址。不,我实际上是在反汇编二进制文件。我只想知道.rdata的基础。我不太明白您希望如何处理
.rdata
(您确定您的意思不是
rodata
?)。如果要将
.rdata
中的字符串与堆栈上的字符串进行比较,您当然只需要这两个字符串的地址。@Woods如果它是ELF二进制文件,请键入
objdump-h binary.file
其中
binary.file
是您的二进制文件。如果包含节头,这将为您提供
binary.file
中所有节的地址。@fuz:
.rdata
是Linux/OS X
.rodata
的Windows等价物,或者我是这么听说的。