2013年9月8日日曜日

スプラッシュ画面のスキップ

Razorでおなじみのこの機能、追加してみました。(Version 0.7.2.4)
Debug起動時に有効です。
実装して初めて動かしてみたとき、思わず笑ってしまいましたよwww
あれ?これでいいの?って。今までの待機時間は何だったの^^;;;


このような変更(RazorやEUOでやっていることのハック)ですが、実は難儀な解析作業をしているわけではありません。
やり方さえ知ってしまえば、なんだそんなことか、と拍子抜けするかもしれません。
今回のスプラッシュ画面のスキップの解析を手順的に説明すると、

① Gumpをスプラッシュ画面の表示に使っている(しかも、アカウントの拡張パックの有無によって異なる)ので、client.exeのバイナリーのどこかにそのGumpIDがハードコーディングされているはず、と目星をつける。

② OllyDbgでGumpIDをバイナリーサーチして怪しい箇所を探しだす。

③ そのあやしい箇所とそれを呼び出しているコードの周辺をよく眺める

④ Razor経由で実行したときのclient.exeをOllydbgでアタッチし、メモリをbackupとしてファイルに保存する。

⑤ Razorを使用しないで実行したときのclient.exeをOllydbgでアタッチし、④のbackupファイルをロードする。

⑥ ③の怪しい箇所において、④と⑤の相違をOllydbgが赤字で指摘してくれるので、そのコード修正でどういう動作になるかを考察して、メモリ書換のコードを作成する。今回の場合、赤字のとおりに変更しただけw

Razorという現在も動作するお手本があるので、そのコピー作業をするだけです。
ただ、Razorにてこっそり実装されている機能が多いので、それを見ぬくセンスは必要ですね。

0 件のコメント:

コメントを投稿