やった!やったよ!!!・・・くぅーーーっっ、購入してから6年が経ち、ようやく、ようやく書いてある内容の意味が分かるようになった・・・!!!! #amazon||> ||< 書いてある内容が、OllyDbgでどこをどう書き換えるとどうなるか、関数呼び出しの参照箇所やDLLのインポート周りなど、ようやく・・・・・・あーーーーーーーー、本当に長かった・・・ようやく、頭にするすると入るようになったぁああああああああああ!!!!!!!!!! ・・・さすがに、最後のパッキングで展開されるコードを元に、未展開状態のファイルにパッチをあてる部分は分からなかったけど。 OSの提供するメモリ管理の機能を使って、メモリ上に展開したマシン語コードを実行する仕組みについては、まだまだUNIX系もWindows系も理解不足な世界なので、これはまた後日改めて(おそらく書籍も変わって)攻略する。CreateProcess()やfork(2)→execve(2)の内部、LoadLibrary()やmmap(2), dl_open(2)の内部、OSとアセンブラとC言語の境界線、その一際濃い部分になってくるが、絶対攻略してやるぜ!!! ああ~~~それでも・・・うーん・・・いいねぇ。実行ファイルというか、バイナリの世界をさまよい、マシン語とOSと、C/C++言語や周辺技術の境界線上を綱渡りするのは・・・そして、マシン語のレベルからOS、ファイルフォーマット、C/C++言語の仕様まで一気に貫通できる視点と、それで見えてくる世界の奥深さ・・・!!! まぁC++とアセンブラの境界にはまだ手を出してないんだけど。でも遅かれ早かれ、Windows上でのバイナリの世界はC++とは切り離せないから・・・やらなアカンやろうな・・・。 でも楽しいなぁ、ホント楽しいなぁ!!!もう仕事じゃなくて趣味でも構わないよ!!!うっひょーって感じだNE!!!分かれば分かるほど、見えてくれば見えてくるほど、コンピュータウィルスやマルウェアが「どうやってこんな事を実現してるんだろう?」って思えてくるし!一つの山を越えたと思ったら、目の前にその2倍以上の高さの山が、山脈となって立ちはだかっていましたみたいに、どんどん世界が広がっていくし!だって.NETフレームワーク使ってたりCLR使ってたり、そういう中間言語が混ざった実行イメージとかどうやってOSはメモリ上に展開して制御してるんだろう!?ファイルフォーマットは!?とか謎が尽きないぜ~~~!!! ・・・いやね、まぁね、もうね、とっくに本職の方々やとんでもないレベルのハッカーの皆さんが、Web上に豊富な資料を公開してくれてて、解析されてる事は分かってるんだけどね。「未開の大地」を踏みしめる訳ではなくて、これまでの沢山の人達が整備してくれた、区画整理まで終わっている町中を探検してるだけではあるんだけどね。 いくら包丁の作り方や包丁の歴史を学んでも、ゴボウのささがきの仕方を学んで、分かりやすく説明出来るようになったとしても、美味しい料理を作れなけりゃ商売にならないのは分かっちゃいるけどさ・・・。 まぁでも、暫くは津田沼で隠棲し、金にならない・・・けど、今まで気になっててならなかった技術領域を攻略するつもりなので、既に誰かが解析済だとしても、その成果を有り難く頂戴しつつ、自分の足でゆっくりと探検を進めたいです。 ・・・最初に戻るけど、やっぱりバイナリの世界は・・・面白い、から!!!(少なくとも今は。)