メモリに直接アクセスする関数またはAPIなどございませんでしょうか。
メモリアドレス&H0040BFFFなどのデータをByte形式で取得し、
また逆に指定アドレスに書き込む方法を探しております。
お分かりの方、よろしくお願いします。
RtlMoveMemory,RtlZeroMemory,RtlFillMemoryが相当します。
当然のことながら、許可されない領域にアクセスすると
一般保護エラーで落ちますけどね。
お返事遅くなりました。
関数は分かりましたが使い方が分からない・・・
MSDNで調べても載ってないし。
私のVisual Studioは発売日に購入したものなので、
MSDNが古いものなんです。
引数の意味するところ、もしくは説明のあるHPなど教えて
いただければこれ幸いです。
初心者丸出しですが、よろしくお願いします。
peek/poke関数をVC++で作ってdll化し、
VBからDeclareで宣言して使ったらいかがでしょう?
たとえばこんな感じ・・・
PEEKPOKE_API int __stdcall peekb(int addr)
{
char *buf ;
buf = (char *)addr ;
return (int)*buf ;
}
PEEKPOKE_API int __stdcall peekw(int addr)
{
short *buf ;
buf = (short *)addr ;
return (int)*buf ;
}
PEEKPOKE_API int __stdcall peekdw(int addr)
{
long *buf ;
buf = (long *)addr ;
return (int)*buf ;
}
PEEKPOKE_API int __stdcall pokeb(int addr , int value)
{
char *buf ;
buf = (char *)addr ;
*buf = (char)value ;
return (int)*buf ;
}
PEEKPOKE_API int __stdcall pokew(int addr , int value)
{
short *buf ;
buf = (short *)addr ;
*buf = (short)value ;
return (int)*buf ;
}
PEEKPOKE_API int __stdcall pokedw(int addr , int value)
{
long *buf ;
buf = (long *)addr ;
*buf = (long)value ;
return (int)*buf ;
}
あとは定義ファイル作ってビルドするだけ。
引数はC言語のmemmove,memsetと似たようなものです。
検索エンジンで関数名を入力すればVBのサンプルも
すぐに見つかると思いますけど・・・。
そういえば、うちのページでPtrForVBっていう
VBでポインタつかってるサンプルもあったりします。
RtlMoveMemoryしか使ってないですけどね。
なるほど、引数など大まかな使い方はわかりました。
ありがとうございます。
VBからでも何とか操作できそうです。
今度はプロセス名を取得したいのですが、何とかならないでしょうか?
&H004FFFFF〜&H00FFFFFF : (プロセス名)
&H00CFFFFF〜&H00DFFFFF : (子プロセス名:〜.dllなど)
という風に出力したいのですが・・・。
長い質問になってしまってすみません。
よろしくお願いします。
><
ツイート | ![]() |