2007年3月20日火曜日

実はFreeBSDのptraceもsystemcall時にトラップをしかけられる???



/sys/i386/i386/tace.cにこんな記述が。。。



PTRACESTOP_SC(p, td, S_PT_SCE);



なんだトラップしかけられるっぽい。


manが正しいとするならばアーキテクチャ依存ってことになるんだろうけどIA32しかもってないので関係ないし。


/sys/kern/sys_process.cのkern_ptraceをみるかぎり


ptrace(2)にPT_STEPを渡すのと同じようにPT_TO_SCX,PT_TO_SCEをわたせばよいらしい。





ちなみにuser mode linuxってこれに、さらに引数書き換えをやって動いてるらしい。


たしかにrootである必要すらないね~。





ちなみにptraceつかっても、システムコールでのstop時点でシステムコールの引数書き換えはむりぽ


/sys/kern/sys_process.cのptraceを読む限り、td(スレッドディスクリプタ?)アクセスする方法はなさげ。





0 件のコメント:

コメントを投稿