Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图弄清楚这两个部分之间的区别,这似乎是这个问题的重复,但那里给出的答案并没有解释很多,所以我想要一个更详细和简洁的解释。
拆分是出于安全原因。默认情况下(过去仅-Wl,-z,relro在过去).got部分被重新映射为只读,一旦动态加载器在启动时(即进入main函数之前)解决了所有数据重定位,以防止某些类型的漏洞利用。由于惰性符号绑定.got.plt而无法重新映射(除非或在这种情况下使用惰性绑定并重新映射)。LD_BIND_NOW-Wl,-z,now.got.plt
-Wl,-z,relro
.got
main
.got.plt
LD_BIND_NOW
-Wl,-z,now