環境変数 LD_PRELOAD に共有ライブラリを指定すると、そのライブラリがすべてのライブラリに先立ってロードされる。 これを利用して通常ロードしている共有ライブラリ内の関数を置き換えることができる。(参考: man ld.so) dlsym(3) は、シンボル名の文字列を引数に取り、そのシンボルのアドレスを返す。 これを利用して、関数のアドレスを得ることができる。(参考: man dlsym) GCC 拡張 __attribute__((constructor)), __attribute__((deconstructor)) GCC 拡張で __attribute__ キーワードと共に関数の属性(attribute)を指定することができる。(参考: info gcc –> “C Extensions” –> “Function Attributes”) constructor 属性が