メモリにアクセスする方法


Futosi.T  2002-02-02 16:45:15  No: 75230  IP: [192.*.*.*]

メモリに直接アクセスする関数またはAPIなどございませんでしょうか。
メモリアドレス&H0040BFFFなどのデータをByte形式で取得し、
また逆に指定アドレスに書き込む方法を探しております。

お分かりの方、よろしくお願いします。

編集 削除
こころ  URL  2002-02-02 17:26:33  No: 75231  IP: [192.*.*.*]

RtlMoveMemory,RtlZeroMemory,RtlFillMemoryが相当します。
当然のことながら、許可されない領域にアクセスすると
一般保護エラーで落ちますけどね。

編集 削除
Futosi.T  2002-02-04 06:38:40  No: 75232  IP: [192.*.*.*]

お返事遅くなりました。
関数は分かりましたが使い方が分からない・・・
MSDNで調べても載ってないし。
私のVisual Studioは発売日に購入したものなので、
MSDNが古いものなんです。

引数の意味するところ、もしくは説明のあるHPなど教えて
いただければこれ幸いです。

初心者丸出しですが、よろしくお願いします。

編集 削除
Say  2002-02-04 10:48:06  No: 75233  IP: [192.*.*.*]

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 ;
}


あとは定義ファイル作ってビルドするだけ。

編集 削除
こころ  URL  2002-02-04 23:54:49  No: 75234  IP: [192.*.*.*]

引数はC言語のmemmove,memsetと似たようなものです。
検索エンジンで関数名を入力すればVBのサンプルも
すぐに見つかると思いますけど・・・。

そういえば、うちのページでPtrForVBっていう
VBでポインタつかってるサンプルもあったりします。
RtlMoveMemoryしか使ってないですけどね。

編集 削除
Futosi.T  2002-02-05 06:17:24  No: 75235  IP: [192.*.*.*]

なるほど、引数など大まかな使い方はわかりました。
ありがとうございます。
VBからでも何とか操作できそうです。

今度はプロセス名を取得したいのですが、何とかならないでしょうか?
&H004FFFFF〜&H00FFFFFF : (プロセス名)
&H00CFFFFF〜&H00DFFFFF : (子プロセス名:〜.dllなど)
という風に出力したいのですが・・・。

長い質問になってしまってすみません。
よろしくお願いします。

編集 削除
><  2006-03-20 03:41:27  No: 75236  IP: [192.*.*.*]

><

編集 削除