リバースエンジニアリング【reverse engineering】リバエン

概要

リバースエンジニアリングとは、出荷された製品を入手して分解や解析などを行い、その動作原理や製造方法、設計や構造、仕様の詳細、構成要素などを明らかにすること。同じように機能する製品の開発などで行われることがある。
リバースエンジニアリングのイメージ画像

企業などが他社製品のリバースエンジニアリングによって得られた情報は、類似製品や互換製品の開発、同等の機能の実現などのために利用されることが多いが、自社特許の侵害が無いか調査するといった目的で行われることもある。

ソフトウェアの場合には実行可能形式のプログラムから逆アセンブルや逆コンパイルなどを行って、(不完全な)ソースコードを取得して動作を解析することが多い。他の工業製品の場合と同じように互換製品などを開発するために行われるほか、コンピュータウイルスなどマルウェアの動作を詳細に調べ対策プログラムを開発したり、ソフトウェアの保安上の弱点(脆弱性)を探し出すなどセキュリティ上の目的で行われることも多い。

リバースエンジニアリングを行うこと自体は合法だが、抽出したコンピュータプログラムを丸ごと複製して自社製品に組み込むといった行為は著作権違反、企業秘密営業秘密)として保護された製法や構造などを割り出して無許諾で模倣した場合は不正競争防止法違反などに問われることがある。

このような権利侵害を避けるため、リバースエンジニアリングを行うチームが外形的な仕様などを記述し、隔離された別のチームが書面を元に同じ働きをする実装方法を独自に考案するという手法が用いられることがある。これをクリーンルーム設計(クリーンルーム手法)という。ただし、この方式では特許権意匠権の侵害を避けることはできない。

(2018.5.17更新)

他の用語辞典による「リバースエンジニアリング」の解説 (外部サイト)

資格試験などの「リバースエンジニアリング」の出題履歴

▼ ITパスポート試験
令5 問39】 運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。
令2秋 問51】 リバースエンジニアリングで実施する作業として、最も適切なものはどれか。
平30秋 問39】 自社開発して長年使用しているソフトウェアがあるが、ドキュメントが不十分で保守性が良くない。保守のためのドキュメントを作成するために、既存のソフトウェアのプログラムを解析した。
平26春 問47】 リバースエンジニアリングの説明として、適切なものはどれか。
▼ 基本情報技術者試験
令7修6 問38】 ソフトウェアのリバースエンジニアリングの説明はどれか。
令7修1 問38】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
令5修12 問38】 ソフトウェアのリバースエンジニアリングの説明はどれか。
令5修1 問50】 ソフトウェアを保守するときなどに利用される技術であるリバースエンジニアリングに該当するものはどれか。
令4修6 問50】 モデリングツールを使用して,本稼働中のデータベースの定義情報からE-R図などで表現した設計書を生成する手法はどれか。
令3修6 問49】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
令3修1 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
令2修12 問50】 モデリングツールを使用して,本稼働中のデータベースの定義情報からE-R図などで表現した設計書を生成する手法はどれか。
令2修7 問50】 ソフトウェアのリバースエンジニアリングの説明はどれか。
令1修12 問50】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
令1修6 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平31修1 問50】 ソフトウェアのリバースエンジニアリングの説明はどれか。
平30修1 問50】 ソフトウェアを保守するときなどに利用される技術であるリバースエンジニアリングに該当するものはどれか。
平29修12 問50】 モデリングツールを使用して,本稼働中のデータベースの定義情報からE-R図などで表現した設計書を生成する手法はどれか。
平29秋 問50】 ソフトウェアのリバースエンジニアリングの説明はどれか。
平29修7 問50】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
平29修6 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平28秋 問50】 モデリングツールを使用して,本稼働中のデータベースの定義情報からE-R図などで表現した設計書を生成する手法はどれか。
平28修1 問50】 ソフトウェアのリバースエンジニアリングの説明はどれか。
平27秋 問49】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平27修6 問49】 モデリングツールを使用して,本稼働中のデータベースの定義情報からE-R図などで表現した設計書を生成する手法はどれか。
平26秋 問50】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
平26修7 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平25修1 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平24修12 問51】 モデリングツールを使用して,本稼働中のデータベースシステムの定義情報からE-R図などで表現した設計書を生成する手法はどれか。
平24春 問50】 ソフトウェアのリバースエンジニアリングの説明はどれか。
平23修7 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平23修6 問52】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
平22修7 問50】 ソースコードやオブジェクトコードを解析して,プログラムの仕様と設計の情報を取り出す手法はどれか。
平22春 問49】 プログラムからUMLのクラス図を生成することを何と呼ぶか。
平21春 問49】 モデリングツールを使用して,本稼働中のデータベースシステムの定義情報からE-R図などで表現した設計書を生成する手法はどれか。