リバースエンジニアリングとは?意味と手法、違法になるケースを解説

リバースエンジニアリングとは?完成品から仕組みを探ること

普通の開発とリバースエンジニアリングの比較

普通の開発(フォワードエンジニアリング) リバースエンジニアリング
出発点 要件や設計図 完成した製品・ソフトウェア
進む方向 設計 → 製造 → 製品 製品 → 解析 → 構造や設計
得られるもの 新しい製品 仕組み・仕様・設計の情報

リバースエンジニアリングは、完成品を出発点にして製品の作り方をさかのぼって調べる方法です。機械や電子部品などのハードウェアにも、プログラムなどのソフトウェアにも使われています。

既存の製品を調べて構造や作り方を明らかにする

リバースエンジニアリングとは、すでにある製品を分解したり解析したりして、構造や作り方を明らかにすることです。また、公正取引委員会は年次報告の中で既存の製品を調査して解析し、構造や製造方法などの技術を明らかにすること、と定義しています。

英語のreverse engineeringをそのままカタカナにした言葉です。reverseは「逆」、engineeringは「工学」という意味で、略してリバエン、訳して逆行工学と呼ばれることもあります。ただし一般には、リバースエンジニアリングという呼び方が広く使われています。

公正取引委員会の年次報告のページ。リバースエンジニアリングの禁止の項と、リバースエンジニアリングとは何かを説明した注記が写っている
公正取引委員会の年次報告です。下の注記で、リバースエンジニアリングを定義しています。公正取引委員会 — 平成13年度年次報告 第6章
(注)リバースエンジニアリングとは,「既存の製品を調査・解析してその構造や製造方法などの技術を探知すること」を指す。 — 公正取引委員会 年次報告より
公式情報を見る →

普通の開発(フォワードエンジニアリング)とは順番が逆

普通の製品開発では要件を定めて設計し、その設計図をもとに製品を作ります。この順番で進める開発を、リバースエンジニアリングに対してフォワードエンジニアリングと呼びます。

リバースエンジニアリングは、この流れを逆の順番で進める方法です。完成した製品を出発点にして、部品の形状や組み合わせ、プログラムの動作から設計の情報を取り出していきます。設計図が残っていなくても、製品さえあれば調べることができます。

既存の製品を解析する目的は何か

リバースエンジニアリングの主な目的

目的 調べる対象 例
互換性の確保 他社製品の接続のしかた 他社のソフトウェアと連携する製品を開発する
セキュリティ ソフトウェアやウイルスの動作 脆弱性発見、マルウェアの解析
古いシステムの刷新 自社のプログラム 設計書を作り直して新しいシステムへ移す
製品の改良 他社製品・自社製品 構造を比較して改善点を見つける

リバースエンジニアリングは、他社の技術をまねるためだけのものではありません。自社システムを保守するときや、ソフトウェアの安全性を調べるときにも広く使われています。

互換性のある製品の開発

代表的な目的は、他社製品と互換性のある製品を開発することです。また、他社のソフトウェアとの間でデータをやり取りするには、データの形式や手順を知る必要があります。提供元がその情報を公開していないときは、製品を解析して必要な情報を取り出します。

脆弱性やマルウェアを調べる

セキュリティの分野では、ソフトウェアに潜む弱点やウイルスの動作を調べるために使われます。脆弱性(ソフトウェアにある安全上の欠陥)は、ソースコードが公開されていない製品にも見つかる欠陥です。プログラムを解析すれば、攻撃に悪用されそうな箇所を見つけられます。

マルウェア(ウイルスなどの悪意あるプログラム)の解析にも欠かせません。作った側がソースコードを公開することはないため、届いたプログラムそのものを解析して、何をするのか、どこへ情報を送信するのかを調べます。

設計書のない古いシステムを作り直す

長く使ってきた社内システムを新しくするときにも、リバースエンジニアリングが役立ちます。作った当時の担当者が退職していたり設計書が残っていなかったりして、システムの仕様が誰にも分からなくなっていることは珍しくありません。

このような場合は、稼働中のプログラムを解析して仕様を書き起こし、新しいシステムの設計に生かします。プログラムから設計書を作り直す作業は、保守のための資料づくりとしても行われています。

他社製品と比較して自社製品を改良

他社製品を分解して自社製品と比較し、構造の違いから改善点を見つけるのも目的の1つです。また、部品の数や組み方の違いから自社製品で無駄になっている部品や工程を確認できます。

自社製品をあえて解析し、他社に技術を読み取られやすくなっていないかをチェックすることもあります。どの部分が読み取られやすいかが分かれば、守るべき箇所を特定できます。

製品の仕組みはどのように調べるのか

対象ごとの主な手法

対象 手法 得られるもの
ハードウェア 分解、3Dスキャナーやノギスでの計測 部品の形状・寸法、CADの図面
ソフトウェア 逆アセンブル、逆コンパイル アセンブリ言語、ソースコードに近いプログラム
ソフトウェア 静的解析、動的解析 プログラムの構造、実際の動作

リバースエンジニアリングのやり方は、ハードウェアなら分解して形状を測り、ソフトウェアなら機械語を人が読み取れるプログラムへ変換して調べるというように、調べる対象によって大きく変わります。ここでは代表的な手法と、最近出てきたAIを使う方法を紹介します。

ハードウェアは分解・計測して図面に起こす

ハードウェアのリバースエンジニアリングは、製品を分解して部品の形状や寸法を測ることから始まります。ノギスなどで1つずつ測るほか、3Dスキャナーで形状をまるごと読み取る方法や、CTスキャンで分解せずに内部を見る方法もあります。

測ったデータはCAD(コンピューターで図面を作るソフトウェア)に取り込み、図面に起こします。図面ができれば、部品を作り直したり設計を見直したりできます。

ソフトウェアは逆アセンブルや逆コンパイルで読む

ソフトウェアの多くは、人がそのままでは読み取れない機械語(コンピューターが直接実行できる命令)で提供されています。人がプログラミング言語で書いた元のプログラムはソースコードと言い、市販のソフトウェアはソースコードを機械語に変換してから配布されるのが普通です。構造を把握するには、まず機械語を人が読み取れるプログラムへ変換しなければなりません。

逆アセンブル(ディスアセンブル)は、機械語をアセンブリ言語という命令の一覧に変換する作業です。逆コンパイル(デコンパイル)は、さらに進めてソースコードに近いプログラムまで変換します。変換した結果を読む方法を静的解析、プログラムを実際に動作させて挙動を観察する方法を動的解析と呼び、普通は両方を組み合わせて調べます。

最近はAIエージェントに解析させる方法もある

最近は、AIエージェントに解析ツールを操作させ、プログラムの仕組みを説明させる方法も出てきました。つまり、Claude CodeなどのAIエージェントに解析ツールを連携すれば、解析したい機能を文章で伝えるだけでAIが解析を進め、根拠とともに仕組みを解き明かします。

逆アセンブルや逆コンパイルの結果を人が直接読むには専門知識が必要です。AIエージェントに任せれば、解析ツールの操作を覚えなくても調べることができます。

解析のメリットとデメリットは何か

メリットとデメリットの比較

内容
メリット 一から作るより開発の時間とコストを減らせる
メリット 設計書が無くても仕様や設計を復元できる
デメリット 機械語や測定機器についての専門知識が必要
デメリット 複雑な製品ほど解析に時間がかかる
デメリット 得た情報の使い方によっては法律や契約の問題になる

リバースエンジニアリングには開発を早める大きな利点がある一方で、解析の手間と、得た情報の使い方には注意が必要です。メリットから順に紹介します。

開発の時間とコストを減らせる

すでにある製品から仕組みを学べるので、一から設計するより開発の時間とコストを減らせます。要件を定めて設計し、試作と検証を何度も繰り返す工程には大きな手間がかかるものです。しかし、完成品を調べればどのような構造で目的の機能を実現しているかが最初から分かった状態で開発に取りかかれます。

設計書がなくても仕様を復元可能

設計書や仕様書が失われていても、製品そのものから仕様を復元できます。古い部品を作り直したいのに図面が無い、社内システムの仕様を知る人がいない、といった状況で役立つ方法です。復元した情報を資料として残しておけば、次に同じ製品を保守するときにも使うことができます。

専門知識が必要で、解析に時間がかかる

リバースエンジニアリングには、対象ごとの専門知識が必要です。ソフトウェアなら機械語やアセンブリ言語の知識、ハードウェアなら測定機器やCADの操作を身につけておかなければなりません。

複雑な製品ほど解析には時間がかかり、解析を難しくする対策が施されたソフトウェアでは、さらに手間が増えます。また、解析で得た情報をどう使うかによっては、次に紹介する法律や契約の問題になります。

リバースエンジニアリングは違法?関係する法律と利用規約

リバースエンジニアリングに関係する法律と規約

法律・規約 解析そのもの 問題になる行為
著作権法 プログラムの解析は原則として侵害にならない プログラムをそのまま複製して使う
特許法 試験・研究のための実施には特許権が及ばない 特許発明を無断で製品にして売る
不正競争防止法 正当に入手した製品の解析は対象外 営業秘密の不正取得、コピー防止を無効にする装置の提供
利用規約・契約 規約で禁止されていることがある 規約違反として責任を問われる

リバースエンジニアリングをすること自体を一律に禁じる法律はありませんが、何をしたかによっては違法になります。ここでは日本の法律と、利用規約との関係を順に紹介します。

著作権法上、プログラムの解析は原則として侵害にならない

プログラムの解析を目的とするリバースエンジニアリングは、著作権法上、原則として侵害になりません。プログラムも著作物なので、解析のために複製や変換をすると著作権侵害にならないかが、以前ははっきりしませんでした。

平成30年(2018年)の著作権法改正で、著作物を楽しむこととは関係のない利用を広く認める規定(第30条の4など)が設けられ、平成31年(2019年)1月1日から施行されています。文化庁は令和元年(2019年)10月の資料で、解析のための利用はプログラムを実行して機能を使うための利用ではないので、第30条の4の対象になると考えられるとしています。

ただし、解析で取り出したプログラムをそのまま複製し、自社製品に組み込むことまでは認められていません。認められているのは調べることであって、写して使うことではないので、注意が必要です。

文化庁の資料のページ。問12として、プログラムの著作物のリバース・エンジニアリングが権利制限の対象となるかという問いと、文化庁の考え方が書かれている
文化庁の資料の問12です。リバースエンジニアリングと著作権法の関係について、文化庁の考え方を示しています。文化庁著作権課 — 柔軟な権利制限規定に関する基本的な考え方
リバース・エンジニアリングと言われるようなプログラムの調査解析目的のプログラムの著作物の利用は,プログラムの実行等によってその機能を享受することに向けられた利用行為ではないと評価できることから,法第30条の4の「著作物に表現された思想又は感情」の「享受」を目的としない利用に該当するものと考えられる。(問12) / この法律は,平成三十一年一月一日から施行する。(附則第一条) — 文化庁著作権課の資料より
公式情報を見る →

特許権は試験・研究のための実施には及ばない

特許を取った技術が使われた製品でも、試験や研究のために調べることは特許法上認められています。特許法第69条は、特許権の効力は試験又は研究のための特許発明の実施には及ばないと定めています。

一方で、権利者の許可なく特許発明を自社製品に使って売れば、特許権の侵害になります。調べることは自由でも、同じ技術を製品にしてよいわけではありません。

e-Gov法令検索の特許法のページ。第六十九条の特許権の効力が及ばない範囲の条文が表示されている
e-Gov法令検索で表示した特許法第69条です。e-Gov法令検索 — 特許法
特許権の効力は、試験又は研究のためにする特許発明の実施には、及ばない。 — e-Gov法令検索より
公式情報を見る →

不正競争防止法では営業秘密の不正取得などが問題になる

不正競争防止法は、正当に手に入れた製品を解析すること自体を禁じてはいません。問題になるのは製品の入手方法と、解析に関係する別の行為です。

1つは営業秘密の不正取得です。盗んだりだましたりといった不正な手段で他社の営業秘密を手に入れる行為は、不正競争の1つとされています。たとえば、正規に販売されていない試作品を不正に持ち出して解析する場合が考えられます。

もう1つは、コピー防止などの技術的制限手段を無効にする装置やプログラムを提供する行為です。解析の結果から保護を無効にする装置を作り、その装置を他人に提供したり売ったりする行為も不正競争とされています。

e-Gov法令検索の不正競争防止法のページ。第二条の不正競争の定義と、第四号の営業秘密不正取得行為の条文が表示されている
e-Gov法令検索で表示した不正競争防止法第2条です。第4号が営業秘密の不正取得を定めています。e-Gov法令検索 — 不正競争防止法
窃取、詐欺、強迫その他の不正の手段により営業秘密を取得する行為(第4号) / 当該技術的制限手段の効果を妨げることにより可能とする機能を有する装置(第17号) — e-Gov法令検索より
公式情報を見る →

利用規約で解析を禁止しているソフトウェアやサービスもある

法律で認められていても、ソフトウェアやサービスの利用規約でリバースエンジニアリングが禁止されていることがあります。文化庁の資料によると、規約で禁止されていても著作権侵害にはなりません。ただし、規約との関係には注意が必要です。

AIサービスにも同じような規定があります。たとえばAnthropicの個人向け利用規約は、サービスを逆コンパイルや逆アセンブルなどで人が読み取れる状態にすることを禁じています。AIの回答を使って競合するAIモデルを作ることも禁止の対象です。

一方で、規約による禁止がいつでも認められるとは限りません。公正取引委員会は、互換性のある製品の開発に解析が欠かせないのに、ライセンス契約で解析を禁じる場合を、独占禁止法上の問題になりうる行為の例としています。提供元が接続に必要な情報を出していないことなどが条件です。

AnthropicのConsumer Terms of Serviceのページ。Use of our Servicesの項に、禁止される使い方が英語で番号付きで書かれている
Anthropicの個人向け利用規約です。禁止事項の一覧の中で、リバースエンジニアリングを禁じています。Anthropic — Consumer Terms of Service
公正取引委員会の年次報告のページ。ソフトウェアのライセンス契約でリバースエンジニアリングを禁止することについての記述が写っている
公正取引委員会の年次報告です。ライセンス契約で解析を禁じる場合の考え方を示しています。公正取引委員会 — 平成13年度年次報告 第6章
To decompile, reverse engineer, disassemble, or otherwise reduce our Services to human-readable form, except when these restrictions are prohibited by applicable law. — Anthropic Consumer Terms of Serviceより
公式情報を見る →
規約との関係については注意する必要がある。 — 文化庁著作権課の資料より
公式情報を見る →
ライセンシーにとって,リバースエンジニアリングを行うことが,当該ソフトウェア向けにソフトウェアやハードウェアを開発するために必要不可欠な手段となっているような場合に,ライセンサーがライセンシーに対して,リバースエンジニアリングを行うことを禁止すること。 — 公正取引委員会 年次報告より
公式情報を見る →

自社製品をリバースエンジニアリングから守る方法

自社製品を守る主な方法

方法 内容
難読化 プログラムを読み取りにくく書き換えて、解析の手間を増やす
暗号化 重要なデータやプログラムの一部を暗号にして守る
利用規約・ライセンス契約 解析の禁止を契約に書く
営業秘密の管理 秘密として管理し、不正競争防止法の保護を受けられるようにする

自社製品を解析から守るには、技術的な対策と契約上の対策を組み合わせるのが一般的です。ここまでは調べる側の話でしたが、自社製品が解析される側に立つこともあります。

コードを難読化して読みにくくする

ソフトウェアを守る代表的な方法が、プログラムを難読化することです。難読化とは、動作を維持したまま変数の名前を意味の無い文字に置き換えたり、処理の順番を複雑にしたりして、人が読み取りにくくすることを指します。

難読化しても解析を完全に防ぐことはできませんが、解析にかかる時間と手間を大きく増やせます。重要なデータやプログラムの一部を暗号化して、そのままでは中身が分からないようにする方法もあります。

利用規約やライセンス契約で解析を禁止

技術的な対策に加えて、利用規約やライセンス契約にリバースエンジニアリングの禁止を書いておく方法があります。したがって、規約に違反して解析した相手には契約違反として責任を問える可能性があるでしょう。ただし、互換性のある製品の開発に欠かせない解析まで禁じると、先に紹介した公正取引委員会の考え方に触れる恐れがあります。

技術やノウハウを営業秘密として守りたい場合は、社内で秘密として管理しておくことも大切です。秘密として管理されている情報が不正な手段で取得されたときは、不正競争防止法の保護を受けることができます。

解析は原則自由でも、規約・営業秘密・コピー防止は別

解析してよいかどうかは著作権法だけでは定まらず、不正競争防止法と製品の利用規約も確認する必要があります。著作権法で侵害にならない解析でも、後の2つでは制限を受ける場合があります。

規約で解析を禁じていても、互換性のある製品の開発に欠かせない解析なら、その禁止は不公正な取引方法に当たりうると公正取引委員会はしています。解析する側は入手方法と規約を、守る側は禁止の範囲と営業秘密の管理を見直しておきましょう。解析する前に、対象の入手方法と利用規約を確認しておきましょう。

日本の著作権法では、プログラムの解析は原則として侵害になりません。ただし、営業秘密の不正な取得とコピー防止を無効にする装置の提供は、不正競争防止法で禁じられています。製品によっては、利用規約で解析そのものを禁じている場合もあります。

FAQ

リバースエンジニアリングは違法ですか?
解析すること自体は、日本では原則として違法ではありません。文化庁は、プログラムの解析を目的とするリバースエンジニアリングが著作権法第30条の4の対象になると考えています。ただし、不正に入手した営業秘密を使う行為や、コピー防止を無効にする装置やプログラムを他人に提供する行為は、不正競争防止法で禁じられています。
利用規約でリバースエンジニアリングが禁止されているソフトウェアを、解析してもよいですか?
文化庁の資料では、規約で禁止されていても解析は著作権侵害にならないと解されます。ただし、規約はユーザーと提供元の約束なので、約束を破った責任は別に問われる可能性があります。規約との関係には注意が必要です。
リバースエンジニアリングと逆コンパイルの違いは何ですか?
リバースエンジニアリングは、製品を調べて構造や作り方を明らかにすること全体を指す言葉です。逆コンパイルはソフトウェアを調べる手法の1つです。コンピューターが実行する機械語のプログラムを、人が書いたソースコードに近いプログラムへ変換する作業を指します。