BonDriver共有ツール総合 その2at AVI
BonDriver共有ツール総合 その2 - 暇つぶし2ch348:名無しさん@編集中
15/09/19 13:16:03.33 fMUe+7h+.net
315 続き
もう一つ疑問がある。
WinDBGに bp KERNELBASE!DeviceIoControl+0xF "j cx==0x8d81'';'g'" とcxレジスタが0x8d81の時停止するように
入れた時になぜ停止することがなかったのか。Ksproxy経由でも停止するはずである。
きっとマイナーファンクションコード(IOCTLコード)0x8d81がLinux用のものと違うはずだ。
そもそもマイナーファンクションコードは、デバイスドライバのプログラムソースがC言語で書かれていると仮定して
ユーザー モードアプリケーションにはWinMainとLRESULT CALLBACKがあるように、デバイスドライバには
DriverEntryとディスパッチルーチンがある。
システムやアプリケーションからデバイスドライバが呼び出されるとDriverEntryで登録されたディスパッチルーチンが
呼び出される。
アプリケーションからDeviceIoControlを実行するとディスパッチルーチンが呼び出され、引数から
メジャーファンクションコードを取り出す処理が行われる。
DeviceIoControlを実行の場合のメジャーファンクションコードはIRP_MJ_DEVICE_CONTROLであり、これを元に
switch case で分岐処理が行われ_IoCtlHandlerを呼び出す。
呼び出された_IoCtlHandlerの引数の中にスタックロケーションの構造体の
xxxx->Parameters.DeviceIoControl.IoControlCodeがある。
この値がマイナーファンクションコード(IOCTLコード)であり
これはswitch case で分岐処理に利用される。
switch caseに設定される定数はプログラマーの設定した値でありなんでもありだ。
この分岐処理の定数に0x8d81が存在すると仮定して解析をやってきたが、今では違う値だと考えている。
KERNELBASE!DeviceIoControlの所の調査からやり直すことにした。
Ksproxy経由でKERNELBASE!DeviceIoControlに来た時のcxレジスタの値を調べてみた。
0x0003 0x0008 0x0007 0x0003 0x000f.........
これらのコマンドとデータを送り込めればチューナーが何か反応するのかも。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch