KENJI’S BLOG このページをアンテナに追加 RSSフィード

Freezed...

2008-07-27

どのシステムコールがどの関数から呼ばれているの?

http://d.hatena.ne.jp/kenjiaiko/20080724の続きっす

SYSENTER呼んでる関数は分かっても、そこからなるべく上位の関数に絞れないと実用性に欠けるのでなるべく絞れる感じにしたい。とりあえず、ntdll.dllがエクスポートしている関数を取ってきて、それらひとつひとつからCALL命令を取り出して、SYSENTER呼んでる関数をCALLしてたらログ↓にすることにした。

http://kenjinet.s26.xrea.com/call_systemcall.txt

収集方法はかなり適当で、関数内の処理から0xE8(CALL)を探して、それ以降の値からジャンプ先を特定。ジャンプ先がSYSENTER呼んでる関数のいずれかと一致したらログに保存。ただ、動的に関数アドレス取られてたりすると0xE8にならないのでアウト。また関数内のCALLを完全に追っているわけではないのでアドレス的に上下にある関数と間違ったりするかも。

個人的に、kernel32.dllのそれぞれの関数がntdll.dllの何の関数を呼んでいて、そのntdll.dllのそれぞれの関数がどのシステムコール呼んでるか? みたいな関数間の関係みたいなのを作成するライブラリが欲しい。それがあるとSYSENTERフックから上位のAPIが分かって結構使えるのかなと思う。

rootkitrootkit 2008/07/28 03:21 またまた、FYIということで。
http://www.openrce.org/reference_library/win32_call_chains

kenjiaikokenjiaiko 2008/07/28 04:21 ちょw何これw すごすww

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/kenjiaiko/20080727/1217108068
Connection: close