りばーすえんじにありんぐ
リバースエンジニアリング
完成したプログラムコードなどを解析し、設計書や構造を逆算して導き出す手法です。
詳しい説明
1. 定義
リバースエンジニアリングとは、完成したプログラムやハードウェアを解析し、その仕組みやソースコード、設計構造を逆算して導き出す手法です。「逆工学」とも呼ばれます。
本来、設計書からプログラムを作るのがエンジニアリングですが、その逆を行うためこの名があります。既存システムの仕様を調査したり、古いプログラムの資産を再利用したりするために活用されますが、権利侵害のリスクには細心の注意が必要です。
2. 仕組みと種類
ソフトウェアに対して行う場合は、実行形式のプログラム(機械語)を読み取り、人間が理解できるアセンブリ言語やソースコードに近い形へと変換するツールを使用します。ハードウェアに対しては、製品を分解して回路基板のパターンを読み取り、回路図を復元します。
この手法は、独自技術の解明や互換製品の開発に使われます。一方で、他社の製品をコピーしたり、セキュリティ保護を解除して不正利用したりするために悪用されるケースもあり、非常に高度な技術と、それを扱うための倫理観が求められる領域です。
3. 試験ごとの視点
ITパスポート試験では、知的財産権やコンプライアンスの文脈で必ず登場します。他社の著作物に対して無許可で行うリバースエンジニアリングは、著作権侵害や利用規約違反になる可能性が高いという点を押さえることが最も重要です。
基本情報技術者試験では、保守・運用の文脈で「古いシステムで仕様書がない場合に解析する手段」として肯定的な側面も問われます。しかし、無条件に許されるわけではなく、契約や法律の範囲内で実施しなければならないという法的制約の理解が必須です。
4. 紛らわしい語との違い
リファクタリングとは目的が正反対です。リファクタリングは自社で管理しているコードを整理して品質を高める内部改善活動ですが、リバースエンジニアリングは「中身がブラックボックス化したもの」を解読する行為です。
デバッグとも異なります。デバッグは自分の書いたプログラムのバグを見つける作業ですが、リバースエンジニアリングは、他人が書いた(あるいは設計意図が不明な)プログラムの「仕様そのもの」を導き出すために、実行ファイルを解析する行為を指します。
5. 身近な例
例えば、古い産業用ロボットの制御プログラムが動かなくなった際、当時の設計書が紛失していたとします。この時、動いているプログラムを解析して仕様を再現できれば、修理や改善が可能になります。これが正当な活用例です。
逆に、流行っているゲームのプログラムを解析して、チートツールを作ったり、有料機能を無料で使えるように改造したりする行為は違法なリバースエンジニアリングです。技術は同じでも、目的と対象により善悪が分かれます。
試験で問われること
ITパスポート試験
- 他人の著作物に対して無許可で行うことは著作権侵害の恐れがあることを押さえる。
- リバースエンジニアリング=違法、という極端な理解ではなく、著作権や規約の観点で判断されることを理解する。
- 設計図や仕様書がない場合に構造を解析する手段であるという目的を押さえる。
基本情報技術者試験
- 保守・運用の現場で、ドキュメントのないシステムの解析手段として役立つことを理解する。
- 著作権法や契約上の制約を遵守する必要がある点を強く意識する。
- リファクタリング(内部改善)とは、対象のブラックボックス度合いと目的が異なることを区別する。