#お役立ちコラム
リバースエンジニアリングとは|目的・手法と進め方、法律の注意点

リバースエンジニアリングとは、完成した製品やソフトウェアを調べ、構造・動作・設計に関する情報を明らかにすることです。製品を分解して部品構成を調べる作業も、プログラムを解析して処理の仕組みを調べる作業も含みます。
この記事では、目的と具体例、通常の開発との違い、対象ごとの手法、進め方を整理します。現物から復元できる情報の限界と、解析前に確認したい権利・契約も説明します。
執筆: bestat 編集部
リバースエンジニアリングとは
リバースエンジニアリングは、すでにある成果物から、その仕組みや仕様を調べる活動です。「リバース」は逆方向という意味で、設計から製品を作る流れを逆にたどります。
対象は大きく、実物の製品・部品とソフトウェアに分かれます。例えばパナソニックは、製品を分解・解析して回路図を復元する手法を紹介しています。米国国家安全保障局(NSA)のGhidraは、コンパイル済みのプログラムを解析するためのツールです(パナソニック、Ghidra公式資料)。

同じ言葉でも、必要な情報と道具は異なります。実物なら寸法や回路、ソフトウェアなら処理の流れや入出力など、何を明らかにするかを対象ごとに決めます。
目的と身近な活用例
主な目的は、失われた設計情報の補完、製品の改善、互換性の確認、故障や不具合の原因調査です。構造を調べた結果は、再設計や保守、検証に使われます。
目的 | 対象の例 | 調べること |
|---|---|---|
設計情報を補う | 図面が残っていない部品 | 外形、取り付け位置、相手部品との関係 |
製品を改善する | 家電や電子機器 | 部品構成、回路、放熱や配置の仕組み |
互換性を確認する | 古い機器と連携するソフトウェア | データ形式、通信、入力に対する応答 |
不具合を調べる | 動作が分からないプログラム | 処理の流れ、ファイル操作、通信の挙動 |
実物の活用例として、パナソニックは回路図の復元を設計改善や故障解析に結び付けています。Artec 3Dは、交換部品の作成や既存部品の改善を目的とした計測・CAD化を紹介しています(パナソニック、Artec 3D)。
構造を理解するだけなら概略で足りる場合がありますが、部品を再製作するなら、取り付け寸法や材料などの根拠も必要です。解析の深さは、結果を何に使うかに合わせます。
通常の開発との違い
通常の開発は要求や仕様から製品を作り、リバースエンジニアリングは製品から構造や仕様を調べます。出発点と、得ようとする情報の向きが逆になります。
比較項目 | 通常の開発 | リバースエンジニアリング |
|---|---|---|
出発点 | 要求、仕様、設計情報 | 既存の製品、動作するシステム、実行ファイル |
主な作業 | 設計、製作、実装 | 計測、分解、解析、仕様の推定 |
得られるもの | 製品やソフトウェア | 構造、寸法、動作、設計情報の一部 |
検証すること | 要求どおりに作れたか | 解析結果が対象の形や動作と一致するか |
逆にたどっても、元の設計判断がすべて分かるわけではありません。例えば、軸の直径を測れても、その直径を選んだ理由や、許容したばらつきまで確定できるとは限りません。測定・観察で確認できた事実と、用途から推定した内容を分けて記録します。
ハードウェアとソフトウェアの手法
実物では分解や計測、ソフトウェアではコードや動作の解析が中心です。1つの方法で必要な情報がそろわない場合は、複数の方法を組み合わせます。
実物の形状や構造を調べる
実物の計測には、3Dスキャナー、三次元測定機、CTなどを使います。Artec 3Dも、これらをリバースエンジニアリングのデータ取得手段として挙げています(Artec 3D)。
手法 | 主に調べるもの | 選ぶ際の注意点 |
|---|---|---|
分解・外観観察 | 部品構成、接続、組み立て方 | 分解で変わる位置関係を事前に記録します |
ノギス・マイクロメーター | 長さ、直径、厚さなど | 測定子を当てられる形状かを確認します |
三次元測定機(CMM) | 測定点の座標や、それらから求める寸法 | 対象の大きさ、測定箇所、測定方式を合わせます |
光学式3Dスキャナー | 表面の形状、複雑な曲面 | 光が届く範囲や、透明・反射面への対応を確認します |
X線CT | 内部の空洞や構造 | 対象の材質・厚さ・大きさに適した装置を選びます |
光学式の3Dスキャンでは、暗い面や反射する面などが取得しにくいことがあります。Artec 3Dの計測解説も、こうした表面条件と、設計意図や累積する誤差への配慮を挙げています(Artec 3Dの計測解説)。
得られた点群やメッシュからCADモデルを作る工程は、計測とは別です。点群は座標を持つ点の集まり、メッシュは点をつないだ面の集まりです。寸法を変更して設計を続けたい場合は、面や穴をCADの形状として再構成します。
ソフトウェアの構造や動作を調べる
プログラムを動かさずに構造を読む方法を静的解析、動かして状態や振る舞いを観察する方法を動的解析と呼びます。静的解析で推定した処理を、動的解析で確かめる使い方もあります(Ghidraの解析機能、Ghidra Debugger公式教材)。

手法 | 調べ方 | 分かること・限界 |
|---|---|---|
逆アセンブル | 機械語をアセンブリ言語の命令として表示します | 命令の流れを読めますが、設計上の意味は解釈が必要です |
逆コンパイル | 実行ファイルを高水準言語に近い表現へ変換します | 処理を理解しやすくなりますが、元のソースコードと同一とは限りません |
デバッグ・動作観察 | 実行中の値、入出力、通信などを記録します | 観察した条件での動作を確認できます |
Ghidraは、逆アセンブルや逆コンパイルなどを備えた実在の解析ツールです。取得できる情報は、実行ファイルに残る名前やデバッグ情報、最適化・難読化の状態によって変わります。元のコメントや開発者の設計判断まで、自動で復元されるわけではありません。
動的解析で確認できるのは、実際に実行した条件の範囲です。不審なプログラムを扱う場合は、通常の作業端末と切り離した解析環境を用意します。動作を観察する手法でも、対象へのアクセス権限や契約の確認は必要です。
リバースエンジニアリングの進め方
目的を決め、対象の情報を取得し、解析・モデル化した結果を検証します。実物とソフトウェアで道具は違いますが、推定を確認済みの事実へ近づけるために、観察と検証を繰り返す点は共通です。
現物からCAD・図面を作る場合
まず、外観を記録するのか、部品を再製作するのかを決めます。用途に合わせて、必要な寸法、材料情報、成果物の形式、許容する誤差を整理します。
用途を決める:見る、寸法を確認する、改良する、再製作する、のどこまで必要かを決めます。
計測する:対象に合う方式で形状を取得し、測定条件と測れていない箇所を記録します。
形にする:点群やメッシュを処理し、必要に応じてCADモデルを作ります。
寸法を決める:現物の測定値と、機能に合わせて設計し直す値を区別します。
検証する:重要寸法、元データとの差、組み付けや用途に合うかを確認します。

図は、表面の計測(左上)、点群化(右上)、CAD化(左下)、元データとの比較(右下)の流れです。例えば、摩耗した軸をそのまま写すと、摩耗後の形を再製作してしまいます。手順4の「寸法を決める」では、現状を記録するのか、使用に適した形へ戻すのかを判断します。各工程の詳細は、リバースエンジニアリングで図面を作る手順で扱っています。
ソフトウェアの仕様を調べる場合
調べる範囲を、ファイル形式、通信、特定機能の動作などに絞ります。解析結果には、確認した入力条件と出力、推定した処理、未確認の部分を残します。
解析の目的、対象のバージョン、権限と利用条件を確認します。
ファイル構造やコードから、処理の流れを調べます。
必要な範囲で動作を観察し、静的解析の結果と照合します。
仕様や構造を文書化し、別の入力条件でも説明が成り立つかを確かめます。
仕様を調べる作業と、その結果を使って新しいソフトウェアを実装する作業は分けて扱います。解析で得たコードをそのまま再利用できるとは限らないためです。
復元できる情報の限界
リバースエンジニアリングで得られるのは、対象から観測できる情報と、その情報を基にした推定です。元の設計書が丸ごと復元されるわけではありません。

図の左は摩耗した現物、右は摩耗前の形状の候補です。外形を測っても、どちらが元の設計かまでは特定できません。材質や熱処理の状態を調べるには、成分分析や硬さ試験など別の手段を検討します。
対象 | 調査で分かる情報 | 追加の確認が必要な情報 |
|---|---|---|
部品 | 測定時点の形状・寸法、部品の配置 | 設計公差、摩耗前の寸法、材質、設計意図 |
電子機器 | 接続、回路、使用部品、観測した動作 | 未確認の条件での性能、設計判断の理由 |
ソフトウェア | 観測・解析できた処理や入出力 | 失われたコメント、元の設計意図、未実行の条件での動作 |
設計公差は、寸法に許すばらつきの範囲です。1個の現物を測った値だけでは、その範囲を決められません。複数個体の比較、残っている仕様、相手部品との関係などを使い、再利用に必要な条件を確かめます。
着手前に確認する権利と契約
リバースエンジニアリングの可否は、対象の入手方法、解析の目的と方法、契約、得た情報の使い方によって変わります。解析と、その結果を使った製造・配布の両方を確認します。
プログラムの調査解析と著作権
文化庁は、著作権法第30条の4の対象例として、プログラムの調査解析を目的とする利用を挙げています(文化庁の改正法Q&A)。
同条は、著作物の表現を鑑賞するなどの「享受」を目的としない利用を、必要と認められる限度で認める規定です。著作権者の利益を不当に害する場合は除かれます。解析と称すればどの利用も認められる、という規定ではありません(著作権法第30条の4)。
着手前に、何を調べるか、どのデータを複製・利用するか、結果をどう扱うかを具体化します。利用規約や個別契約にある解析の制限、秘密保持の条件も併せて確認します。
入手方法と、結果の利用も確認する
不正競争防止法は、営業秘密を窃取・詐欺などの不正な手段で取得する行為などを規制しています。対象物を持っていることだけで、関連する秘密情報を自由に入手・利用できるわけではありません(不正競争防止法第2条)。
解析結果を使って部品を製造する場合は、他者の特許権などとの関係も確認します。特許法には試験・研究のための実施に関する規定がありますが、そのことだけで製造・販売まで認められるわけではありません(特許法第68・69条)。
確認する段階 | 整理すること |
|---|---|
対象を入手するとき | 入手経路、所有・利用の権限、秘密保持の条件 |
分解・解析するとき | 目的、方法、複製する範囲、利用規約・契約 |
結果を使うとき | 製造・配布・販売の範囲、第三者の権利、利用許諾の要否 |
よくある質問
リバースエンジニアリングの費用や期間はどのくらいですか
対象の大きさや複雑さ、必要な精度、解析する範囲で変わります。実物なら「計測だけ」「CADモデルまで」「図面と検証まで」、ソフトウェアなら対象機能と検証条件をそろえて見積もります。
納品するファイル形式、検証内容、修正作業がどこまで含まれるかも確認すると、見積もりを比較しやすくなります。
まとめ
リバースエンジニアリングは、既存の製品やソフトウェアから構造や仕様を調べる活動です。実物には計測・分解、ソフトウェアには静的解析・動的解析を使い、目的に合わせて必要な情報を集めます。
解析で分かった事実と推定を分け、再製作や改良に使えるかを検証します。着手前には対象への権限と契約を確認し、結果を利用する段階でも第三者の権利を確かめます。
3D.Core のサービス紹介資料をダウンロードできます。→ 資料ダウンロード
bestat 編集部について
bestat株式会社は、東京大学 松尾研究室発の産業用3Dデータに特化したAIスタートアップです。製造業・インフラ・土木の現場で、画像・動画・点群・360度動画など、現実空間で取得される多様なデータを高精度に3D化し、取得・生成・処理・活用までを一気通貫して支援する「3D.Core」シリーズを開発・提供しています。https://bestat-data.com/3dcore

