下载
我是在CentOS6下首先将gcc升级到8.1后才着手升级gdb的。如果直接采用旧版本的gcc编译,可能会由于源码中出现某些使用了新特性的情况导致中途报错。升级gcc的过程可以参考我的上一篇文章CentOS6上编译安装gcc8.1版本全过程记录(包括排坑与常见错误解决)。下面进入正题:
先到http://ftp.gnu.org/gnu/gdb/去找gdb最新的源码,然后下载即可。
sudo yum install glibc-devel bison flex texinfo build-essential
wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.tar.xz
tar -xf ./gdb-8.1.tar.xz
cd ./gdb-8.1
如果目标机网络不好,则需要下载gdb源码到本地后上传。
编译
./configure --prefix=/usr/local/gdb8
配置完成之后就可以开始编译了,这里依据目标机配置选定make后的参数。
make -j8
编译完后进行安装
sudo make install
至此已将gdb8.1安装到了/usr/local/gdb8下。
软链接
先查看当前gdb的路径:
which gdb
发现在/usr/bin下。于是先进行备份:
cd /usr/bin
sudo mv ./gdb ./gdb.old
下面链接到新编译的gdb上:
cd /usr/local/gdb8/bin
sudo ln -s $(pwd)/gdb /usr/bin/gdb
安装增强工具
peda是肯定要装的:
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
顺便一提,旧版本的gdb可能出现安装peda后启动时报错的情况,这个问题主要是由python不同版本间的语法差异造成的,解决起来也很容易。
1. 先定位到shellcode.py文件,修改其中字典相关语法:
2. 还是shellcode.py文件,修改其中版本号获取代码:
3. 修改peda.py中版本号获取代码:
截图时有部分代码忘了截行号,如果出现类似问题,在启动gdb时会有相应的提示,对照其中标定的位置一看就知道了。
本文档详细记录了在CentOS6系统上如何从源码编译安装GDB 8.1版本,并且安装了调试增强工具peda。首先需要升级gcc到8.1,接着下载gdb源码,进行编译和安装。安装完成后,创建软链接指向新版本的gdb,并介绍了解决旧版本gdb安装peda后启动报错的方法,涉及对shellcode.py和peda.py的修改。

被折叠的 条评论
为什么被折叠?



