。どのようにゲート記述子を識別するために:
どのようなゲートディスクリプタカーネルに2G、2G空間からユーザ空間、一つの部屋から別のものに入ると、私たちはドアを通って行く必要がありますか?あり、我々はまた、ドアを通って行く必要があります。
Sビットは1100ビット= 1種類である場合には
この記述子は、ゲート記述子です:
。他の記述子と区別特徴は何2つのディスクリプタ:
1.一般的なコード、格納されたアドレスEIPのために実行されるCPUのコードアドレス、及びドアに、コード・アドレスは、ベース(新しいアドレスのセグメント・セレクタ)+ offset31によって実行される:オフセット16 + 15:ゼロ。
CALL CS:EIP(EIPどんな卵を使用していなかったこの時点では、ハッシュ番号...)
_asm
{
CALLのfwordのPRT [0x48:12345678]
}
コードが実行されると、CPUはGDTに、この位置が空になっているので、ルックアップテーブルGDTは、私たちが書き換え助けるために、この場所を選んだ方段落CSに従ってサブ0x0048を選択します。
0000(OFFSET1)ec00`0008 0000(OFFSET2)
2個のオフセットアドレスからなる、または実際のEIPにジャンプしてドアを中断
位置P 1まで、3までDPLは、(コードができR3層で実行されているため)、このよう構成されるE 1110
TYPE 1100は、コールゲートサインですので、Cの構図
これは、0000が続いています
パラメータを渡す最終ParamCountは、0へのより多くの時間がありません
この組み合わせはEC00完了します
セグメント・セレクタを使用すると、リフトの重みにしたい場合は、その後、あなたがセットRPLに必要な、新しいセグメント・セレクタ、必要に応じて中塗りです0
ジャストは0008を書きました
(Windowsシステム自体は0書かれているので、だから、モデルを書きオフセットとインデックス...書き込みテストコードに気にしない、私は本当に使用を好まないそれ自体、コールゲートを使用しないため)
0000ec00`00080000そのように。