忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2024/04/20 10:05 |
そのた
昔こんなこと言ってましたが、正直むちゃくちゃ使いづらいのと
監視アドレス1つにつきcep1個使うとかいうほんとどうしようもない代物だったので


プロセスメモリエディタを作ればいいじゃないという発想にようやく至った
とりあえずePSXeの仮想メモリ読めた段階
下の方に孤立してる3行の数字は
画面表示範囲とは別の特定アドレスの読み込みテスト これも動いてる

とはいうもののプロセスメモリエディタという名称すら知らない地点からの
スタートであったため、それはもう困難を極めメモリを読めるようになるまで
5時間という長く苦しい道のりを経ねばならなかった

尚この間ずっとI am BreadのメニューBGM垂れ流してたから再生数が140回くらい増えてた

というわけでこの時点でのやった事のまとめ
ぼくの為と今後の誰かのためになるかも、!しれない。

・全体の流れ(注:ePSXeはver1.6.0です)
1:方法はなんでもいいんでePSXeのプロセスIDを取得する
  僕は前回のこれで既にFindWindowでID取るの作ってたのと
  多重起動に関してはやるつもりが無いのでこの方式を流用
  ウィンドウ名そのまま「ePSXe - Enhanced PSX emulator」で見つかる
2:Openprocessでプロセスひらく
3:ReadProcessMemoryで読むおわり

ほんと流れだけ書くとこれで終わるんだよな
実際Openprocessまではすんなりいった
問題はReadProcessMemoryのところだった

つまりReadProcessMemoryのアドレス指定が分からなかったんですう
正確に言うと「どんな数字を指定すればいいか」分からん状態

結論から言っちゃえばePSXe v1.6.0のベースアドレスとして
流れまくってる「$005B6E40」から「$00200000」分のアドレスが
cepとかで見ていたメモリの範囲なんだが、これに気付くのにやたら時間がかかった
(仮想メモリの概念を理解せず突っ走ったため
 ここに至ってようやくまじめに概念を読み始めて理解した)

で、読み込んだ値は当然ASCIIなので
txt += strf("%02x",peek(lpb,0))
(lpbにメモリから読み込んだ値が入っている)

みたいな感じで読み込んだ値の1バイト目だけ読んであげると
16進数の数字になってくれます

ここまで実質100行くらいのすっごいシンプルな感じ
分かってしまえば楽なんだが、分からないと堂々巡りするねこういうの

詰まったと思ったら早めに概念を理解しよう!
っていうか普通はやり始める前に理解するもんだとは思うが正直めんどいからね
PR

2015/07/02 20:14 | Comments(0) | その他

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ダライアス | HOME | ゲーム>>
忍者ブログ[PR]