見出し画像

よめないが「リバースエンジニアリングバイブル」姜乘卓(ガン・ビョンタク)著(インプレス 2013)


千夜千冊 1754夜(分理篇)

第1部 リバースエンジニアリングの基礎
 第1章 リバースエンジニアリングのためのアセンブラ
 第2章 C言語の文法と逆アセンブラ
 第3章 C++のクラスとリバースエンジニアリング
 第4章 DLLの解析

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

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

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

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

目次


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

C/C++のコードを逆解析。
アプローチのノウハウを結集。

表紙


 12音階で構成されるポップスの聴きやすくて美しいコード進行とフレーズは、ビートルズが活躍した1960年代で最も活発に使われたと言われる。 「素晴らしいコード進行は既にビートルズがすべて使った」という言葉が あるほど、コードの組み合わせは、既にそのころにほとんど作られたため、現在はフレーズが飽和状態に達し、どのような音楽を聴いてもだいたい  似ている感じがする。裏を返せば、他人が作った音楽を解剖して分析する 側では、だいたい似たような音楽の楽譜を眺めると、その音楽がどのようなコード進行と音階で構成されているかを見つけるのはそれほど難しい事ではない。
 リバースエンジニアリングの分野でも同じことが言える。プログラマが 作成した多くのコードの中で登場すべきものはほとんど登場して飽和状態であり、そのような多くのコードの規則性やパターンを学習しておけば、  どのような新しいコードが登場しても、既存のコードから身につけた流れを基にしてうまく分析できる。コードパターンをよく理解しておくと、   リバーシングという戦場で強力な武器になると思う。

第6章 使われる使われるパターン P. 119


 自分が開発したソフトウェアが、ハッカーによってリバースエンジニアリングされることは望まない。自分のプログラムがデバッグされていることを気付かせて終了させたい。いや、自分のプログラムの動作中は、デバッガーを開くこと自体許可したくない。
 リバースエンジニアリングに対抗するためのアンチデバッグテクニックには、どんなものがあるかについて説明する。

第10章 教科書的なアンチデバッグ P. 211

 アンチデバッグとは、このように自分のプログラが解析されるのを
防ぐために使用する技術を意味する。
これは、
ファイルの内容やメモリの状態を暗号化することを指す場合もあるが、
実際の現場でのアンチデバッグは、
デバッグを防ぐために、自分のプログラムがデバッグされているかを
監視する方法といったほうが正確だろう。

第10章 教科書的なアンチデバッグ P. 213


 サウンドソフト業界も大きく発展した。
音楽制作ソフトをいくつかインストールして使い方を少し身につけて、
コンピューターを少し操作するだけで作曲が簡単にできてしまう。
電子楽器をいくつか購入し、プラグを差し込んでいくつかのボタンを
押すだけで音楽が作成できる時代になった。
しかし、だれにでも作れるような音楽を
プロのミュージシャンが魂を込めて作ったサウンドと比べるのは、
インスタントラーメンが作れるようになった程度で、
プロのラーメン職人に挑戦するようなものである。
 アンチデバッグに関して少し勉強したとか、
多くの知られたアンチリバーシング技術をいくつか習得した程度で、
アンチデバッグを簡単なものと見なし、
リバーシング防止処理をすべて壊せると考えているとしたら
大きな間違いである。
現場で登場する本物のリバーシング防止技術はレベルが違うからである。

第12章 パッカーが使用する技術 P. 257


 「防御したいなら、攻撃を研究しろ」。
これはハッキングセキュリティに努める人間の基本姿勢だと言える。
ハッカーの立場、ハッカーが使う技術、そして自分のコードが
どのようにして回避されるかを知ってこそ、
それに合った対応法が模索できる。
ここまでは、必死に防御する方法だけを勉強してきたが、
ここからはいよいよ攻撃法を学ぶ。

第13章 回避方法 P. 281


コンピュータ言語がチンプンカンプンなのに、
なぜ、この本をとりあげるかと言えば、
今この瞬間、とりあげる本がないからです。いわずもがなでしたか。
しかし、松岡正剛さんは、こういった本まで千夜千冊にとりあげるわけで、
どんな器なんでしょう。
まず、私としては、読まない・読めない宣言をしたので、
この本は、一応ツンドク行きです。この本に申し訳ないが。naka