pwn学习笔记-什么是gcc、libc、glibc、libc++、libstdc++

发布时间 2023-03-27 11:23:09作者: 玉石听

在做pwn题目的时候总是会遇到自己不熟悉,不会的内容,每次都觉得非常难整理和理清,不如每遇到一次就做一次笔记,方便随时复盘。

 

gcc

gcc在我学习c语言的时候,编译阶段有用到,和pwn题貌似关系不大,放一放。

 

libc

libc是Linux下的标准C语言库,也是当初写helloworld里包含的头文件#include <stdio.h>定义的地方,不过后来被glibc取代了。

不过我做题的时候还是有碰见libc版本泄露。

 

glibc

glibc是Linux系统中最底层的API,几乎所有的运行库都要依赖glibc。

 

eglibc

e是Embedded的意思,意为变种glibc

其作用是为了更好的支持嵌入式架构,可以支持不同的shell,它是二进制兼容glibc的。

 

glib

glib也是一个c库,但是它是可移植的,并且没有glibc那么重要。

它与glibc并没有什么太大的关系,在ubuntu系统里也并不会默认安装(可以通过apt-get install libglib2.0-dev手动安装),著名的GTK+和Gnome底层用的都是glib库。

 

你写的C代码在编译的过程中有可能出现明明是这些库里面定义的变,却量还会出现’Undefined’, ‘Unreference’等错误,这时候你可能会怀疑是不是这些库出问题了? 是不是该动手换个gilbc/eglibc了? 这里强调一点,在你准备更换/升级这些库之前,你应该好好思考一下,你真的要更换/升级吗?你要知道你自己在做什么!你要时刻知道glibc/eglibc的影响有多大,不管你之前部署的什么程序,linux系统的ls,cd,mv,ps等等全都得依赖它,很多人在更换/升级都有过惨痛的教训,甚至让整个系统奔溃无法启动。所以,强烈不建议更换/升级这些库!

 

参考文章:

https://blog.csdn.net/qq_41854911/article/details/122017552