ヌル文字排除
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2015/10/10 16:23 UTC 版)
一般にシェルコードはヌル文字を終端とする文字列として対象プロセスに注入されるため、ヌル文字(一般に0x00)をその途中で使うことはできない。途中にヌル文字があると、そこまでしか文字列としてコピーされない。従ってヌル文字に相当するコードがシェルコードの途中にある場合、シェルコードは最後まで実行されない。 途中にヌルバイトを含むシェルコードからヌルを含まないシェルコードを生成するには、同じ効果を持つ別の命令列に置き換える。例えば、IA-32アーキテクチャで以下の命令があるとする。 B8 01000000 MOV EAX,1 // Set the register EAX to 0x000000001 即値の1が符号拡張されるため、ヌルバイトが命令に含まれている。 33C0 XOR EAX,EAX // Set the register EAX to 0x00000000040 INC EAX // Increase EAX to 0x00000001 この命令列は先の命令と同じ効果があるが、バイト数が少なくなるだけでなく、ヌルバイトも含まない。
※この「ヌル文字排除」の解説は、「シェルコード」の解説の一部です。
「ヌル文字排除」を含む「シェルコード」の記事については、「シェルコード」の概要を参照ください。
- ヌル文字排除のページへのリンク