解析技術遍歴とか

>解析等を学習されていった道筋的な物を教えてはいただけないでしょうか?
とコメントをもらったので試しに書いてみる

・起
今から4年ちょっと前、PCを手に入れてから1年ちょっと、C言語は日常的に書くがまともに完成させたことがない程度の頃。
某MMORPGのサーバプログラムがCコードの形で広まり、クライアント側の解析も進んで誰でも好き放題弄れる物があり
好奇心からそれに手を出したのが始まり。
クライアント側を弄るのに様々なツールが出回っていたものの、初心者向けなわけがなく
解説サイトやらを見て回って手探りで使っていた状態。
この頃にバイナリエディタの基礎やら解析に対する考え方を覚えたと思う。
といっても、この時点では精々xmlファイルを好き勝手書き換えるぐらいで、まっとうな解析は一切やっていないし出来なかった。

・承
今から3~4年前、Cで人に見せられるコードがようやく一つって程度で
起で知り合った人から誘われ、オリジナルのMMORPG作ろうぜ!という企画に参加した頃。
サーバは他所で公開されていたMMORPG用エンジンで、クライアントも同様の物を使っていたのだけど
開発途中のものであったために基本を除いて一切説明がなく行き詰まり、手探りに開発を続けざるを得ない状態。
バイナリエディタでexeを開いてスクリプト中で使用できる関数名一覧を持ってきたり
名前しかわからぬ関数に適当に引数投げて動作を調べたり
こういったことばかり1年近く続けていたので、解析技術の基礎がついたのはこの頃?
ちなみに、最終的には頓挫しました。 俗に言う黒歴史、もしくは若気の至り。

・転
今から2~3年前、Perlを本格的に使い出し、Cではドマイナーなプログラムコンテストなら本戦にいけることもあった程度で
RagnarokOnline(以降RO)にはまっていたら不正対策と称してnProtectが実装され、RO起動中はPerlや一部プログラムが動作しなくなり憤慨していた頃。
起承の間に偶然検索に引っかかったなどで、一通りハックや改造といった情報を読んでいて愚かにも判った気になっていたので
Perl禁止とか自力で解除してやると息巻いていた頃。
今まで知識の上だけであった逆アセンブラ、DLLインジェクション、Win32API、メモリーエディターなどを実際に使うようになったのはコレが原因。
RoAddr.dllに多少とはいえ関わったのもこの頃。
解析手法やら改造手法はほぼ独学で、方法を思いついてはnProtectに撃退され「くそ、その手があったか」という風にいろいろ学び取っていたと思う。
たぶん自分の改造関連技術はこの時点から変わってないと思う。
一応能力は上がっているけど、それはただ経験を積んで諸々最適化されただけ。

・結
今から0.5~2年前、ただひたすらにコード書いていた日々。
ファイルフォーマットに興味を持ち車輪の再発明しまくったり
東方という自分の嗜好にドストライクなゲームに出会い、ついでにツール作成の場が用意されていたので
そちらの開発にも手を出してなおさらプログラム漬けになっていた頃。
バイナリエディタの使い方に習熟したのはこの頃だし
ファイルフォーマットについて知識が付き、バイナリ列を見るだけでなんとなく意味を読み取れるようになったのもこの頃。
一言で言えば起承転で得た知識を経験に昇華した時代。

こんなので参考になるかどうかは判らないけど自分はこうやって技術身につけました。

ちなみに、もし人に「解析技術身につけたいんだけど、どうしたらいい?」と聞かれたなら
「何してもいいからその辺のゲームのデータファイルを展開するアプリを自作しろ、話はそれからだ」と返します。
なぜって自分がそんなでしたからね。
「解析してみたい!」と考える程度に知識あるなら、後は時間さえかければ応用だけで何とかなるはずっていうのが自論です。

th123_ai(仮)の進捗報告

本当に必要最低限だけですが動くようになりました。
キー入力も出来るようになったので、複雑な事をしていないAIならば動くと思います。

やった事は単純にアドレスサーチを進めつつ、その途中で見つけたバグ修正だけ。
といいつつ、テスト用に使っていた某衣玖さんのAIにもう負けるようになりました、AI強すぎありえん。
アドレスサーチはまだ1/5程度で本当はここまで動くはずないんですが、どうやら全部が全部アドレスずれているわけでは無いようです。
絶対値で指定しているところは全滅していますが、相対指定が圧倒的多数なのでアドレスサーチは以外と早く終わりそう、かも?

今回の更新で正式対応された部分
・my_xspeed
・my_yspeed
・enemy_xspeed
・enemy_yspeed
・my_act
・enemy_act
・my_frame
・enemy_frame
・weather
・weather2
・weather_time
・1Pキーコンフィグ取得
・2Pキーコンフィグ取得
・PAD使用時の自動1P2P識別

上記以外の機能も一部動きますが、きちんと検証したわけでは無いので現在は未実装扱い。
(もちろん緋や非と関係がない機能はそのまま動いていますが)

2009/09/16 3:00追記:
アドレス張り忘れた。
th123_ai.zip
以前と同じだからいいとは思うけど念のためね。