zoomzoomzoom

解決方法の共有に主眼を置くブログ・他雑談

バイナリ解析 問題を解く2(書評)

バイナリ解析でネット検索していると、下記の本に出会った。

http://yaneu.com/book/misaki/

 

萌え萌え感満載の本で、まさに私が読みたかった本であった。

 

 

 

 

 

変な誤解をされそうなので、もう一度表現しなおすと、

萌え萌え感満載の本で、内容はレジスタの利用方法、処理の追いかけ方、処理を変更する方法が詳細に解説されている、そういった意味で、まさに私が読みたかった本であった。また、細かいところではあるが、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:呼び出し先のモジュールとそっくりのモジュールを作り出して、そのモジュールを使わせてしまうこと。またその結果処理内容を傍受すること。