Home > スポンサー広告 > PMEtanでプログラムサーチ?

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント: -

Home > スポンサー広告 > PMEtanでプログラムサーチ?

Home > PSP memo > PMEtanでプログラムサーチ?

PMEtanでプログラムサーチ?

コメントへの回答です。
R4000アセンブラをある程度理解しているのが前提です。


『プログラムサーチ』という言葉の明確な定義が無いので
人によって使う意味が違うと思われます。

多くの人が該当すると思われる「経験値x倍」などのような
プログラムコードをサーチ(実際には自分で作る)したいのであれば、
以下のようなサイトで勉強してください。

zero memory
Be Natural
RaY's


他の人がPMEtanを用いてどのようにプログラムサーチをしているか
私は知りません。ここでは私が使っている方法を1つ取り上げます。

R4000アセンブラが分かるという前提で話を進めます。
今回使うチートプラグインはPMEtanですが、
PMEtan以外でも同じ結果を求めることは可能です。

今回のサーチ内容の場合、PMEtan以外でおすすめなのはCMFです。
CMFだと←キーで一括コードON/OFFが可能なことと
サーチ結果を全登録する際に書き込む値を一括で
指定出来るので手間が省けます。
元の値でコードを保存して呼び出せば
元の値に戻すのも簡単です。

TempARの復元機能を使えば同じことが可能ですが
コードを一括でON/OFF出来る機能が無いので
サーチ結果を登録しUSB経由でdbを開き値を置換する一手間が必要です。

準備


■必要なプラグイン
PMEtan v1.47


■必要なマニュアル(いずれか)
・『MIPS R4000 Microprocessor Users Manual 2ndEdition
・『NEC VR5000 ユーザーズマニュアル』
・『R5900命令表 - 自然
・『R3000 命令解説 - zero memory


■必要な知識
・ワイルドカード(*)の意味
・lui命令の意味
・lui命令が使われる場面
・汎用レジスタと数値の対応
・ニーモニックからマシン語へのエンコード
・rs rt rd immediateの意味
・.text .data セグメント、セクションの意味





ターゲット


 PS2かPSPのゲームを解析したことがある人ならご存じだと思いますが
 浮動小数点数の定数を生成するのによく使われるパターンがあります。
 これらを書き換えてやれば、いくつかのコードが作れます。

lui a0,$3f80
mtc1 a0,$f12 # f12=1.0
lui a0, $4049
ori a0, a0, $0fdb
mtc1 a0,$f12 # f12=3.1415926535
lui a0, $42c8
mtc1 a0,$f12 # f12=100.0



サーチ領域


・CFWやゲームによって違います。
・メモリダンプしたらps2disで開き、ワークに使われる領域と
 プログラムが配置される領域を把握します。
・プログラムが配置されるアドレス範囲を指定します。
・だいたい「0x00003000~0x00400000」あたりが目安です。


これで何が出来るか


・移動速度基準値変更
・モーション速度基準値変更
・キャラクター大きさ変更
・オブジェクト透明度変更
・定位による音量変更(あまり意味ない)
・その他


実際の手順


今回サンプルに使うのは「FINAL FANTASY 零式」です。




[Search]タブに移動し、『AddressRange』を下記の通りに変更します。
MIN:0x00003000 MAX:0x00400000




『Value』に入ります。




△キーを押して[Mode]を[4ByteModeSKip+WildCard]に変更します。



値に『0x3C003F80』と入力します。
「0x3C003F80」とは「lui zero,$3f80」のこと。



『WildAssist』欄に移動、←or→キーで項目移動し、○+↑or↓で選択します。
rtに合わせて○+↑を押して『Wild』欄の一部が「11111」になったら
「SearchStart」を押します。



lui命令は16bitの即値を16bit左シフト後に下位に16bitの0を連結した
結果を符号拡張(64bitモードの場合)してrtに入れるという物です。
回りくどいですが、つまるところは即値左論理シフト16です。
rtをワイルドカードに指定することでレジスタの違いを吸収しつつ
サーチすることが出来ます。



×キーを押して1階層移動します。



↓キーを押してサーチ結果にフォーカスします。



後は『0x3C**3F80』のFをEに書き換えてゲームをプレイしてみましょう。





例として、「0x0007535C 0x3C043F80」の部分を書き換えてみます。
敵/味方キャラクターの大きさだけが変化しました。
カメラ視点移動速度は元の大きさのままなのでこれだけだと
使い物になりません。
コードとして使うには何かしらの工夫が必要です。



今回はPMEtanでサーチしてみましたが
ワイルドカード部分を定数に置き換えて31回繰り返せば
他のチートプラグインでもサーチできます。
(実際にはzero,at,k0-1,gp,sp,fp,raにこのような数値を入れることは
無いので31回も要らない)





関連記事
スポンサーサイト

コメント: -

Home > PSP memo > PMEtanでプログラムサーチ?

Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。