x86

ハンド (逆) アセンブルのための x86 ニーモニックの覚え方

x86

バイナリ列を見て x86 のコードかな〜とニヨニヨできる人に、x86 のコードであること、だけじゃなく実際のコード列も読めるようになってほしい!そんな願いから、今回は hex dump のバイト列を見つめてハンド逆アセンブルできるようになるための、効率良い覚…

x86 で任意精度整数の演算 (一部) をやってみる

x86

FAT12/FAT16 用のブートローダを書こうとしていたときに気づいた問題。FAT12/16 の最大クラスタ数はそれぞれ 2^12, 2^16 より少し少ない値だが、セクタに関してはそうではない。計算するときには 32 ビットの値でセクタ数を計算し、ディスクからのロード操作…

やっと「マトモ」になった mingw-w64

凄く場違いな話題だが、x64 Windows 向けのツールチェーンに加えられた飛躍的な進化について。x64 Windows 向けの例外処理もだいたい分かるぐらいに話す。 (カーネル/VM Advent Calendar : 1010+1001/01/11 分) x86→x64 Windows はこのプラットフォームの変…

PacSec 2010 で発表してきました。

去年の別のネタ (アンチフォレンジック) に比べれば噛むことも少なく、全体としては安定した発表になった。(それが「良い」かどうかは別として。) さて、今回の発表は "Record and Replay" に関する VMM の設計技術に関する部分。つまりどのように VMM を実…

Bochs を使って命令 / メモリトレースを取得する

Bochs の組み込みデバッガはなかなかよくできています。メモリアクセス、実行命令など、必要なほとんどの情報 (ハードウェアからの実際の入力を除く!) を取得することができるのです。私は Bochs for Windows に付属の bochsdbg.exe を用いていますが、必要…

Bochs のバグ (?)

Bochs を使って命令トレースとメモリトレースを取得し、そこから最小情報トレースで必要とされるトレース量を計算、比較する試み――なのだが、思ったより時間がかかっている。最大の理由はその遅さ。メモリトレースを無効にして命令トレースだけにしても 1000…

リバースエンジニアリングのための Record and Replay (レイテンシ削減編)

当初、最小情報トレース (= Record and Replay) において、VM で当該命令を実行してからその部分についてある程度の解析が終了するまでのレイテンシは 5〜20 分と見積もっていた。それは、Replay に相当する部分における解析に比較的時間がかかると見込んで…