2016年4月27日水曜日

たのしいバイナリの歩き方 リバースエンジニアリングあるある


たのしいバイナリの歩き方



大きくWindowsベースでの様々なツール(Process Monitor/Stirling/BZエディタ/OllyDbg)でバイナリ解析、逆アセンブルを説明する前半と、対策ツール()(Metasploit/EMET/REMnux/ClamAV/Zero Wine Tryouts)を使った後編に分かれる


リバースエンジニアリングあるある


  • リバースエンジニアリングはもともとは機械を分解して仕組みを知る意味で使われていたが、最近ではソフトウェアの分野で聞かれることが多い
  •  機械類のリバースエンジニアリングは、基本的に合法、であるが、それを元にクローンを製造する場合は権利上の問題が生じる
  •  アメリカの判例上は、クリーンユースに基づいて、ソフトウェアのリバースエンジニアリングも合法(であるが、クローンの製造は著作権について留意する必要がある)
  •  多くのソフトウェアにはリバースエンジニアリング禁止の条項が書かれているが、独占禁止法上問題があると考えられている
  •  (ざっくり言うと)フェアユースの具体的な例としては”引用”が挙げられる
  •  ソフトウェアでのリバースエンジニアリングのポピュラーな手法は逆アセンブルである
  •  ほとんどのソフトウェアは、最終的にはOSやPCが理解される命令とデータから構成される。
  •  OSやPCが理解できる命令やデータは、機械語やマシン語と呼ばれる。
  •  機械(OS/PC)が理解できる言語として存在するマシン語は、そのままでは人間が理解することは困難である
  •  マシン語の理解は人間に困難である、と書いたが、マシン語を理解する機械(マシン)を設計したのは人間である。よって、そもそもは時間がかかったとしてマシン語は人間でも理解できる命令とデータから構成はされている
  •  マシン語を少し人間が読みやすくしたものがアセンブラである
  •  マシン語からアセンブラを書き起こす作業を逆アセンブルという

Binary Hacks ―ハッカー秘伝のテクニック100選