(gdb) si0x08048470 in add@plt ()(gdb) si0x08048476 in add@plt ()(gdb) si0x0804847b in add@plt () (gdb) si0x08048460 in ?? ()(gdb) si0x08048466 in ?? ()(gdb) si0xf7ff04f0 in ?? () from /lib/ld-linux.so.2
最终进入了动态链接器 /lib/ld-linux.so.2 ,在其中完成动态链接的过程并调用 add 函数,我们不深入这些细节了,直接用 finish 命令返回到 main 函数:
(gdb) si0xf7ff04f2 in ?? () from /lib/ld-linux.so.2(gdb) finishRun till exit from #0 0xf7ff04f2 in ?? () from /lib/ld-linux.so.20x080485fa in main () at main.c:99 printf("%d + %d = %d\n", a, b, add(a, b));
这时,再来看看0x804a00c这个地址里保存的是什么:
(gdb) x 0x804a00c0x804a00c <add@got.plt>: 0xf7fd4538(gdb) x 0xf7fd45380xf7fd4538 <add>: 0x8be58955