どのようにどのようにパスワードをクラックすることが判明してはならない他の誰かのマイクロマイクロチャネル信号のパスワードを盗むために?

どのようにどのようにパスワードをクラックすることが判明してはならない他の誰かのマイクロマイクロチャネル信号のパスワードを盗むために?

まず、導入

保護モードセグメント・レジスタは、64ビットのセレクタと記述子レジスタの16ビットで構成され

セグメント記述レジスタ:セグメント記述子を格納

セレクター:メモリセグメント記述子インデックス

セグメントレジスタ

セグメントレジスタ

PS:プロテクトモードでリアルモード・セグメント・セレクタ、80486 6(すなわち、CS、SS、DS、ES、FS、GS)80ビットのセグメント・レジスタの各元のセグメント・レジスタ。セグメントセレクタSSに対応する表現に対応するセレクタによってコードセクション依然としてCSは依然としてスタックセグメントが表されています。

第二に、詳細な

最初の概念を説明します

(1)システム全体のグローバルディスクリプタテーブルGDT(グローバルディスクリプタテーブル)、グローバル記述子テーブルのみGDT(GDTに対応するプロセッサ)であり、GDTは、メモリ内の任意の場所に配置することができるが、CPUは、GDTを知っている必要がありますベースアドレスを置く場所を入力後、すなわち、インテル設計GDTRドアは、GDTのエントリアドレスを格納するレジスタを提供し、メモリにGDT位置を設定しますプログラマ、GDT LGDTによる指示エントリアドレスがこのレジスタにロードされ、それ以降、CPUは、このレジスタの内容に応じてGDTとしてGDTのエントリにアクセスすることができます。これはGDTR GDTのベースアドレスに格納され、メモリにその長テーブルが制限されます。

GDTのベースアドレスがアドレステーブルにバイト0のリニアアドレス空間はGDTバイト長の値の長さを示す指定します。SGDT LGDTと命令がロードとレジスタGDTRの内容を保存するためのものです。マシン電源投入またはプロセッサをリセットした直後に、デフォルトのベースアドレスは0に設定され、長さの値が0xFFFFのに設定されています。新しい値がGDTRにプロテクトモードの初期設定でロードする必要があります。

GDTR

GDTR

セクション(2)GDTRによってセレクタ(セレクタ)は、グローバル記述子テーブルを完了するために「セグメント・セレクタ」(リアルモードセグメント・レジスタ)であるアクセス。セグメント・セレクタ等(同じリアルモードとセグメント・レジスタの)16ビットレジスタのCS SSであります

セグメント・セレクタ

セグメント・セレクタ

記述子インデックス(指数)、TI、要求された特権レベル(RPL):セグメント・セレクタは、3つの部分を含みます。彼の指数で(記述子インデックス)部分は、GDTRベースアドレスに格納されているディスクリプタテーブル内の対応する記述子に応じて再び見つけることができ、この位置からディスクリプタテーブルの位置における必要なセグメント記述子を示しています。次に、セグメント・ディスクリプタ・テーブル・ベース・アドレスと論理アドレス(SEL:OFFSET)オフセットによっては、選択されたプロモーターをGDT選択さ表すのみ0又は0の線形アドレス、TI値選択サブセクションに変換することができます。 、セレクタの1人の代表は、LDTに選択されます。要求特権レベル(RPL)は、4つの特権レベル(レベル0、レベル1、レベル2、レベル3)の合計を選択されたサブ特権レベルを表します。

説明の特権レベルについて:タスクの各セグメントは、特定のレベルを持っています。プログラムは、特定のセグメントにアクセスしようとするたびに、我々は、セグメントへのアクセスかどうかを決定するためにアクセスする権限レベルと比較して、プログラムの特権レベルを有しています。システム規則は、CPUは、同一のセグメント特権レベルまたはより低いレベルの特権レベルにアクセスすることができます。

21H:リニアアドレスに変換12345678h例えば論理アドレスを与えられました

。すなわち、GDT第記述子セレクタ100bの選択率= 4;選択されたプロモーターを表すTI = 0 GDTに選択され、後部01Bを左:彼が表す選択サブSEL = 21H = 0000000000100 0 01B意味特権階級のRPLの代わりに= 1

セグメント・ベースGDTは11111111hである第4記述子(ベース)に記載場合、B。このとき、= 12345678hをOFFSET、線形アドレス= 11111111h + 12345678h = 23456789h

(3)ローカルディスクリプタテーブルLDT(ローカル・ディスクリプタテーブル)ローカルディスクリプタテーブルは、シートの数を持つことができ、各タスクは、一つを有していてもよいです。私たちは、GDTとLDTを理解することができます:GDTはディスクリプタ・テーブルで、LDTディスクリプタ・テーブルは2です。フィギュア

LDT LDT

LDT LDT

LDTとGDTの本質は同じですが、LDTはGDTにネスト。ローカルディスクリプタテーブルの開始位置を記録LDTRは、異なるGDTRと、LDTRコンテンツはセグメント・セレクタです。LDT自体もメモリの部分であるため、またセグメントであるので、それを記述するための記述子を有し、記述子は選択サブを持って表現文字に対応し、GDTに格納され、ロードされLDTRは、選択サブあります。LDTRはLLDT命令を使用することにより、手順でいつでも変更することができます。負荷である場合、上記のように、次にLDTR点セレクタ2は、テーブルLDT2あります。例えば:私たちはアドレス12345678h記述子を選択したい場合は、テーブルLDT2で3番目のセグメントです。

それはLDTRにロード・セレクトLLDTのLDT2使用命令を指すようにロードされるまずLDTR

2.論理アドレス(SEL:OFFSET)SELインデックス= 3の選択された記述を表す第3にアクセスするときに、選択されたプロモーターを表すTI = 1 LDT選択され、この時間はLDT2 LDTR点で、選択LDT2ようこの場合(バイナリ11 1 00Bにおいて)SEL代一の値。= 12345678hを相殺しました。論理アドレス1C:12345678h

SELによって選択された前記ディスクリプタが、ディスクリプタベースアドレス(ベース)の線形アドレスから得られたオフセットに加え、例えば、ベースアドレス11111111h、線形アドレス= 11111111h + 12345678h = 23456789h

よりLDT1が充電セレクタLLDT選択された部分を使用して命令限り、第三のディスクリプタにアクセスする場合は、このとき4. 1は、(LDT1及びためLDTRポイント)は、2つのステップ2,3を実行することができます

各プロセスは、プログラムセグメントの独自のセットを持っているので、局所記述子テーブルを備えたデータセグメント、スタックセグメントは、各ブロックを処理することができ、データ・セグメント、一緒にパッケージスタックセグメントは、限り変化として実現することができるLDTRセグメント別のプロセスへのアクセス。

ときにタスクスイッチ、プロセッサ・ディスクリプタ・セグメント・セレクタと新しいタスクLDTが自動的LDTRにロードされます。プロセッサまたは機械力、デフォルトで0に設定されたセグメントのセレクタのベースアドレスをリセットした後、セグメントの長さが0xFFFFのに設定されています。

第三に、(理解するために非常に有用)の例

1:アクセスGDT

LDT内のセグメント記述子

 

GDT内のセグメント記述子

GDT内のセグメント記述子は、上に示したように、TI = 0を示している場合:

①GDTRは、GDTのベースアドレスレジスタを得始めます。

②価値ディスクリプタに高い位置指標13まで続いGDTのセグメント・セレクタ。

③記述子識別子はセグメントのベースアドレス、長さの制限、優先度とセグメントの開始アドレス(ベースアドレス)を与える他の属性を含み、最後のアドレスYYYYYYYY得られたベースアドレスにオフセットのみ線形を追加アドレス。

2:アクセスLDT

 

GDT内のセグメント記述子

LDT内のセグメント記述子

上記のようにTI = 1セグメント記述子は、LDT場合を示しています。

①またはGDTRを開始するには、GDTのベースアドレスレジスタを得ました。

②ここで、セグメントLDTRのLDTレジスタから取得位置指標(高LDTR 13)。

③GDT中のこの位置指標取得LDTディスクリプタでLDTセグメントベースを得ました。

④高屈折率セグメント・セレクタとLDT記述子セグメント13の位置から得られます。

⑤記述子識別子はセグメントのベースアドレス、長さの制限、優先度とセグメントの開始アドレス(ベースアドレス)を与える他の属性を含み、最後のアドレスYYYYYYYY得られたベースアドレスにオフセットのみ線形を追加アドレス。

スプレッド

GDTR、LDTRがIDTRとTRに加え、

(1)割り込みディスクリプタテーブルレジスタIDTR 

同様の効果GDTR、IDTRは表16に割り込みディスクリプタテーブルIDT、32ビットのリニアベースアドレスと長さの値を格納するレジスタ。SIDT LIDTと命令がロードとレジスタIDTRの内容を保存するためのものです。マシン電源投入またはプロセッサをリセットした直後に、デフォルトのベースアドレスは0に設定され、長さの値が0xFFFFのに設定されています。

(2)タスクTRレジスタ

TRは、特定のタスク状態セグメント(タスク状態セグメント、TSS)をアドレス指定するために使用されます。TSSは、現在のミッションに関する重要な情報が含まれています。

TRは、現在のタスクのセグメントTSSセグメントセレクタ16、32ビットのベースアドレス、16ビットの記述子長と属性値のためのレジスタ。これは、GDT TSSディスクリプタ型への参照です。LTR及びSTR命令がロードおよびTRレジスタを保存するためのセグメント・セレクタの一部です。TSSセグメント・ベース・アドレス・キャラクタに記載のタスクレジスタセレクタにロードLTR命令を使用する場合、制限長と記述子属性は、自動的にタスクレジスタにロードされます。タスクの切り替えを行う場合、TSSのプロセッサは、新しいタスクディスクリプタ・セグメント・セレクタを受信し、自動的にタスクレジスタTRにロードします。

おすすめ

転載: www.cnblogs.com/ppp777/p/11605140.html