【发布时间】:2021-12-01 12:15:11
【问题描述】:
我试图理解atexit()函数的源代码,但我坚持this (第 409 行 ~ 第 415 行,PTR_DEMANGLE())
我可以理解 inline asm 需要做一个重要的进步
xor rdx,QWORD PTR fs:0x30
但我并没有真正理解 fs:0x30 的含义
所以我搜索了谷歌,但在 Windows 上只得到 fs:0x30 的含义,这与 PEB 相关
我也试过直接搜索PTR_DEMANGLE()函数,找到this,但是没有用
这也给我提出了一个新问题:
说,我需要知道 fs:0xXX 的用法,这是很少使用的。我应该直接参考哪本手册? ELF 标准文档?
顺便说一句,英语不是我的母语,这篇文章可能有一些语法或拼写错误,请见谅,非常感谢!
【问题讨论】:
-
顺便说一句,我删除了linux-kernel 标签,因为这段代码不是内核的一部分。 (事实上,内核使用 fs / gs 的方式与用户空间完全不同。)
-
fs:0x30 紧邻用于
-fstack-protector-strong的标准 fs:0x28 堆栈 cookie,大多数发行版在其 GCC 配置中默认启用。
标签: assembly x86-64 reverse-engineering glibc thread-local-storage