風景といいつつ覚書

マウス割込みの中でページディレクトリを切り替えることにより、ターゲットプロセスのスタックをほげほげする。んでもってフックに利用しようという腹なのだが。(これだけで通じるか?)


切り替えるとあっさりお亡くなりになる。そんなときはbochs君の登場だ。
あとページディレクトリ切り替えもアセンブラでちょいと書き直して不確定条件を減らそう。


とりあえずMonaの起動シーケンスから考えてターゲットページディレクトリはの物理アドレスはほぼ静的に決まるので以下の感じで調べてみた。

arch_set_cr3:
	push eax
	mov eax, 0x22D000 ' 即値で突っ込んじゃえー
	mov cr3, eax
	pop eax
	ret


ここに無限ループを入れるとどうやら最後のretで死ぬらしい。
つーことは。スタックを取り出してbochsレジスタを見てみよう。(Monaが盛大に死ぬのでレジスタMona上でダンプすることはとりあえず諦める。)

arch_set_cr3:
	push eax
	mov eax, 0x22D000
	mov cr3, eax
	pop eax
	pop ebx ' ここでret先をebxにいれて
forever: ' 無限ループー。bochsをここで停止すればebxを見ることが出来る。
	jmp forever
	ret


すると思いがけない事実が!!  (続く)