リバースエンジニアリングの手法、メリット、違法性について解説

リバースエンジニアリングの手法、メリット、違法性について解説

リバースエンジニアリングとは、既存のハードウェアやソフトウェアを分解・解析して、構造や動作原理を明らかにする手法です。製品の改良から互換性の確保、セキュリティ対策、レガシーシステムの刷新まで、幅広く活用されています。
リバースエンジニアリング自体に違法性はありませんが、知的財産権の侵害には要注意です。リバースエンジニアリングの概要からメリット、方法、関連法令までを解説します。

➡︎【資料ダウンロード】そのコード、5年後も使い続けられますか?コード書き換え支援ツール

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

リバースエンジニアリングとは、既存のソフトウェアやハードウェア製品を分解・解析して、製品の構造や動作原理を明らかにする開発手法のことです。

ハードウェア開発では通常、図面や設計情報の作成から部品や製品の生産へと工程が流れていきます。ソフトウェア開発では、要件定義の概念設計から基本設計、詳細設計へと進み、プログラミング、稼働という流れで製品が完成します。

一方、リバースエンジニアリングでは、通常の開発プロセスとは逆の流れをたどります。ハードウェアなら、既存製品を分解・解析して構造や仕組みを明らかにし、動作原理を調査したり図面に起こしたりします。ソフトウェアであれば、既存製品のソースコードを解析し、設計を明らかにします。

“reverse(リバース)”が英語で「逆」を意味するとおり、リバースエンジニアリングは、通常のプロセスを逆にたどってソフトウェアやハードウェアを開発する手法です。

★まとめ
・リバースエンジニアリングとは、既存のソフトウェアやハードウェア製品を分解・解析して構造や動作原理を明らかにする開発手法
・通常の製品開発では設計から製造・稼働へ、リバースエンジニアリングでは製品から設計へと工程が進む
・通常のプロセスを逆にたどって製品を開発する手法がリバースエンジニアリング

➡︎【資料ダウンロード】ビジネスの俊敏性を高めるITモダナイゼーションの教科書

リバースエンジニアリングの活用目的

リバースエンジニアリングの活用目的は、自社製品の改良からレガシーシステムの刷新まで、多岐にわたります。ここでは、主に6つの活用目的について解説します。

改良や改善のための分析

他社が業界に先がけて搭載している先端技術や高度な技術を自社製品に取り入れ、自社製品の改良や改善を図るうえで、リバースエンジニアリングは有効な手段となっています。他社の既存製品をもとに、その構造や動作原理を分析することで、他社製品に使われている技術やノウハウを知ることができるからです。

マニュアルを作成する

リバースエンジニアリングは、自社製品の分析にも活用されます。開発から長い期間が経過している旧式の製品は、その後製品に変更や改造が加えられてもマニュアルが更新されていなかったり、そもそもマニュアル自体が作成されていなかったりします。そこで、社内で共有できるマニュアルを作るために、製品から遡って設計図を立ち上げるリバースエンジニアリングの手法が使われることがあります。

開発コストの削減

新製品を開発する際、通常は、アイデアをイラストや図面、設計情報などにした後、試作と改善を繰り返しながら製品化を目指すという工程をたどります。製品化までの作業工程を行き来しながら行うため、時間的にも金銭的にもコストがかさみます。そこで、リバースエンジニアリングを活用して既存製品の技術を特定し、新製品開発の参考にすることで、開発コストの削減につながります。

自社製品との互換性の確保

ソフトウェア開発においては、他のソフトウェアやハードウェアとの互換性があることが、品質に大きな影響を及ぼします。そこで、自社製品との互換性確保を目的として、他のソフトウェアやハードウェアの設計や構造を解析するリバースエンジニアリングが使われます。

自社製品の脆弱性の発見

サイバー攻撃のリスクを最小化するには、ソフトウェアのセキュリティ対策が欠かせません。セキュリティ対策のひとつとして、自社のアプリケーションやソフトウェアの脆弱性を発見し、サイバー攻撃に備えた対策を講じることが挙げられます。リバースエンジニアリングは、自社製品の挙動やプログラムの仕組みを把握したうえで、悪意のあるハッカーに狙われやすい脆弱な部分を特定するのに役立ちます。

レガシーシステムの刷新

レガシーシステムと呼ばれるシステムは、導入から長い期間が経過して老朽化したシステムです。レガシーシステムには、古いコンピューター言語が使われていたり、修正や変更が重ねられていたりします。
いわゆるブラックボックス化してしまったレガシーシステムを刷新するには、まずソースコードを解析し、システムの構成や各プログラムの機能や仕様を解明しなければなりません。そのうえで、新たなシステムへの移行を考えます。
このように、リバースエンジニアリングはレガシーシステムの刷新にも活用されています。

★レガシーシステムの刷新について詳しくはこちら

★CodeRebuild AIについて詳しくはこちら

➡︎【資料ダウンロード】そのコード、5年後も使い続けられますか?コード書き換え支援ツール

リバースエンジニアリングのメリット

リバースエンジニアリングには、主に4つのメリットがあります。

より良い製品の開発ができる

活用目的の項目で解説したとおり、リバースエンジニアリングは改良や改善のための分析に使われることがあります。
リバースエンジニアリングを活用すれば、既存製品に搭載されている技術やノウハウを自社製品の開発に活かせます。また、すでに既存製品が市場で得ている評価や消費者の反応を参考に新製品を開発することで、ニーズに合ったより良い製品を生み出せるというメリットもあります。

設計書がなくても復元できる

リバースエンジニアリングは、設計書から製品を作るのではなく、製品から遡って設計を明らかにするため、製品の全貌を把握するうえで設計書を必要としません。例えば、ハードウェア製品の実物を測定してCADデータを作成すれば、これをもとに製品や部品を生産できます。
このように、図面や設計書がない製品でも復元できる点は、リバースエンジニアリングのメリットのひとつです。復元の過程で取得したデータを保存しておけば、将来的に設計書以上の価値を発揮する資産となるでしょう。

開発コスト削減と期間短縮ができる

リバースエンジニアリングは、開発コストの削減目的に使われることもあります。通常は、アイデアの着想から始まり、設計の後、試作を繰り返しながら、長い時間と費用をかけて新製品が生み出されます。
一方で、リバースエンジニアリングでは、すでに機能している製品の構造や技術を参考に開発が進められるため、通常の開発に比べて低コストかつ短期間での開発を実現できます。金銭的コストを低減することで製品の価格も抑えられるため、開発企業だけでなくユーザーにとっても大きなメリットがあります。

セキュリティ対策ができる

リバースエンジニアリングの活用目的のひとつに、「自社製品の脆弱性の発見」が挙げられます。悪意のあるハッカーに狙われやすいポイントをあらかじめ特定し、対策を施しておくことで、サイバー攻撃を防げます。このように、セキュリティ対策に活用できる点も、リバースエンジニアリングのメリットといえるでしょう。

➡︎【資料ダウンロード】ビジネスの俊敏性を高めるITモダナイゼーションの教科書

リバースエンジニアリングの方法

リバースエンジニアリングに用いられる具体的な方法は、ハードウェアの場合とソフトウェアの場合とで異なります。以下、それぞれについて解説します。

ハードウェアにおけるリバースエンジニアリングの方法

ハードウェアにおけるリバースエンジニアリングは、多くの場合、製品を分解して構造や仕組みを調べる方法で行われます。ただし、製品を物理的に分解することなく構造を調べなければならない場合や、各部品の内部構造を詳細に調べる際には、CTスキャンやCMMマシン、3Dスキャナーなどの装置や機器が活躍します。

CTスキャン

CTスキャンは、物体に高精度X線を照射した際の吸収率の違いを利用して、対象物の内部の形状を調べる撮影方法です。製品を分解することなく内部の状態を把握できること、従来の測定器では測定しにくかった部分も撮影できることから、外観からは分からない部分の形状を把握したり、製品のパーツの詳細を調査したりするのに使われます。

CMMマシン

CMMマシンは、縦・横・高さに対応する3つの座標軸X・Y・Zを用いて、対象物の寸法を測定する装置です。対象物のサイズや材質を問わず測定可能です。リバースエンジニアリングでは、製品の寸法や部品の位置関係、角度などを正確に測定するために使われます。

3Dスキャナー

3Dスキャナーは、対象物にレーザーを照射して立体的な形状を把握し、3Dデータに変換する機械です。3Dスキャナーを使って3Dデータを取得できれば、図面や仕様書がなくてもCADデータを起こせるため、設計図がない製品の復元などを目的とするリバースエンジニアリングで重宝されています。

CAD化用リバースソフト

CAD化用リバースソフトは、3Dスキャナーなどで取得したポリゴンデータ(点群データ)をCADデータに変換するためのソフトウェアです。リバースエンジニアリングでは、測定データをもとに図面を作成する際に使われます。

ソフトウェアにおけるリバースエンジニアリングの方法

ソフトウェア開発では、人間が理解しやすい言語で書かれたソースコードが、コンピューターにプログラムを解釈・実行させるための機械語へと変換され、難読化されています。ソフトウェアのリバースエンジニアリングでは、コンピューターによる解釈・実行用に難読化された部分を、人間が理解可能なアセンブリ言語やコンパイラ言語に変換することで、元のソースコードを解析します。ここでは、アセンブリ言語に変換する逆アセンブルと、コンパイラ言語に変換する逆コンパイルを紹介します。

逆アセンブル(ディスアセンブル/リバースアセンブル)

逆アセンブルとは、コンピューター向けの機械語に変換されたコンピュータープログラムを、人間にとって理解しやすいアセンブリ言語によるソースコードに変換するためのソフトウェアです。逆アセンブルを用いても、完全に元のソースコードを復元できるわけではありませんが、ソースコードを知る一手段として、ソフトウェアのリバースエンジニアリングで活用されています。

逆コンパイル(デコンパイル)

逆コンパイルとは、実行可能形式のコンピュータープログラムのオブジェクトコードを解析し、元となったソースコードに変換するためのソフトウェアです。元のソースコードに記述されていた関数名や変数名などの情報は逆コンパイルできませんが、実行形式のコードからプログラムの挙動を読み解くうえで有効なツールです。

★CodeRebuild AIについて詳しくはこちら

➡︎【資料ダウンロード】そのコード、5年後も使い続けられますか?コード書き換え支援ツール

リバースエンジニアリングの違法性

リバースエンジニアリングそのものは合法的な行為です。しかしながら、リバースエンジニアリングの活用目的や、リバースエンジニアリングによって知り得た情報・技術の使用方法によっては、他者の知的財産権を侵害する違法な行為となるおそれがあります。ここでは、リバースエンジニアリングに関係する権利と法律について解説します。

知的財産権

知的財産権は、創作意欲の促進を目的とする「知的創造物についての権利」と、使用者の信用維持を目的とする「営業上の標識についての権利」に大別されます。前者の例としては、特許権や意匠権、著作権、営業秘密などが挙げられます。後者は、商標権や商号などです。
これら知的財産権を保護する法律のうち、特許権を保護する特許法、意匠権を保護する意匠法、著作権を保護する著作権法、営業秘密を保護する不正競争防止法との関係で、リバースエンジニアリングの違法性が問われることがあります。

特許権

特許権とは、特許権者が新たな「発明」を独占的に利用できる権利です。発明の対象は、装置や化合物といった「物」だけでなく、製造方法などの「方法」も含まれます。
リバースエンジニアリングで獲得した知識や情報が、特許権で保護された「発明」に該当するような場合は、その発明を利用して自社製品を製造したり販売したりすると特許権侵害、つまり違法行為となります。
ただし、特許法第69条第1項には「特許権の効力は、試験又は研究のためにする特許発明の実施には、及ばない」と規定されています。このため、試験や研究を目的としたリバースエンジニアリングであれば、特許法には抵触しません。

意匠権

意匠権とは、意匠権者が意匠(=デザイン)を独占的に利用できる権利です。意匠権の対象は、物品、画像、建築物などで、工業上利用できるものに限られます。芸術作品などのデザインは意匠法では保護されません。
例えば、リバースエンジニアリングで明らかになった装置の形状を真似て自社製品を製造・販売した場合、その装置の形状が意匠登録されていれば意匠権侵害にあたるおそれがあります。パソコンやスマートフォンなどの端末機器に表示される画面デザインも意匠権の保護対象となりますので、アプリケーションの開発などにリバースエンジニアリングを用いる場合も、意匠法に抵触しないよう注意が必要です。

著作権

著作権法で保護される著作物とは、思想または感情を、創作的に表現したもので、文芸、学術、美術または音楽の範囲に属するもののことです(著作権法第10条参照)。
ソフトウェアやプログラムの設計図であるソースコードも、著作権法で保護される著作物です。このため、かつては「リバースエンジニアリングによってソースコードを無断で複製する行為は、著作権侵害となるのではないか」という論点がありました。
しかしながら、平成30年(2019年)の著作権法改正により、脆弱性の発見や互換性の確認など、研究・開発目的でのアイデアを得るために行うリバースエンジニアリングには、違法性がないことが明らかにされました。

参考:改正後の著作権法第30条の4第1項柱書

「著作物は、次に掲げる場合その他の当該著作物に表現された思想又は感情を自ら享受し又は他人に享受させることを目的としない場合には、その必要と認められる限度において、いずれの方法によるかを問わず、利用することができる。ただし、当該著作物の種類及び用途並びに当該利用の態様に照らし著作権者の利益を不当に害することとなる場合は、この限りでない。」

不正競争防止法

不正競争防止法とは、事業者間の公正な競争を維持することを目的とした法律で、営業秘密の侵害やコピー商品の販売などの「不正競争」を規制しています。
リバースエンジニアリングに関しては、市場に出回っている他社製品を正規ルートで購入し、解析することは何ら問題ありません。一方で、他社の試作品などを不正なルートで入手し、これを解析して情報を取得したような場合は、当該情報を使って製品の製造・販売をしていないとしても「営業秘密の持ち出し」に該当する違法行為となります。

➡︎【資料ダウンロード】ビジネスの俊敏性を高めるITモダナイゼーションの教科書

ソフトウェアのリバースエンジニアリング対策

自社のソフトウェア製品が容易にリバースエンジニアリングされてしまうと、他社に自社のノウハウや技術を知られてしまったり、不正アクセスや情報漏洩が生じたりするおそれがあります。このため、ソフトウェア開発においては、リバースエンジニアリング対策が欠かせません。ここでは、主な対策を2つ紹介します。

ソースコードを難読化する

ソースコードの難読化とは、ソースコードに無意味なコードを挿入したりアルゴリズムを隠したりすることで、人間にとっての可読性を著しく低下させることです。ソースコードを難読化するための専用ツールも利用できます。ただし、難読化はあくまでコードを読みにくくするための手法です。よりリバースエンジニアリング対策の効果を高めるには、データの暗号化をおすすめします。

データを暗号化する

データの暗号化とは、ソースコードのファイルを暗号化して、データを解読できない状態にすることです。データの暗号化をしておけば、復号化するための「鍵」を持つ人以外はソースコードの中身を見られません。鍵を持たない第三者はリバースエンジニアリングできないため、ソースコードの難読化よりも確実性の高い対策法です。

➡︎【資料ダウンロード】そのコード、5年後も使い続けられますか?コード書き換え支援ツール

まとめ:DXに悩む企業の打開策、リバースエンジニアリングを活用しよう

リバースエンジニアリングは、自社製品の改良だけでなく、開発コストの削減・期間短縮、設計書のない製品の復元、セキュリティ対策など、多くのメリットをもたらします。とりわけ、設計書が存在しないシステムやブラックボックス化したシステムを抱えている企業、属人化で技術継承に不安が残る企業、レガシーシステムから脱却できずにいる企業などには、製品から設計へと遡る手法、リバースエンジニアリングが有効です。DX推進に向けた打開策として、ぜひ取り入れてみてください。

★CodeRebuild AIについて詳しくはこちら

➡︎【資料ダウンロード】ビジネスの俊敏性を高めるITモダナイゼーションの教科書

サービス・プロダクト開発を検討している企業ご担当者様へ

モンスターラボは、約20年にわたるサービス・プロダクト開発実績から得られたデジタル領域の知見や技術力を活かし、デジタルプロダクト開発事業を展開しています。

先端テクノロジーに対応した高度なIT人材があらゆるプラットフォーム上での開発を支援します。アジャイル開発とDevOpsによる柔軟な開発進行や、国内外のリソースを活用したスケーラブルな開発体制の構築も可能です。 また、リリース後の保守運用や品質向上支援まで伴走可能です。

モンスターラボが提供するサポートの詳しい概要は以下リンクをご確認ください。

➡︎モンスターラボのサービス概要はこちら

案件の相談はこちら

直近のイベント

記事の作成者・監修者

平田 大祐(株式会社モンスターラボ 常務執行役員)

平田 大祐(株式会社モンスターラボ 常務執行役員)

2004年IBMグループに入社し、IBM ITスペシャリストとしてシステム開発に従事。 2009年からベンチャー企業にて受託開発、コンテナ型無人データセンターの管理システム、ドローン開発などソフトウェアからハードウェア開発まで幅広く関わる。チーフテクノロジストとして2015年にモンスターラボへ入社し、2018年4月より最高技術責任者であるCTOに就任。 プロフィールはこちら