库函数与系统调用
介绍pwn中常见的libc函数
库函数与系统调用
atoi()
标准库函数
ASCII to Integer
将字符串转换为对应的整数值
1 |
|
read()
系统调用
1 |
|
addr:建议的映射地址。如果传入NULL,操作系统会自动选择映射的地址
length:映射区域的长度,单位是字节
prot:指定映射区域的访问权限,通常是以下几个值的组合:
- PROT_READ:页可以被读取
- PROT_WRITE:页可以被写入
- PROT_EXEC:页可以被执行
- PROT_NONE:页不能被访问
flags:映射的特性和行为,常见的值有: - MAP_SHARED:修改同步到文件或设备,适用于共享内存
- MAP_PRIVATE:修改不会影响文件或设备,而是创建一个映射的副本,适用于私有内存
- MAP_FIXED:如果映射地址已经有映射区域,它会被替换
- MAP_ANONYMOUS:映射不与任何文件关联,通常用于申请匿名内存,
fd
必须为-1,offset也必须为0 - fd:文件描述符,指向需要映射的文件。如果映射匿名内存,传入-1
- offset:文件偏移量,表示映射内容在文件中的起始位置,映射必须是页大小的整数倍。
阅读glibc源代码
通过libc
库文件本身,无法直接查看其源代码。libc
文件(libc.so
或libc.so.6
)是已经编译好的共享库,它们包含了库的二进制实现。
库函数与系统调用
http://example.com/2024/12/07/libc/