VMMapを使ってみた。
プロセスを選ぶとGPFしちゃう(問題が発生したため、Vmmap - process memory analyzer を終了します。 ご不便をおかけして申し訳ありません。)のでOllyDbgでデバッグに突入。
コールスタックだとこんな感じ。
アドレスが???って?
Call stack of main thread
Address Stack Procedure / arguments Called from Frame
0012F054 00410D41 ??? vmmap.00410D3B 0012F0C8
0012F0CC 00410F29 ? vmmap.00410A54 vmmap.00410F24 0012F0C8
・・・
と思って直前の呼び出し元(vmmap.00410D3B)を覗いてみる。
で、
00410D3B FF15 E8C34300 CALL DWORD PTR DS:[43C3E8]
あー、どうみてもぬるぽですほんとうにorz
DS:[0043C3E8]=00000000
DS:[0043C3E8]で逆リファしてみたら、上の箇所入れて2箇所しかなくて、もう一箇所は代入。
ということらしいので、
0042EC04 68 404B4300 PUSH vmmap.00434B40 ; ASCII "QueryWorkingSetEx"
0042EC09 68 1C4B4300 PUSH vmmap.00434B1C ; UNICODE "psapi.dll"
0042EC0E FF15 9CF24200 CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; kernel32.LoadLibraryW
0042EC14 50 PUSH EAX
0042EC15 FF15 BCF24200 CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; kernel32.GetProcAddress
0042EC1B A3 E8C34300 MOV DWORD PTR DS:[43C3E8],EAX
どうやらpsapi.dllにQueryWorkingSetExが居ないのが原因らしい。
QueryWorkingSetExの説明を読む限り、
Minimum supported clientは「Windows Vista, Windows XP Professional x64 Edition」とのことなので、ひょっとしたらXP Pro (x86)では動かないのでは?
VMMapの動作環境では「Runs on: Client: Windows XP and higher」になってるけど…。あってるのか?これ
少なくともC:\Windows\system32\psapi.dllにはQueryWorkingSetはいるけど、QueryWorkingSetExはいない。
これが原因ぽいが、QueryWorkingSetEx入りのpsapi.dll(XP Pro x86用)ってどっかから入手できるんだろうか?
入手できないんならXP ProではVMMap動きませんて感じなんだが…