- 论坛徽章:
- 0
|
对动态链接有点好奇。 想要知道怎么查看GOT中的内容 到底对应到动态链接库里的什么东西。
显示plt的内容
(gdb)disassemble 0x804835c
│0x804835c <sprintf@plt> jmp *0x804a000 │
0x8048362 <sprintf@plt+6> push $0x0 │
0x8048367 <sprintf@plt+11> jmp 0x804834c
跳转到0x804a000的内容。
(gdb)disassemble 0x804a000
0x8049ff4 <_GLOBAL_OFFSET_TABLE_> sub %bl,0x804(%edi)
0x8049ffa <_GLOBAL_OFFSET_TABLE_+6> add %al,(%eax)
0x8049ffc <_GLOBAL_OFFSET_TABLE_+8> add %al,(%eax)
我就继续显示GOT的内容。
print/x *0x804a000000
$1 = 0x8048362
或者
x/32xw 0x804a000
0x804a000 <_GLOBAL_OFFSET_TABLE_+12>: 0x08048362 0x08048372 0x08048382 0x08048392
0x804a010 <_GLOBAL_OFFSET_TABLE_+28>: 0x080483a2 0x080483b2 0x00000000 0x00000000
但是这个值0x08048362,不在动态链接库的一个地址范围内。
用cat /proc/13181/maps 得到
b7e68000-b7fc4000 r-xp 00000000 08:02 9310676 /lib/i386-linux-gnu/libc-2.13.so
b7fc4000-b7fc6000 r--p 0015c000 08:02 9310676 /lib/i386-linux-gnu/libc-2.13.so
b7fc6000-b7fc7000 rw-p 0015e000 08:02 9310676 /lib/i386-linux-gnu/libc-2.13.so
就是libc在加载的时候映射到的是b7e68000-b7fc4000 这段空间。
网上也有个帖子说这个的,但是他查看到的GOT的内容是在这个地址范围内的
网址如下。
http://web.cs.swarthmore.edu/~newhall/unixhelp/compilecycle.html
|
|