Shikata Ga Nai

Private? There is no such things.

エクスプロイトの作成に必要な基礎知識についてかいてみた

Hello there, ('ω')ノ

 

エクスプロイトの作成にあたり、必要な基本的な用語や知識というものがあって。

 

レジスタ:

 これは、情報を保管するために使用されるプロセッサ上の領域で。

 プロセッサはレジスタを利用して、

  プロセスの実行

  メモリ操作

  APIの呼び出し

 などを処理して。

 

x86:

 x64は64ビットシステムでも、これは主にIntelベースのシステムにあって。

 一般には、32ビットシステムであるシステムアーキテクチャのファミリで。

 

アセンブリ言語:

 簡単な操作を備えた低レベルのプログラミング言語で。

 ただ、アセンブリコードを読み取るのは困難な作業だったりと。

 

バッファ:

 バッファはプログラムの固定メモリホルダーで。

 メモリの種類に応じて、スタックまたはヒープにデータを格納して。

 

デバッガ:

 デバッガは、

  プロセスメモリ

  レジスタ

  スタックなどの停止/再起動/中断/操作

 など、実行可能ファイルの段階的な分析ができて。

 よく使用されているデバッガーは、以下のとおり。

  Immunity Debugger、GDB、OllyDbg(http://www.ollydbg.de/

 

シェルコード:

 ターゲットシステムでの実行に使用されるマシン言語で。

 シェルコードは、プロセッサが理解する一連の命令で。

 

スタック:

 データのプレースホルダとして機能して。

 ストレージに後入れ先出し(LIFO)メソッドを使用して。

 最後に挿入されたデータが最初に削除され。

 

ヒープ:

 主に動的割り当てに使用されるメモリ領域で。

 スタックとは異なって、いつでも割り当て、解放、ブロックができて。

 

バッファオーバーフロー:

 バッファに供給されるデータの容量よりも多くのデータがあることを意味して。

 

フォーマット文字列のバグ:

 ファイルやコンソールに関連するプリントステートメントに関するバグで。

 変数のデータセットで、プログラムに関する情報を開示する可能性があって。

 

システムコール:

 実行中のプログラムから呼び出されるシステムレベルのメソッドへの呼び出しで。

 

中でもレジスタは、高速のコンピュータメモリコンポーネントで。

メモリ階層の速度チャートの上部にもリストされていて。

レジスタは、保持できるビット数で測定して。

たとえば、32ビットレジスタなら32ビットのメモリを保持して。

 

下記は、システム内にあるさまざまなタイプの関連レジスタで。

 汎用レジスタ、セグメントレジスタ、インデックスレジスタ、 EFLAGSレジスタ

 

主なタイプは下記のとおりで。

 

EAX

 アキュムレータで。

 データとオペランドを格納するために使用されて。

 サイズは32ビットで。

 

EBX

 ベースレジスタで。

 データへのポインタで。

 サイズは32ビットで。

 

ECX

 カウンターで。

 ループの目的で使用されて。

 サイズは32ビットで。

 

EDX

 データレジスタで。

 I / Oポインタを格納して。

 サイズは32ビットで。

 

ESI / EDI

 メモリ操作のデータポインタとして機能するインデックスレジスタで。 

 サイズは32ビットで。

 

ESP

 このレジスタはスタックの先頭を指して。

 値は、アイテムがスタックからプッシュまたはポップされると変更されて。

 サイズは32ビットで。

 

EBP

 スタックデータポインタレジスタで。

 サイズは32ビットで。

 

EIP

 命令ポインタで。

 次に実行される命令のアドレスも保持して。

 サイズは32ビットで。

 

SS、DSES、CS、FS、GS

 セグメントレジスタで。

 サイズは16ビットで。

 

Best regards, (^^ゞ