gdb libc函数偏移量不匹配objdump

时间:2014-12-15 11:24:34

标签: assembly linker operating-system shellcode

我正在64位linux上编写一些ROP shellcode。我发现我的小工具都使用了' objdump -d /lib64/libc.so.6'和' ROPgadget /lib64/libc.so.6'

这只是意味着我从libc的基础中选择了包含我希望执行的汇编指令的偏移量。

使用来自objdump的值作为/ proc / $ pid / maps [1]中找到的libc基址的偏移量,我制作了我的有效负载。但是,当使用gdb单步执行代码时,使用objdump和ROPgadget找到的一些小工具不会出现。

为什么看起来某些libc代码丢失了?我使用了错误的基地址吗?

[1]

7ffff7818000-7ffff79b5000 r-xp 00000000 08:03 5317651                    /lib64/libc-2.19.so
7ffff79b5000-7ffff7bb4000 ---p 0019d000 08:03 5317651                    /lib64/libc-2.19.so
7ffff7bb4000-7ffff7bb8000 r--p 0019c000 08:03 5317651                    /lib64/libc-2.19.so
7ffff7bb8000-7ffff7bba000 rw-p 001a0000 08:03 5317651                    /lib64/libc-2.19.so

P.S。

lrwxrwxrwx 1 root root 12 Dec 11 15:42 /lib64/libc.so.6 -> libc-2.19.so

并禁用ASLR

缺少的小工具:

$ objdump -M intel -D /lib64/libc-2.19.so | grep -B1 ret | grep rsp | grep pop
63fd:   5c                      pop    rsp
6a98:   5c                      pop    rsp

只是为了证明我可以做数学: 0x7ffff7818000 + 6a98 = 0x7ffff781ea98

(gdb) disas 0x7ffff781ea98
No function contains specified address.

0 个答案:

没有答案
相关问题