gdb插件gef的安装方法

2025-10-21 16:02:33

1、GDB是Linux下程序调试的利器,但是界面过于简单,调试效率较为低下,网上给出了两个插件,分别是peda和gef插件,peda插件安装较为简单,这里就不介绍了,而gef插件安装较为复杂,部分命令需要依赖库的支持,所以这里重点介绍如何安装gef插件及其依赖库。

这里选用的是Debian 8.4 x86的环境,默认Python版本是2.7.9,且默认未安装GDB,下面是安装的过程。

2、Debian8.4默认未安装GDB,所以首先安装GDB,命令如下所示:

root@localhost:~# dpkg -i gdb_7.7.1+dfsg-5_i386.deb

然后顺便安装一下gdbserver,命令如下所示:

root@localhost:~# dpkg -i gdbserver_7.7.1+dfsg-5_i386.deb

Debian8.4默认python版本是2.7.9,gef插件需要unicorn模块,下载unicorn-1.0.1.tar.gz源码包开始安装,命令如下所示:

root@localhost:~# python setup.py install

gef插件还需要filebytes模块,下载filebytes-0.9.15.tar.gz源码包开始安装,命令如下所示:

root@localhost:~# python setup.py install

gef插件还需要ropper模块,下载ropper-1.11.6.tar.gz源码包开始安装,命令如下所示:

root@localhost:~# python setup.py install

gef插件还需要keystone模块,该模块编译需要安装cmake,所以先安装cmake,命令如下所示:

root@localhost:~# dpkg -i cmake-data_3.0.2-1_all.deb

root@localhost:~# dpkg -i cmake_3.0.2-1_i386.deb

这里以动态安装keystone为例进行安装命令说明,解压keystone.zip,进入keystone目录下,执行下面命令:

root@localhost:~/keystone# mkdir build

root@localhost:~/keystone# cd build/

root@localhost:~/keystone/build# ../make-share.sh

执行完成之后,进行cmake编译,默认会编译所有的架构,但如果只编译x64和x86架构,可以在DLLVM_TARGETS_TO_BUILD选项里进行设置,命令如下所示:

root@localhost:~/keystone/build# cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DLLVM_TARGETS_TO_BUILD="AArch64;X86" -G "Unix Makefiles" ..

root@localhost:~/keystone/build# make -j8

编译完成之后下面开始安装keystone,命令如下所示:

root@localhost:~/keystone/build# make install

安装完成之后,keystone被安装在/usr/local/目录下,下面再更新一下动态链接库信息,命令如下所示:

root@localhost:~/keystone/build# ldconfig

keystone安装完之后,/include/keystone包含一些库和C头文件,此外还安装了一个kstool的工具,安装在kstool/kstool下,用来测试反汇编代码的,比如测试如下代码:

root@localhost:~# kstool x32 "add eax, ebx"

add eax, ebx = [ 01 d8 ]

最后安装keystone-engine模块,下载keystone-engine-0.9.1-3.tar.gz源码包开始安装,命令如下所示:

root@localhost:~# python setup.py install

这样一来gef插件的依赖库环境就配置完成了,下面安装gef插件即可,将gef文件夹拷贝到/root目录下,然后执行下面的命令进行安装:

root@localhost:~# echo "source ~/gef/gef.py" > ~/.gdbinit

gef插件安装完成之后,打开gdb即可,如下所示:

gdb插件gef的安装方法

3、可以看到能够加载其中的65条命令,而唯一一条不能加载的命令是因为retdec-python模块不支持python2,所以这里就可以忽略该条命令。

这里找一个x86的ELF程序,使用gdb打开并在main函数下断点,可以看到插件清楚的展示了寄存器、栈以及汇编代码等内容,如下所示:

gdb插件gef的安装方法

gdb插件gef的安装方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢