2009-09-03 7 views
5

私は、ioctl syscallsを介してカーネルドライバとやり取りするユーザーモードの共有オブジェクトをリバースエンジニアリングしようとしています。私は、カーネルドライバのioctlインタフェース(ioctlコマンド番号の#define、ioctlへの各種データの構造体定義)の定義を含むヘッダファイルを持っています。straceにカスタム構造体を追加する

私はstraceがシステムコールに渡されるユーザーポインタを参照解除する能力を持っていることを知っていますが、明らかにioctlに渡されたカスタム構造体の参照を解除することはできません。私の定義をstraceに追加する簡単な方法はありますか?ポインタアドレスだけでなく、意味のあるデータをioctlに渡すことができますか?

私はstraceのソースを持っていて、それをコンパイル/インストールに成功しましたが、私自身のヘッダを含める試みは何の効果もありませんでした。

答えて

2

straceビルドでは構造体を自動的にイントロスペクトしたりパーザを生成したりすることはありません。構造体を処理するコードを記述する必要があります。

+0

です。単に私の構造体の定義だけでは十分ではありません。私はそれが問題に対処するので、これを受け入れられた答えとしています。 Daveの答えは私の目標を達成するもう一つの良い方法です。 –

2

これを達成する最も簡単な方法は、ioctl()のライブラリインターポーザを作成することです。 Linuxでこれを行うには良いガイドがありますhere

アプリケーションで使用するカスタムコマンド番号を確認できます。これらの構造体をダンプします。