小白垃圾笔记。不建议阅读。
为什么突然学这个呢?
因为因为因为一个栈溢出题,把我的ubuntu16搞崩了。具体是什么原因呢。
我很菜,我不知道pip是干啥的,之前装pwntools都是直接粘贴命令。然而这次,ubuntu16的python其实有一个高版本的带pwntools库的pyton3.10.但是呢我一不小心搞丢了。
于是乎我去装python结果遇到了很多问题,现在想想,是没有ssl证书。去网上搜了下没有解决。好吧,果断下卡里。ubuntu16太老了。之前有师傅说做哪个题用哪个版本的ubuntu。
我--没有坚持下去。我还是下了卡里。
1.patchelf
首先说下patchelf 它可以用于改elf文件属性的,可以改很多东西。比如动态链接库,动态链接器。
具体的可以去看这个
GitHub - NixOS/patchelf: A small utility to modify the dynamic linker and RPATH of ELF executables
其实没有学太明白。
先来说下连接器和链接库吧。我理解的就是连接器是用来链接程序的,他链接的时候会去找链接库。
chat这样说:
首先是更改libc链接库的指令
patchelf --set-interpreter 链接器路径 所要设置的文件的路径。
他会更改动态链接器的路径:
ldd用于查看文件加载的属性。例如动态链接库,和动态链接器的路径
ldd
-
linux-gate.so.1
是一个特殊的共享对象,它是Linux内核提供给用户空间程序进行系统调用的接口。 -
libc.so.6
是链接到程序的C库(GNU C Library)。它提供了C编程所需的基本功能和标准库函数。第二行=>后边的路径就是动态链接库的路径。做libc题目的时候就写这个。 -
第三行是动态链接库的路径。
至于更改动态连接库的指令,我用着好像不是很那啥。
没办法谁让咱菜呢。
2.glibc-all-in-one
还有一个是glibc-all-in-one
也是从github下载。
这个师傅写的博客也挺好的。sudo apt-get install zstd