Hexspeakとは、リートスピークと類似の、英語の変わった表記法の一種である。
プログラマは、メモリやデータに「未使用」や「異常データ」といった印をつけるために分かりやすいマジックナンバーを必要としており、この際にHexspeakが作り出された。数字の"0"をアルファベットの"O"に、数字の"1"をアルファベットの"I"に、数字の"5"をアルファベットの"S"に読み替えるといった方法を利用し、16進数の表記に使われる文字 (0123456789ABCDEF) しか使えない条件下で短い単語を表現している。
多くのプロセッサ、オペレーティングシステム (OS)、デバッガでHexspeakに基づくマジックナンバーが使用されている。特にデバッグ用の値として用いられている場合が多い。
限られた文字("a", "b", "c", "d", "e", "f", "o", "i", "s")だけで作ることのできる英単語は少なくとも数百あることを考えると、Hexspeakを使ったマジックナンバーを作成するのはさほど難しいことではない。例えば、0xD15EA5ED ("diseased")、0xBED51DE5 ("bedsides")といった値を簡単に作ることができる。
また、上に挙げたような既存のHexspeakで使用されているパターンを参考にするのもよい。これらの定数はすべてワード長と等しく(32ビット環境の場合)、また"1"および"5"で始まるものはない。 これは、定数が符号付き整数値として解釈された場合に、大きな負数として扱われるようにするためである。 例えば、0xBAADF00Dを符号付き32ビット整数値として解釈すると-1163005939となるが、多くのプログラムではこのような大きな負数が現れるケースは稀である。 マイクロソフトが使用している0xBAADF00Dという値も、初期化されていないメモリへのアクセスの検知に適している。
未登録
IPFS未登録
📡 0ピア
N=1
CRITICAL
PQS D30