HackerNews

GDBを使用してPLTスタブからGOTアドレスを取得する方法

How to get the GOT address from a PLT stub using GDB

https://rafaelbeirigo.github.io/cybersec-dojo/research/2025/11/01/how-to-get-the-got-address-from-a-plt-stub-using-gdb.html


本記事では、GDBを用いてPLTスタブからGOT(Global Offset Table)アドレスを取得する方法について解説しています。共有ライブラリから関数を使用する際、例えばputsなどは、動的リンクと遅延バインディングを選択すると、バイナリに実際のオブジェクトコードは含まれず、実行時にリンクされます。この時、リンカは実際のputsアドレスを持つプレースホルダーを追加します。最初のputs呼び出し時に動的リンカがこのプレースホルダーを本物のアドレスにパッチします。このプロセスにおいて、プログラムはPLTスタブを介してputsを呼び出します。PLTスタブは、putsの呼び出しの際に実行される短いコードであり、動的リンカへのジャンプを含みます。このメカニズムを理解するためのテストプログラムのソースコードも示されており、GDBを用いてそのアドレスを調べる手順が説明されています。