リバースエンジニアリングバイブル ~コード再創造の美学~

著者 :
制作 : 金 輝剛  金 凡峻 
  • インプレス
4.00
  • (1)
  • (3)
  • (1)
  • (0)
  • (0)
本棚登録 : 73
レビュー : 3
  • Amazon.co.jp ・本 (416ページ)
  • / ISBN・EAN: 9784844334798

作品紹介・あらすじ

リバースエンジニアリング(Reverse Engineering)とは、完成された製品から、製造方法・動作原理・設計図・ソースコード等を調査することだ。本書は、ソフトウェアのリバースエンジニアリングについて詳細に解説する。

感想・レビュー・書評

並び替え
表示形式
表示件数
  • http://book.impress.co.jp/books/1113101030

    ■概要
    ソフトウェア開発に欠かせない技術となった「リバーシング」から「アンチリバーシング」までを徹底解説! C/C++に対応したそれらの手法を、韓国の一流技術者が丁寧に説明します!
    ソフトウェアのリバースエンジニアリングは、セキュリティ分野や悪性コードの分析に限られたものではない。エンジニアリングにおいても、リバースエンジニアリングは不可欠な過程の一部だ。特に最近のように、開発のための要素がモジュール化されている状況では、ソースコードが得られないことも多く、モジュールの動作の理解度を高めるために、リバースエンジニアリングは必須になっている。また、自分が作成したコードでも動作の問題を解決したり最適化などを実現したりするためには、リバースエンジニアリングは必須の作業だ。

    ■ToC
    第1部 リバースエンジニアリングの基本
    01章 リバースエンジニアリングのためだけのアセンブラ
    02章 C言語の文法と逆アセンブル
    03章 C++のクラスとリバースエンジニアリング
    04章 DLLの分析

    第2部 リバースエンジニアリング中級
    05章 PEヘッダー
    06章 よく使われるパターン
    07章 MFCリバーシング

    第3部 演算ルーチンリバーシング
    08章 シリアルキー抽出法
    09章 コードフェイキング

    第4部 アンチリバースエンジニアリング
    10章 教科書的なアンチデバッグ
    11章 ハイレベルなアンチデバッグ
    12章 パッカーが使用する技術
    13章 回避方法

    第5部 一段階高いレベルのバイナリ作り
    14章 コードフック
    15章 コードパッチング
    16章 難読化とダミーコード

  • 紹介されている技術は難読化とその解読であり、EvilかつTrivialという印象は拭えない。そもそも不自由なOS上でのみ成り立つ不自由なソフトウェアという時点で、技術的袋小路なのではないかなあ。いや、まあ、お金にはなりそうだけども。

  • いくつかの訂正と感想
    20p
     以前のコードでは「mov esp, ebp」を使用したので、
     → 以前のコードでは「mov ebp, esp」を使用したので、

    19-22p
    esp,ebpがなにかの説明がなかったので理解に苦しむ。
    補足
    ・intel系のcpuはスタックに積んだ時に上位アドレスから積んでいく。(amd系のcpuでもintelと互換性があり、この条件は同じ)そのため、たとえば4byteずつスタックを積んでいく場合は、次のpopするポイントは-4 * n個になる。
    ・espはスタックポイント。スタックから次にpopするアドレスを示してる
    ・ebpはベースポイント。スタックが始まるアドレス
    ・pushうんぬんの話を理解するには、まずcall命令の動きとして、「リターンアドレスをスタックに積んだ上でサブルーチンにジャンプする」ことを覚える。その時にスタックポイントにebpをもってきて新しいスタックが生成される。
    (ebpの中には前回(サブルーチンへジャンプする前の)ebpのアドレスが入る。)
    つまりpopする場所にebpがあるのでebp + 4でリターンアドレス、ebp + 8で第1引数などが説明できる。
    この説明がないからどうしてもebpではなく、espからオフセットを出していくのでは?とすごく疑問になっていた。


    *読み終わるまで順次に追加予定*

全3件中 1 - 3件を表示

リバースエンジニアリングバイブル ~コード再創造の美学~を本棚に登録しているひと

ツイートする