一、使用的工具:gdb和pwngdb。
先下载gdb,在下载pwngdb。
二、基础知识
- .got
GOT(Global Offset Table)全局偏移表。这是「链接器」为「外部符号」填充的实际偏移表。
- .plt
PLT(Procedure Linkage Table)程序链接表。它有两个功能,要么在
.got.plt节中拿到地址,并跳转。要么当.got.plt没有所需地址的时,触发「链接器」去找到所需地址
- .got.plt
保存全局函数的地址。

延迟绑定:
当多个代码块使用到相同的一个函数的时候,第一次的时候需要两次跳转才能找到真实的地址(一次跳到PLT,再跳到GOT),但是第二次的时候直接在PLT里面就能找到真实的地址,无需两次跳转,就类似于DNS解析中的缓存。&n
本文介绍了C语言程序中plt和got的原理,通过一个调用外部puts函数的例子,展示了如何使用gdb和pwngdb进行调试。在调试过程中,详细解释了.got和.plt节的作用,特别是延迟绑定机制,以及如何在.got.plt中查找函数地址。最终总结了plt和.got.plt在程序执行过程中的关键角色。
订阅专栏 解锁全文
3557

被折叠的 条评论
为什么被折叠?



