バイナリ解析 問題を解く2(書評)
バイナリ解析でネット検索していると、下記の本に出会った。
萌え萌え感満載の本で、まさに私が読みたかった本であった。
変な誤解をされそうなので、もう一度表現しなおすと、
萌え萌え感満載の本で、内容はレジスタの利用方法、処理の追いかけ方、処理を変更する方法が詳細に解説されている、そういった意味で、まさに私が読みたかった本であった。また、細かいところではあるが、ESIやEDIといったレジスタは、なぜ他のレジスタのようにHigh,Lowと区切って使われないのか、という部分など、基礎事項・基礎単語の補足情報も豊富に載っておりとても勉強になった。
実際にこの本の解説に従ってデモソフトを、アセンブラを解読しながら、自分の思うように操る体験をすることができた。もう一度この本を復習し、「本を見ないで」OllyDbgを操れるようにする。
この本で初めて知ったこと:
・WebTrap:特定のソフトがインターネットにアクセスするのを遮断する機能。
・ロジックボム:条件が整うと発動するウィルスや破壊ソフトのこと。
・クラックするのに一番大切な心構えは「一番脆いところに着眼すること」であって、全体を理解しようとすることではない、という事。
・クラックの基本は条件分岐を書き換えること。
・SYSENTERとSYSCALL命令は戻りアドレスを保存しないで制御が移る
・RETNとRTNは同じ
・RET 4:RETするときにESPのアドレスを+4する。
・Shift-JISとUnicodeの見分け方:利用しているAPIの末尾の文字がAだったらANSI(Shift-JIS)、WだったらUnicodeのことらしい。文字列検索をする前に文字コードを適切に設定する際に参照する。
・.textセクション:プログラムコード領域
・.rdata, .dataセクション:文字列置き場
・.rsrc:アイコン等置場
・Ollydbgでハードウェアブレークポイントを利用する時には、DR0~DR7というデバッグ用のレジスタがあり、これを利用するためコード自体が変更されない。
・hooking:インポートセクションの中から任意のWindowsAPIの実行アドレスを特定してそれを書き換えてしまうことで、自分の実行したい処理を介在させること
・DLLInjection,function interception:呼び出し先のモジュールとそっくりのモジュールを作り出して、そのモジュールを使わせてしまうこと。またその結果処理内容を傍受すること。