#navi_header|Python|
2010年6月頃に、例により粋がって原著版を買ってしまったわけですが、ざっくり読み終えました。
#amazon||>
||<
#amazon||>
||<
''以下のレビュー・解説は原著版を対象としています。問題点を多く挙げてしまっていますが、日本語版で改善されているかもしれません。いずれにしても日本語版を購入しようとしている人は読まなくて結構です。''
本書に挑戦しようとしている人向けの三行レビュー:
- ''初心者お断り''
- ''32bit Windows以外の人は諦めてね!!'' (多分Windows Vista以降も未サポート)
- ''サンプルコードの間違いが多い。''
''2010-12-10 追記:日本語版での改善点・問題点について追記''
以下詳細:
#more||
* 初心者お断り
逆解析の基礎知識や経験を有する人向けに、Pythonならではの逆解析やデバッグ作業の効率化・自動化を紹介・解説してくれている本です。
ですので、Pythonはもとより、書籍で取り上げているpydasm, pydbg, Immunity Debugger, IDA Pro, pyemuなどのインストール・環境構築の記述は殆どありません。Pythonの文法解説も当然ありません。 ''「言語の一つや二つ、自力で勉強できるでしょ? ツールのインストールや環境構築くらい、自分でできるよね?」と言わんばかりです。''
* 32bit Windows以外の人は諦めてね!!
本書のCPU・レジスタの解説と、サンプルコードと動作結果は Intel CPU 32bit Windows 環境を前提としています。
64bit環境only, またはLinux/UNIX環境onlyな人は十分注意が必要です。サンプルコードやツール類がまともに動作しない可能性が非常に高いです。
さらに本書で紹介されているツールはDebugger系のAPIを使いますので、Windows Vista以降であればUACの制限に引っかかる可能性が高いです。Vista, Win7環境の人はその点に注意するか、仮想マシン環境でWinXPを用意してその上で試してみることを推奨します。
* サンプルコードの間違いが多い。
サンプルコードや本文でいくつか間違いがあります。
まず、Chapter3を中心に原著版オフィシャルサイトの"Updates"に目を通してください。
- 原著版のオフィシャルサイト
-- http://nostarch.com/ghpython.htm
上記"Updates"でカバーし切れていない分を以下にまとめましたので、こちらにも目を通してください。
- Python/Gray Hat Python : reader's memo
-- http://www.glamenv-septzen.net/en/view/16
また本書で紹介・使用されているpydasm, pydbg, pcapyのインストールについてはセルフコンパイルが必要になるケースもあると思われます。以下の記事を参考にしてみて下さい。
- [[820]]
- [[824]]
以上で殆どの罠は回避できると思います。
ただし、Chapter12のUPXのコードだけは、2010.11月時点でのUPXのバージョンのせいか上手く動作せず、修正方法も不明なままです。
----
問題点ばかり挙げてしまいましたが、それでも類書のないユニークかつawesomeな書籍であることは間違い有りません。上に挙げた問題点はサンプルコードやライブラリ・ツールのインストール関連ばかりであり、内容自体の問題は挙げられていません。
逆解析やデバッグの現場でのPythonの可能性を広げ、「あんなツールも作れるんじゃないか、こんなライブラリも作れるんじゃないか」と夢を抱かせてくれる一冊でした。
* 2010-12-10 追記:日本語版での改善点・問題点
日本語版をチェックしたところ、原著版でのほとんどのソースコードミス・誤植が改善されていることが確認されました。素晴らしい仕事に感謝します。
ただし、原著版での問題点がそのまま引き継がれている箇所がいくつかありました。
- printf_loop.pyで、本の方では printf(" ... " % counter) となっているが間違い。オライリー・ジャパンのサポートサイトからDLしたソースでは printf(" ... ", counter) となっており、こちらが正解。
- my_debugger.py で DBG_EXCEPTION_NOT_HANDLED が使われているが、どこにも定義されていない。my_debugger_defines.pyに手動で "0x8001001" として定義しておく必要あり。
- code_injection.py で sys.argv の引数チェックのタイミングが遅い。
あと、実は日本語版は買わずに立ち読みでチェックしてしまい、サンプルコードまで実行したわけではないので確実には言えないのですが、my_debugger.pyでソフトウェアブレークポイント(0xCC)に書き換えた箇所を戻していないため、ソフトウェアブレークポイントを使ったときのコード再開で支障が出るような気がします。
問題箇所だけリストアップしてしまったので悪印象になってしまったかもしれませんが、それでも上記以外の原著の方の問題点は改善されており、また日本語版独自のAppendixでPython環境の構築など原著では完全にスルーしていた読者むけフォローをちゃんとしている点や、原著版ではおなざりな各ライブラリ・ツールの紹介を脚注で丁寧にフォローしている点など、相当なブラッシュアップがなされています。
原著を買うか、日本語版を買うかは最終的には個人の判断に依りますが、原著版でのソースコードミスや誤記に悩まされたくないのであれば、素直に日本語版を購入することをお薦めします。
また日本語版を読み進め、実際にサンプルコードを実行したりImmunityDebuggerを使ってみて、本に書かれている動きと異なっていたり、特にImmunityDebuggerのdriverlib.pyでPythonインタプリタのエラーが発生したときは、原著版での問題点として挙げられている場合がありますので、そちらも調べてみてください。
#navi_footer|Python|