
DriverBuddyは、Windowsカーネルドライバーのリバースエンジニアリングを支援するIDA Pythonスクリプトです。
DriverBuddy は、Windows カーネルドライバのリバースエンジニアリングに伴う面倒な作業の一部を自動化するための IDAPython プラグインです。 このプラグインには、以下のような便利な機能が多数含まれています。 その例は次のとおりです。
DispatchDeviceControl 関数を自動的に特定できることは、 ドライバのリバースエンジニアリング中に時間を節約できる作業です。 この関数は、受信したすべての DeviceIoControl コードを、 そのコードに対応する特定のドライバ関数にルーティングするために使用されます。 この関数を自動的に識別することで、各ドライバの有効な DeviceIoControl コードを はるかに迅速に見つけられるようになります。 さらに、クラッシュが原因でドライバの潜在的な脆弱性を調査する場合、 この関数の位置が分かれば、クラッシュした DeviceIoControl コードに関連する特定の関数呼び出しに焦点を絞り込むのに役立ちます。
すべての WDM ドライバ間で共有されるドライバ構造体がいくつかあります。 IO_STACK_LOCATION、IRP、DeviceObject 構造体など、これらの構造体を自動的に識別できると、 リバースエンジニアリングのプロセス中に時間を節約できます。 DriverBuddy は、これらの構造体の多くを特定して識別しようと試みます。
WDM ドライバと同様に、すべての WDF ドライバ間で共有される関数と構造体がいくつかあります。 これらの関数と構造体を自動的に識別することで、リバースエンジニアリングのプロセス中に 時間を節約し、これらの関数が使用されているドライバの未識別領域に コンテキストを提供します。
ドライバをリバースエンジニアリングしていると、解析の一環として IOCTL コードに遭遇することはよくあります。 これらのコードは、デコードされるとリバースエンジニアに有用な情報を明らかにし、 脆弱性が存在する可能性が高いドライバの特定の部分に 注目を集めることができます。
ストレッチゴール:
このソフトウェアは MIT License の下で公開されています。LICENSE を参照してください。