| ■ 東方剣戟夢想 |
|
[1] ねこねこ / 2012/01/02/Mon/14:16 (No.13219) /
| |
なかったので・・・。 UH使用しましたが、把握しにくかったです。
・HIT数途切れない ・必殺ディレイなし ・必殺とスキルゲージ減らない ・HP減らない
など、変更箇所だけでも教えていただければとおもいます・・。 |
|
|
[2] ツ・ころこ / 2012/01/02/Mon/18:44 (No.13220) /
| |
得点 0B5D9550 0B5D9558
上記位置を修正で得点の変化が得られるとおもいますが、得点の変動を行っても変更前の数値に修正されるようです。 |
|
|
[3] でか / 添付 / 2012/01/11/Wed/16:36 (No.13288) /
| |
>>ねこねこさん 妖々剣戟夢想のことでしょうか。 息抜きにSSG作ってみました。
HP減らないコードも作りましたが、敵のHPも減らなくなるため、削除しました。 その代わり、回復アイテムを取るとHPが全回復するコードを追加してあります。 スペルのディレイをなくすのは解析が面倒なのでパス
SSGの内容を見ると分かるように、毎回モジュールの開始アドレスが変わっています。 _(MName::Kengeki.exe)+0xXXXXXXXXと表記することでこれに対応しています。
解析する場合、このモジュール開始アドレスを調べ、目的のアドレスとの差を出してください。 また、ゲーム中のステータスはこれに加え、ポインタによってアドレスが変動するため、少し面倒になるかと思います。 |
|
|
[4] ねこねこ / 2012/01/11/Wed/19:38 (No.13291) /
| |
>>でかさん 本当にありがとうございます。 十分です。 参考にもなります。 ありがとうございました。 |
|
|
[5] でか / 添付 / 2012/01/12/Thu/18:56 (No.13296) /
| |
ポインタアドレスも解析しておきました。 HP、最大HPの変更ができます。
HPのアドレス付近にあるものはこれと同じポインタを利用しているので、 [subject]コード名: calc,_[:[:(MName::Kengeki.exe)+0x3ECE8C:]+0x6C:]+0xXXX,最小値,最大値 という行をSSGに追加すると、コードが使えるようになります。 HPのアドレスはXXX=2A8なので、これを基準に考えてみてください。
スコア関係など、HPとは離れた場所にあるものは別のポインタを使っているようです。
変動アドレスのあるゲームの解析を行いたい場合は http://www.necocan.info/supb2/x/topics.cgi?mode=res&no=4831 でOLDGAMERさんがされている方法を見てください。
このゲームでは正道での解析をするのは割と面倒です。 CALL命令がCALL EAXになっているなどしており、どこからCALLされているか、ジャンプしているかの特定が困難なので、邪道での検索を推奨します。
少し変わった方法で調べたので、例示しておきます。 ■今回行ったポインタの見つけ方について(邪道なので、汎用性なし) 1.まずスペシャルねこまんまでHPの管理アドレスを検索、0FA73030でヒット
2.HPのアドレスにUHで書き込みブレークポイントを設置、結果は EAX=0000000E EBX=0FA72D88 ECX=0FA72D88 EDX=0170A41C ESP=002FF628 EBP=002FF630 ESI=0FA72D88 EDI=0F1ABCD8 EIP=0163FCD3
3.EIPの付近を見ると、SUB [ESI+2A8],EAXという命令があり、ESI+2A8はHPのアドレスと一致するため、ESIの値がポインタによって決定されていると予測。
4.ESI=0FA72D88なので、スペシャルねこまんまを用い、882DA70Fで検索。
5.ヒット件数が多いため、EIPのアドレスの命令の一つ前の命令のアドレス(0163FCCD)に実行ブレークポイントを設置する。タイトルに戻り、ゲーム再開し、わざと攻撃を受ける。 ブレーク結果は EAX=0000000C EBX=0FA786A0 ECX=0FA786A0 EDX=0170A41C ESP=002FF628 EBP=002FF630 ESI=0FA786A0 EDI=19DB9760 EIP=0163FCCD
6.ESI=0FA786A0なので、前回の結果を保持したままA086A70Fで検索
7.繰り返すとヒット件数が減ってくるので、ある程度少なくなってきたところで、その検索結果に読み書きブレークポイントを仕掛ける
8.それぞれのブレーク結果のEIPの示すアドレス周辺を逆アセンブルして解析
9.今回はブレーク結果のうちEIP=0164C53Fの周辺を見ると MOV EAX,[176CE8C] ←EAXにアドレス176CE8Cの値を代入 (略) MOV ESI,[EAX+6C] ←ESIにアドレスEAX+6Cの値を代入 と命令があり、ここがポインタ関連ではないかと予測。 モジュール開始アドレスは1380000であったことから、 176CE8C-1380000=3ECE8C となり、モジュール開始アドレスに3ECE8Cを足したものがポインタアドレスとなると予測。
MOV ESI,[EAX+6C]の命令があるので、最終的に [:[:(MName::Kengeki.exe)+0x3ECE8C:]+0x6C:] がポインタの示す値となると予測。
10.再起動して調べると、[:[:(MName::Kengeki.exe)+0x3ECE8C:]+0x6C:]が求めるものであったと判明。 |
|
|
[6] ねこねこ / 2012/01/14/Sat/19:07 (No.13309) /
| |
度々ありがとうございます。 未だに奮闘していたので助かりました。 >>でかさん のおかげで解析したい部分がようやく発見できました。 本当にありがとうございました。 |
|
|
[7] ペイン / 2012/01/15/Sun/11:10 (No.13313) /
| |
ver1.03ではでかさんのが動かないようです・・・ |
|
|
[8] でか / 2012/01/15/Sun/14:05 (No.13314) /
| |
>>5のSSGを更新しました。 ver.1.03、ver.1.05に対応しました。 |
|
|
[9] ペイン / 2012/01/16/Mon/01:26 (No.13317) /
| |
>>でか 1.05で動作確認できました。対応ありがとう御座います。 |
|
|
[10] GL / 2012/04/15/Sun/01:44 (No.14521) / New!
|
|
/ 戻る
|