Posts

Showing posts from December, 2018

MBR debugging with Bochs

Image
I've tried Bochs for debugging MBR which is infected Petya just for fun. First of all, prepare disk image. $ dd if=xx.raw of=petya.img bs=512k count=20 (I've run petya on VM and convert .vmdk image into .raw image.) Setup bochsrc file like following. 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 Wrong cylinders, heads, spt value may be a glitch on setting up debugging environment. Now, my petya.img size is 0x7E000 bytes. (Disk image size must be multiples of 512.) 0x7E000 = 516,096 = 512*1008 It is addressed by following formula. img size = cylinders * heads * spt * 512 516,096 = 1 * 16 * 63 * 512 You need

Petyaのドクロのコードが見たい

Image
いよいよMBRの中のコードを覗いてみる…。 のだけどどうやって??? IDA proってツールを使います。 ベルギーのhex-raysって会社が出しているdisassembler。 フリーウェア版でも十分使える。 ライセンス版は2000ドル(!)くらいするのだが、x64も読めちゃう。 supports more than 50 processor families なんて書いてあるが、世の中にはそんなにプロセッサの種類あるんだね草。 よりマニアックなcpu instructionが見たいぜ!!という諸兄には必携かと。 https://www.hex-rays.com/products/ida/support/download_freeware.shtml 保存したpetya.imgの拡張子を.comに変えてから読み込むと捗る。 アセンブラの命令を一個一個解説していくことは困難なためさわりだけでオナシャス。。 bochsでステップ実行しながら、表示を比較していくとよい。 http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html 以下のコードで一文字づつ画面に書き込み。 https://en.wikipedia.org/wiki/INT_10H によると、、Teletype output てので出力してるみたいだね。 seg000:4C26 WRITE_CHAR_ANDADVANCE_CURSOR proc near ; CODE XREF: WRITE_CHAR_ANDADVANCE_CURSOR_0+E p seg000:4C26 ; sub_14C54+57 p ... seg000:4C26 seg000:4C26 arg_0 = byte ptr 4 seg000:4C26 seg000:4C26 55 push bp seg000:4C27 8B EC mov