BochsでMBR debugging
今回は前回取り出したPetyaに書き換えられてしまったMBRをBochsで動かしてみよう。
https://ja.wikipedia.org/wiki/Bochs
Bochsはここから入手できる。
http://bochs.sourceforge.net/getcurrent.html
Bochsも前に出てきたVMware同様PCエミュレータなのだけど、
こいつはMBRのdebugができてしまうんだ。
OSが起動するより前のコードを追えるってわけだね。
そりゃ面白そうだ~笑
キモは設定ファイルの書き方くらいかなと。
サンプルの設定ファイルがあるのでチェックしてみて。
Bochs-2.6.9\bochsrc-sample.txt
多分もっとシンプルにもできるんだと思うんだけど、、
筆者のはこんな感じ。
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
megs: 16
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="petya.img", mode=flat, cylinders=1, heads=16, spt=63
boot: disk
vga: extension=vbe
mouse: enabled=0
log: nul
logprefix: %t%e%d
panic: action=fatal
error: action=report
info: action=report
debug: action=ignore
こいつをファイル名を変えてbochsrcとして保存。.txtもいらない。
Bochs-2.6.9\bochsrc
設定ファイルのポイントは赤文字のところ!!
path=""
には取り出したMBRのパスを記入する。
そして、もうひとつ重要なのが、Bochsに読み込ませるディスクイメージのサイズは512の倍数でなければいけないんだ。
どういうこっちゃ??なのだけど、、
切り出したMBRをバイナリエディタで読み込ませてみよう。
petya.imgのサイズはきっかり0x7E000になってる。
10進に直すと516,096だ。512*1008。※
※Windowsに付いている電卓で16進<->10進の計算ができる
設定ファイルのcylinders, heads, spt(sectors per track)でディスクイメージのサイズを表してる。
https://en.wikipedia.org/wiki/Cylinder-head-sector
img size = cylinders * heads * spt * 512
516,096 = 1 * 16 * 63 * 512
筆者の環境に合わせなくても、近い数値で上記の数式通りになってればOK!
(逆に設定ファイルとイメージのサイズが合ってないとエラーでて全く動かない。。)
さて準備ができたらbochsdbg.exeを実行、
Bochs Start MenuのStartボタンで動く。
こんな感じの画面で止まるはず。
このBochs for Windows - Console で、"c"押下、でEnter。
Bochs for Windows - Display
でドクロピカピカが表示されていれば成功!だ。
https://ja.wikipedia.org/wiki/Bochs
Bochsはここから入手できる。
http://bochs.sourceforge.net/getcurrent.html
Bochsも前に出てきたVMware同様PCエミュレータなのだけど、
こいつはMBRのdebugができてしまうんだ。
OSが起動するより前のコードを追えるってわけだね。
そりゃ面白そうだ~笑
キモは設定ファイルの書き方くらいかなと。
サンプルの設定ファイルがあるのでチェックしてみて。
Bochs-2.6.9\bochsrc-sample.txt
多分もっとシンプルにもできるんだと思うんだけど、、
筆者のはこんな感じ。
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
megs: 16
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="petya.img", mode=flat, cylinders=1, heads=16, spt=63
boot: disk
vga: extension=vbe
mouse: enabled=0
log: nul
logprefix: %t%e%d
panic: action=fatal
error: action=report
info: action=report
debug: action=ignore
こいつをファイル名を変えてbochsrcとして保存。.txtもいらない。
Bochs-2.6.9\bochsrc
設定ファイルのポイントは赤文字のところ!!
path=""
には取り出したMBRのパスを記入する。
そして、もうひとつ重要なのが、Bochsに読み込ませるディスクイメージのサイズは512の倍数でなければいけないんだ。
どういうこっちゃ??なのだけど、、
切り出したMBRをバイナリエディタで読み込ませてみよう。
petya.imgのサイズはきっかり0x7E000になってる。
※Windowsに付いている電卓で16進<->10進の計算ができる
設定ファイルのcylinders, heads, spt(sectors per track)でディスクイメージのサイズを表してる。
https://en.wikipedia.org/wiki/Cylinder-head-sector
img size = cylinders * heads * spt * 512
516,096 = 1 * 16 * 63 * 512
筆者の環境に合わせなくても、近い数値で上記の数式通りになってればOK!
(逆に設定ファイルとイメージのサイズが合ってないとエラーでて全く動かない。。)
さて準備ができたらbochsdbg.exeを実行、
Bochs Start MenuのStartボタンで動く。
こんな感じの画面で止まるはず。
このBochs for Windows - Console で、"c"押下、でEnter。
Bochs for Windows - Display
でドクロピカピカが表示されていれば成功!だ。
Comments
Post a Comment