8048563: e8 0d 00 00 00 call 8048575 <exit@plt+0x141>
为了好玩,我试图对二进制文件进行逆向工程,我在 objdump 输出中看到了这个调用。看着这一行,我认为调用将是动态链接的退出函数。然而,8048575
似乎是该程序.text 部分中的一个地址!
- 为什么会出现这种错误的函数命名?
- 调用登陆的地方有以下一行;为什么缺少函数序言?
8048575: 83 ec 6c sub esp,0x6c
最佳答案
这实际上不是 IAT/PLT 调用,而是对同一文件中另一个函数的调用。该文件可能已去除其内部符号,并且 objdump 将所有地址显示为地址前最后定义的符号 + 偏移量。由于没有内部符号,这将命中最后一个 plt 链接函数,因为 plt 部分出现在文本之前。
因此,显示的名称只是假的,可以忽略。
关于c - 逆向工程疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765922/