所有glibc可以在github仓库获得
1
| git clone https://github.com/matrix1001/glibc-all-in-one.git
|
1
| p = process([ld,filename],env={'LD_PRELOAD':env})
|
ld为动态ld文件目录,filename为elf文件目录,env为libc文件目录。
例子:
1
| p = process([‘./ld-2.27.so’,filename],env={‘LD_PRELOAD’:’./libc-2.27.so’})
|
方法二:patchelf
第一种,改变链接器+改变搜索路径
1
| patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --set-rpath ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64 target_file
|
第二种,改变链接器+直接改变动态库的路径
1
| patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --replace-needed libc.so.6 ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/libc.so.6 target_file
|