【バイナリ解析図解】関数呼び出し時の動作

関数呼び出し時のアドレス解決方法

関数が最初に呼ばれる時、PLTに飛んだ後にGOTの対応するスロットから飛び先アドレスを取得して飛ぶ。 GOTから対応する共有ライブラリ関数のアドレスを取得して間接ジャンプする。
  • PLT (Procedure Linkage Table):関数が実際に呼び出されるときにシンボル解決を行う。
  • GOT (Global Offset Table): 共有ライブラリ関数のアドレス一覧。実際に関数が呼ばれてからアドレスが設定される。
 

同一ファイルで定義された関数の呼び出し

ソースコード(callFunc.c)
アセンブリ

解説画像

外部ファイル(ライブラリ)の関数の呼び出し

ソースコード(printf.c)
アセンブリ