zoukankan      html  css  js  c++  java
  • 更换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源码调试的一种方法

  • 相关阅读:
    哲学家进餐
    文件系统
    文件读写原理(转)
    数据库join种类
    http与https区别
    数字证书(转)
    B. Rebranding
    扩展欧几里德算法、证明及其应用
    CodeForces 7C Line
    UVALive 7147 World Cup
  • 原文地址:https://www.cnblogs.com/z2yh/p/13881605.html
Copyright © 2011-2022 走看看