关于切换libc版本
五月 12, 2021
修改LD_PRELOAD
1 | export LD_PRELOAD="./libc.so.6" |
1 | p = process(["file_name"],env={"LD_PRELOAD":"./libc.so.6"}) |
通过修改LD_PRELOAD
可以使程序加载指定的libc,一般用于加载题目提供的libc,但这种状况是没有debug symbol的。
glibc-all-in-one+patchelf
调试程序时不需要加载目标libc只需要某特定版本可用这个组合,带有debug symbol。
自动化下载libc:
下载想要的libc版本后用patchelf修改文件硬编码中的libc和ld路径
安装patchelf:
1 | apt install patchelf |
使用:
1 | patchelf --set-interpreter ~/glibc-all-in-one/libs/2.23-0ubuntu11.2_amd64/ld-2.23.so elffile |
简化sh脚本:
1 | set -e |
查看评论