もうちょいなんか書くか

原理。

まず ptrace で止める。 ptrace でレジスタ取ってくる。 EIP の値を ESP の値にする。 EIP の先に int 0x80 (Linuxシステムコール呼び出す時の割り込み) を ptrace 使って埋める。スタックの適当な位置に argv ぽいものを ptrace で埋める。スタックの適当な位置に environ ぽいのものを ptrace で埋める。その際 /proc//environ を読む。 EAX を SYS_execve にして EBX を argv[0] にして ECX を argv にして EDX を environ にしてから、 ptrace でレジスタを書き戻す。んで ptrace で detach して後は野となれ山となれ。

ウィンドウマネージャいじろうと思ってたんだけど、ふと思いついたので先にやっちゃったという。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h