更换glibc版本进行调试


前言

pwn题目在进行本地调试的时候,加载的是本地的libc。

但是我们为了和远程环境一样,需要使用不同的libc版本进行调试

这就需要更换本机的glibc版本进行调试了

下载所需要的glibc源码

这里用到的是github上的一个工具 glibc-all-in-one

可以自动化下载libc

然后就是生成不同的libc

./update_list #更新最新版本的glibc
cat list #查看可下载的glibc
./download glibc #glibc为你想要下载glibc的名字

patchelf

github上的工具 可以修改elf中的ld和libc路径 patchelf

./bootstrap.sh
./configure
make
sudo make install
make check

生成所需的符号链接

需要配置ld 和 libc

cd /lib64  #进入64位的目录   glibc 32位就 cd /lib
sudo su    #进入root态
ln -s /home/yh/glibc-all-in-one/libs/2.31-0ubuntu9_amd64/ld-2.31.so ./31_0-linux.so.2 
#31代表glibc版本,0代表小版本(单纯为了好记)
ls -l #可以看到生成的符号链接

更改elf文件的ld和libc

patchelf --set-interpreter /lib64/31_0-linux.so.2    ./bin   
#bin是二进制文件名   第一个参数是ld.so的目录 bin是二进制文件
patchelf --set-rpath  /home/xx/glibc-all-in-one/libs/2.31-0ubuntu9_amd64/ ./bin
#  第一个参数是libc所在目录 bin是二进制文件
ldd ./bin #查看elf的ld和libc

参考链接:
[原创]关于不同版本 glibc 更换的一些问题
Linux中进行glibc源码调试的一种方法


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM