HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0126
0125プロセス空間のメモリマップ15未解決


0125

リンク

2014/1/26(Sun) 03:42:17|NO.59509

プロセス空間のメモリマップの一覧を取得したいです。
方法が分かりません。
メモリマップのサイズなども一緒に取得できたらうれしいです。
誰か分かる方、教えてくださいT_T



この記事に返信する


0125

リンク

2014/1/26(Sun) 04:43:56|NO.59511

追記です

http://nienie.com/~masapico/api_GetModuleInformation.html http://eternalwindows.jp/windevelop/dll/dll12.html

Cソースですがたぶん、こんな感じのをしたいです。



0125

リンク

2014/2/4(Tue) 01:09:22|NO.59648

だ、、だれか分かりませんかね・・・T_T



MillkeyStars

リンク

2014/2/4(Tue) 11:30:45|NO.59655

というか、ソースがわかっているなら、それを HSP に書き換えればいいんじゃないの?
ソース→スクリプトへの変換方法がわからないのであれば、「それを教えてください」って質問の方が答えてくれる人いるよ。
(ごめん、答えてあげたいけど、現時間だと出かけ準備で答えられない。夜までだれからも答えなければ夜書き込みしておくよ。)



0125

リンク

2014/2/4(Tue) 14:12:05|NO.59657

変換方法が分かりません。。
誰か教えてください。
お願いしますT_T



fortunehill

リンク

2014/2/4(Tue) 16:45:49|NO.59658

/*ご参考(ググれば全ての意味や値は必ずHITします:検索キーワードの工夫も必要)*/

;”要なAPIの定義されているDLLを探す ;引数の設定は全てsptrで良い #uselib "kernel32" #func global GetCurrentProcess "GetCurrentProcess" #func global GetModuleFileNameA "GetModuleFileNameA" sptr,sptr,sptr #uselib "psapi" #func global EnumProcesses "EnumProcesses" sptr,sptr,sptr #func global EnumProcessModules "EnumProcessModules" sptr,sptr,sptr,sptr #func global GetModuleInformation "GetModuleInformation" sptr,sptr,sptr,sptr ;J竸瑤侶燭箙渋ぢ里篦秧値をHSPの型に当てはめる dim hProcess ;HANDLE hProcess; dim ModuleHandles,1000 ;HMODULE ModuleHandles[1000]; dim ModuleNum ;DWORD ModuleNum; dim ReturnSize ;DWORD ReturnSize; sdim FileName,260 ;char FileName[1000]; dim ModInfo,3 ;MODULEINFO ModInfo; dim HMODULE ; /* typedef struct _MODULEINFO { LPVOID lpBaseOfDll; DWORD SizeOfImage; LPVOID EntryPoint; } MODULEINFO, *LPMODULEINFO; */ ;だ御文や表示命令をHSPの命令に置き換える ;ッ佑鯤屬坑腺丕謬法の括弧を外してSTATで返り値を受け取る形にする ;Γ腺丕桧数の値を受け取る部分はvarptrでポインター渡しにする HMODULE = 4 GetCurrentProcess hProcess = stat EnumProcessModules hProcess,varptr(ModuleHandles),1000,varptr(ReturnSize) ModuleNum = ReturnSize/HMODULE repeat ModuleNum GetModuleFileNameA ModuleHandles(cnt),varptr(FileName),260 GetModuleInformation hProcess,ModuleHandles(cnt),varptr(ModInfo),4*3 mes FileName mes ModInfo.0 mes ModInfo.1 mes ModInfo.2 loop ;Ыわり



0125

リンク

2014/2/4(Tue) 21:46:38|NO.59669

ウーン
僕の求めてるのはこんなんじゃないんだけどなんでだろ。。。
dll以外にもサーバーから取得したファイルのアドレスなども一緒に取得したいんですが
分かりませんね。。。



check

リンク

2014/2/4(Tue) 21:59:35|NO.59672

>プロセス空間のメモリマップの一覧
これと
>サーバーから取得したファイルのアドレス
これが、どういう風に関係してくるんだ?

もしかして他のプロセスがメモリに読み込んでいるファイルのアドレスが取得したいとかか?



0125

リンク

2014/2/4(Tue) 22:01:08|NO.59673

そー!
そういうことです!
これでは取得できないアドレスもってことですね



0125

リンク

2014/2/4(Tue) 22:03:49|NO.59675

このHSPのスレ全部探したけどたぶんこの質問はありませんでしたね><



check

リンク

2014/2/4(Tue) 22:07:42|NO.59677

それはセキュリティの都合上厳しい、もしくは無理かもしれないなぁ。
他のプロセスの仮想メモリの特定のアドレスの値を取得するなんてことは
おそらくできないのではないかと……



0125

リンク

2014/2/4(Tue) 22:33:43|NO.59679

デバッガなどでは取得できております。
GetProcAddress
の引数の
GetModuleInformation
GetModuleBaseNameA
GetModuleFileNameExA
GetMappedFileNameA
ここらへんを使ってメモリーにマッピングされたアドレス空間のアドレスを取得できると思います。。



check

リンク

2014/2/4(Tue) 23:13:05|NO.59681

言い方が悪かったかな。
プロセスの仮想メモリの特定のアドレスの値を取得できても、
それが一体何を示しているのかがわからないのではないかと。

メモリに読み込まれたファイルの内容を別のプロセスから読み込むというのは、
そのファイルフォーマットを知っていて、
実際に読み込んでみて正しい値になっているかどうかを確認しなくてはならない。



0125

リンク

2014/2/5(Wed) 01:40:22|NO.59684

なるほどですね。。
やっぱ難しいんですかねぇ。。



MillkeyStars

リンク

2014/2/5(Wed) 12:32:38|NO.59687

ここまでの回答を見る限り、モジュールイメージ・メモリマップファイル・メモリ空間の話がごちゃごちゃになってる気が。

他のプロセスのモジュールイメージ・メモリマップファイルは、上記 fortunehill さんのスクリプトで大体取得できる。(イメージ自体に付加情報がつけられているので、実サイズより大きくなる。)

あと、各プロセスが I/O を用いてファイルを読み込みしている場合は、たぶんメモリ空間アドレスからファイルタグで判断するしかないので、check さんの回答になる。

やろうと思えば、できるけど、めちゃくちゃ面倒だよ。
check さんの回答しているファイルフォーマットを調べないといけないし。
Windows が公開していない API などを調べないといけないし。
下手すれば、ドライバを作らないといけない場合もある(I/Oにアクセスする用)。



0125

リンク

2014/2/6(Thu) 01:38:37|NO.59708

な、、、なるほど。。。

到底無理な課題なようでした。。
出直してきます!



ONION software Copyright 1997-2021(c) All rights reserved.