リバースエンジニアリングの解説(基本情報技術者シラバス用語)

目次

リバースエンジニアリングとは

リバースエンジニアリングとは、完成した製品やソフトウェアを分解・解析し、その仕組みや構造、設計データ、ソースコードなどを明らかにする技術や手法のことです。「リバース(逆)」という言葉通り、通常の「設計図から製品を作る」という流れを逆行させて「製品から設計図を導き出す」アプローチです。

この技術は、古いシステムで設計図(ドキュメント)が紛失してしまっている場合の解析や、他社製品の技術的な仕組みの調査、セキュリティ分野におけるコンピュータウイルスの解析(マルウェア解析)などに広く用いられています。ただし、著作権や契約(ライセンス)の制限に抵触する場合があるため、実施の際は法律面での注意が必要です。

具体例

例えば、すでに開発元が解散してしまった20年前の古い会計システムの動作を解明するため、実行ファイル(プログラム)を専用の解析ツール(デコンパイラ)にかけて、人間が読める形式のプログラム(ソースコード)に逆変換し、どのような計算処理が行われているかを調査します。

もう少し詳しく

リバースエンジニアリングは、製造業やソフトウェア開発において、既存の製品を分析してその背後にある技術や仕様書を導き出すアプローチです。ソフトウェア分野においては、プログラムの実行ファイル(バイナリコード)を解析し、人間が読める形式のプログラムコードに復元する作業を指します。具体的には、バイナリをアセンブリ言語に変換する「逆アセンブル(Disassemble)」や、C言語などの高水準言語に復元する「逆コンパイル(Decompile)」という手法が用いられます。この技術は、自社開発の古いシステムでソースコードが紛失してしまった場合の動作確認や、他社の特許侵害がないかの調査、またサイバーセキュリティにおいて、解析が難しい「コンピュータウイルス(マルウェア)」がどのような悪意ある挙動を行うかを特定する際などに不可欠な技術となっています。

試験でのポイント

基本情報技術者試験では、リバースエンジニアリングの定義と、その実施目的・法的な注意点が問われます。まず、「完成した製品やプログラムを解析し、設計書や仕様書、ソースコードなどを導き出すこと」という基本的な意味を捉えてください。また、試験での用途として「ドキュメントが残っていないレガシーシステムの再設計(保守・再構築)」や「セキュリティ解析」といった正当な目的が正解となります。一方で、著作権の侵害や不正競争防止法に抵触するような、他社製ソフトウェアの無断複製や技術の盗用(不正コピー、海賊版作成)は違法行為あるいは契約違反(EULAの禁止事項)に当たる点が出題のポイントです。

関連する用語

リバースエンジニアリングによって得られた設計情報をもとに、再びUMLなどを用いてシステムを綺麗に再設計して構築するプロセス(フォワードエンジニアリング)や、古いプログラムの内部を整理するリファクタリング、さらには開発工程における構成管理と関連があります。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ