在kali下使用gdb以源码方式调试glibc
2017-11-06 15:15
417 查看
环境
kali 2017.2为什么写这篇记录
其实这个主要是之前调试linux堆漏洞的时候,崩溃的定位有点困难,尤其是free的时候出错的时候,之前硬跟了free的汇编半天才找到问题,心累啊~步骤
0x01 修改/etc/apt/sources.list,将deb-src那条记录前面的注释去掉,我的修改后如下:
root@kali:~# cat /etc/apt/sources.list # # deb cdrom:[Debian GNU/Linux 2017.2 _Kali-rolling_ - Official Snapshot amd64 LIVE/INSTALL Binary 20170917-01:51]/ kali-rolling contrib main non-free #deb cdrom:[Debian GNU/Linux 2017.2 _Kali-rolling_ - Official Snapshot amd64 LIVE/INSTALL Binary 20170917-01:51]/ kali-rolling contrib main non-free deb http://http.kali.org/kali kali-rolling main non-free contrib deb-src http://http.kali.org/kali kali-rolling main non-free contrib
之后就更新一下list吧(既然有apt就不要多个get那么麻烦了)
apt update
0x02 安装带调试符号的libc
32和64都装吧apt install libc6-dbg apt install libc6-dbg:i386
之后就下载源码到当前目录
apt source libc6-dev
之后目录就出现下面几个东西,glibc-2.24就是源码目录,当然版本有可能不同
glibc-2.24 glibc_2.24-17.debian.tar.xz glibc_2.24-17.dsc glibc_2.24.orig.tar.xz
0x03 开始调试之旅吧
gdb不会自动找到源码,还需自己干Breakpoint 1, __GI___libc_free (mem=0x555555757460) at malloc.c:2954 2954 malloc.c: No such file or directory.
我们在源码目录找一下
root@kali:~# find ./glibc-2.24/ -name malloc.c ./glibc-2.24/.pc/any/cvs-malloc-hardening.diff/malloc/malloc.c ./glibc-2.24/malloc/malloc.c
最后用directory命令指定一下就好了
gdb-peda$ directory ~/glibc-2.24/malloc/ Source directories searched: /root/glibc-2.24/malloc:/root/glibc-2.24/malloc/malloc.c:$cdir:$cwd
我们再ni,那就看到执行到源码的那行代码的具体内容了
0x00007f2eddb4851d 2955 if (__builtin_expect (hook != NULL, 0))
好了,大家可以好好去玩耍了
PS:需要哪个文件的时候我们directory再指定就好了
相关文章推荐
- 如何使用gdb调试,类似于vc那样的带源码窗口的方式?
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- 使用gdb调试glibc
- db的简单使用和gdb+gdbserver方式进行ARM程序调试
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- nginx源码分析--使用GDB调试
- nginx模块_使用gdb调试nginx源码
- Android无源码调试Native代码(使用GDB)
- 修改hotspot源码,使用GDB调试
- 使用gdb调试glibc
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- gdb 使用python源码调试
- caffe使用gdb单步调试及源码阅读
- nginx模块_使用gdb调试nginx源码
- nginx源码分析--使用GDB调试(strace、 pstack )
- nginx源码分析--使用GDB调试(strace、 pstack )
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- nginx模块_使用gdb调试nginx源码
- 使用hello-gl2建立ndk-gdb环境(有源码和无源码调试环境)
- nginx源码分析--使用GDB调试