elf

プログラミング

elfバイナリでの関数フック. 強引編

今までのものは手間はかかっているもののきちんと手順を踏んで、わりと行儀よく(?)関数のフックを実現していました。今回は豪快な関数フックの方法を試してみたいと思います。 ※ なおこの手順で問題が起こっても自己責任でお願いします。前提条件として 32bitのアプリケーションとしています。 その方法とは、対象関数の先頭に、自分のフック関数へのジャンプを埋め込んでし...
プログラミング

セクションヘッダがない場合の関数フック(elf編)

前回は共有ライブラリ(.so)での関数フックの話でした。そしてこれはセクションヘッダがある前提で rel.plt セクションを見つけました。今回はセクションヘッダを参照しないでPLTの場所を特定し、関数フックを実現する案を記載してみようと思います。 そもそも elf実行体がメモリにロードされて実行されている状況では、elf実行体そのものにセクションヘッダがあ...
プログラミング

共有ライブラリ(.so) の関数呼び先をフック

前回の内容でとりあえずシンボル情報にアクセスする糸口がわかりました。 これを利用して、共有ライブラリの関数フックを考えてみたいと思います。 sample.app が共有ライブラリ libfunc.so と libbar.so を利用しているとします。そしてこれらが下記の図に示すような呼び出し関係を持っているとします。 しかし、このlibbar.so の関数に...
プログラミング

Elfフォーマットのシンボル情報を取得したい

gnuのツールでは、objdump や readelf, nm といったツールで実行体の情報を出力することができます。これはElfバイナリにセクションやシンボルの情報がどのように格納されているかがセクションヘッダとして格納されているために表示できます。 そのため、stripコマンドでセクションヘッダを削除してしまうと、これらの情報が表示されなくなってしまいま...