Winny 1 を解析しようと思ったら

これって実行開始時に自己解凍しているらしいね。セクションテーブルが何だか普通と違うなと思ったら。これでは解析がやり辛いな…。有志が作ったパッチが何故にメモリパッチなのだろうかって当初は思っていたのだけど、そういう事だったのか。俺が使っているのは Winny 1 なんだけど、パッチが作られたのは Winny 2 だけみたいでさ。仕様が無いから自分で作るかって思ったんだけど、これは大変だ。実行しながら解析したいんだけど、マシンが足りないよ。先ずは CreateMutex か何かで多重起動防止をしている箇所をハックして、多重起動出来る様にしてから、それから 3 プロセスぐらい起動して接続して Winsock 通信箇所でログを出して、暗号文を平文に直した後の部分にブレークポイント置いて、その辺りで長さチェックをやっているかを綿密に調べる…って感じの事をしなくてはならないんだな…。テストマシンが数台あれば色々と楽になるんだが。更に俺のマシンは色々と WinXP SP2 以降のパッチが当たっているから、シンボルファイルが噛み合わなくてデバッガの能力を存分に発揮出来ない状態だし。あー、テストマシン欲しいー。暗号文を平文にする方法なんかは日経 NETWORK に載っているから大体想像は付くんですが。恐らく read したら直ぐに平文にする関数でも呼んでるんでしょうよ。それよりも先ずは GetProcAddress 辺りにブレークポイントを置いてログを吐かせるって事をやるべきかもな。
bu Kernel32!GetProcAddress ".printf \"%ma\\n\", dwo( @esp + 8 ); gc"
勿論↑では全然意味が無いよ。この結果取得した関数アドレスを格納する場所を先ず調べて行くと( スタティック変数だろう )。CreateMutex や OpenMutex や FindWindow や ExitProcess や MessageBox や出力するメッセージを調べる為の布石というか。というか、二重起動してメッセージを出させてからデバッグインした方がマシだよな。まあ read だとか socket だとかにも応用出来るから良いけど。