我正在使用其 ELF 和 DWARF 信息获取程序的所有数据,并将 pin 工具连接到当前正在运行的进程——它是一种使用 Pin 工具的调试器。
为了从堆栈中获取局部变量,我正在使用可以从 Pin 访问的寄存器 EIP、EBP 和 ESP。
让我感到奇怪的是,当 pin 工具附加到进程时,我期望 EIP 指向正在运行的当前函数,但 EIP 指向的是 .PLT 部分。换句话说,如果在 Foo() 运行时 pin 工具被挂接到进程中,那么我期望 EIP 指向 Foo 函数内的某个地址。但是它指向 .PLT 部分的开头。
我需要知道的是进程当前所在的函数——有没有办法使用 .PLT 部分获取函数的地址?有没有其他方法可以从堆栈或使用 Pin 获取函数的地址?我希望我足够清楚,如果有任何问题,请告诉我。