c - 逆向工程疑惑

标签 c assembly x86 reverse-engineering

8048563:       e8 0d 00 00 00          call   8048575 <exit@plt+0x141>

为了好玩,我试图对二进制文件进行逆向工程,我在 objdump 输出中看到了这个调用。看着这一行,我认为调用将是动态链接的退出函数。然而,8048575 似乎是该程序.text 部分中的一个地址!

  1. 为什么会出现这种错误的函数命名?
  2. 调用登陆的地方有以下一行;为什么缺少函数序言?
8048575:       83 ec 6c                sub    esp,0x6c

最佳答案

这实际上不是 IAT/PLT 调用,而是对同一文件中另一个函数的调用。该文件可能已去除其内部符号,并且 objdump 将所有地址显示为地址前最后定义的符号 + 偏移量。由于没有内部符号,这将命中最后一个 plt 链接函数,因为 plt 部分出现在文本之前。

因此,显示的名称只是假的,可以忽略。

关于c - 逆向工程疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765922/

相关文章:

c - 在 64 位 gentoo linux 上运行 32 位程序

c - 我给 malloc 什么参数有什么关系?

在 C 中调用不带括号的函数如何工作?

c - 如何在C中对数组中的字符串进行排序?

c - 汇编语言中的 getchar()

c++ - 如果我使用一个用 C++ 编写的旧 Windows 95 .EXE,并且我想将 8 位整数转换为 16 位整数,会不会很困难?

计算全局偏移表在arm文字池中的地址

c - 微型 C 编译器链接我的程序集目标文件

assembly - SIMD minmag 和 maxmag

assembly - APIC多核启动协议(protocol)和ICR启动地址