まえがき
Windows XP SP2用のドライバーを作成する必要がありました。 すぐにデバッグの問題がありました。 洗練されたSoftIceを使用したり、すべてのミスをなくしたり、ロールバックしたりしたくありませんでした。 したがって、私がよく使用し、その特性が非常に満足されているVirtualBox仮想マシンと、Microsoft Windowsデバッガーを使用することが決定されました。 数時間後、Cの行がWinDbgウィンドウに喜んで現れ、「リマインダー」を作成することが決定されました。これは良い「ハウツー」であることが判明しました。 それでは始めましょう...
ハウツー
1
[ホスト-マシン]最初に、仮想マシンのCOMポートを構成する必要があります。
これを行うには、[ホストモード] [ホストパイプ]を選択し、パイプの名前を記述します(\\。\ Pipe \ com_1が望ましい)。
次に、「犠牲者」を起動します。
2
[ターゲット-車]では、boot.iniを少し変更しましょう。 最初は、ハイライトされていないのは(写真で)だけでした。
最初の行をコピーし、図のように複数の行を追加して、新しい行を追加します。
表示されない場合は、マルチ(0)ディスク(0)rdisk(0)パーティション(1)のように行を変更します\ WINDOWS =“ Microsoft Windows XP Professional RU” / noexecute = optin / fastdetect
マルチ(0)ディスク(0)rdisk(0)パーティション(1)\ WINDOWS = "Microsoft Windows XP Professional RU" / fastdetect / debug / debugport = com1 / baudrate = 115200
再起動し、最後に角かっこ内に「デバッガー付き」または「デバッガー付き」のようなものがあるオプションを2ポイントから選択します。
3
[ターゲット-車]ドライバーの「スケルトン」を作成しましょう-make.bat、SOURCES、MAKEFILEファイル:
%SystemRoot%\system32\cmd.exe /c "cd %DDK_PATH%\bin\&&setenv.bat %DDK_PATH%\&&cd E:\vbg\debug\&&build -ceZ"
copy bin\i386\*.pdb %DBG_SYM_PATH%
copy *.c %DBG_SRC_PATH%
copy *.cpp %DBG_SRC_PATH%
copy *.h %DBG_SRC_PATH%
copy *.hpp %DBG_SRC_PATH%
pause
(Eの代わりに:\ vbg \ debug \ドライバーが置かれているフォルダーの名前を入力します)
TARGETNAME=driver
TARGETPATH=bin
TARGETTYPE=DRIVER
C_DEFINES=$(C_DEFINES)
INCLUDES=C:\WINDDK\2600\inc
SOURCES=driver.cpp
RELEASETYPE=DDK
!INCLUDE $(NTMAKEENV)\makefile.def
4
[ターゲット-車]次に、driver.cppドライバー自体、メインコードの上に:
extern "C"{
#include "ntddk.h"
}
#include "struct.h"
VOID OnUnload(IN PDRIVER_OBJECT DriverObject){
DbgPrint("OnUnload called\n");
};
extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistryPath){
AB v = {2,3};
PAB pv = &v;
_asm int 3 ;
v.a++;
pv->b++;
DbgPrint("a = %d, b = %d\n",va,vb);
theDriverObject->DriverUnload=&OnUnload;
return STATUS_SUCCESS;
}
このドライバーは、int 3割り込みでデバッガーを呼び出します。
5
[ターゲット-車]補助包含-ファイルstruct.h:
typedef struct _ab{
int a,b;
}AB, *PAB;
6
[ターゲット-車]次に、[マイコンピュータ]-> [プロパティ]-> [詳細設定]-> [環境変数]に移動し、3つの変数を追加します。
DBG_SYM_PATH-シンボルファイルが配置されるフォルダーへのパス*
DBG_SRC_PATH-コードとともに配置されるフォルダーへのパス**
DDK_PATH-DDKへのパス
** + * =次に、これらのフォルダは、ボール用に以前に作成されたディスクに配置する必要があります。
7
[ターゲット-車]これでビルドを開始できます-make.batをダブルクリックします。すべてが前もってうまくいけば、一番上に似た内容のウィンドウと、ドライバーディレクトリ内のいくつかの追加ファイルが表示されます。
8
[ホスト-マシン]デバッガーで、シンボルとコードファイルを使用してフォルダーへのパスを書き込みます(これらはボールのあるフォルダーに配置する必要があります)
9
[ホスト-マシン]実際には、デバッグにポート\\。\ Pipe \ com_1を入力します(デバッガーは耕さないと書きますが、これは割り込みまたは他のイベントをターゲットマシンで単に待機することを意味します。
10
[ターゲット-車]KmdKitリンクから道具だけでなく、カーネルを操作するためのプログラムセット[KmdKit]をダウンロードし、KmdManager(ツールフォルダーにあります)を実行します-ドライバーのインストール/開始/停止/アンインストール用のプログラム。
起動後、ドライバーへのパスを書き留めて(マウスで簡単にドラッグできます)、register + runを押します-システムがすぐにフリーズします-デバッガーが割り込みをインターセプトし、システム全体を停止したため、システムがフリーズします。 ホストマシンに移動して、次の項目を確認します。
11
[ホスト-マシン]デバッガがポップアップし、一番上に表示されたものが表示されます(表示されない場合は、少し待つ必要があります)。
手順を実行します。プログラムの最後に到達するまでF10を押し、Command-Kenelウィンドウで最後に「g」と入力してEnterキーを押します。 gを押すと、システムは自由に泳ぎ、ターゲットになります-システムのロックが解除されます。
タゲットシステムと次の段落に移動します。
12
[ターゲット-車][停止-登録解除]をクリックします。
私が書いたようにすべてがうまくいったなら、あなたはそれをやった。 そうでない場合は、質問してください。 この情報がお役に立てば幸いです。
ご清聴ありがとうございました。