从数据段调用函数

Call functions from data segment

我想对来自 root-me.org(PE x86 格式)的“xormadness.exe”可执行文件进行逆向工程分析,但我不明白为什么调用函数数据段以及我们如何知道调用了哪个函数。

.text:0040105e ff 15 0c 20 40 00                call   DWORD PTR ds:0x40200c

到这里可以看到调用了一个函数,但是不明白为什么要用数据段

.rdata:0040200c 80                               0x80 

另外,这个地址和函数无关,只有一个0x80字节的值,我不明白。

这是一个间接函数调用,由 DWORD PTR 标记序列证明。从地址 0x40200c 的双字中获取函数地址,然后对该函数执行调用。

ds: 段前缀是一个转移注意力的问题。这正是直接寻址的内存操作数默认的段。由于您可能正在为平面内存模型编程,因此您可以忽略这一点。