リバースエンジニアリング(バックワードエンジニアリングまたはバックエンジニアリングとも呼ばれる)は、以前に作成されたデバイス、プロセス、システム、またはソフトウェアが、正確にどのようにタスクを達成するかについての洞察がほとんどない(またはまったくない)状態で、演繹的推論によってどのようにタスクを達成するかを理解しようとするプロセスまたは方法です。検討中のシステムと採用されているテクノロジーに応じて、リバースエンジニアリング中に得られた知識は、廃止されたオブジェクトの再利用、セキュリティ分析、または何かの仕組みの学習に役立ちます。[1] [2] [3]
プロセスは実行されるオブジェクトに固有のものですが、すべてのリバースエンジニアリングプロセスは、情報抽出、モデリング、レビューという3つの基本的なステップで構成されています。情報抽出は、操作を実行するために必要なすべての情報を収集する行為です。モデリングは、収集した情報を抽象モデルに組み合わせる行為で、新しいオブジェクトまたはシステムを設計するためのガイドとして使用できます。レビューは、選択した抽象の妥当性を確認するためにモデルをテストすることです。[1]リバースエンジニアリングは、コンピューター工学、機械工学、設計、電子工学、ソフトウェア工学、化学工学、[4]およびシステム生物学の分野に適用できます。[5]
概要
リバースエンジニアリングは、さまざまな分野でさまざまな理由で行われます。リバースエンジニアリングは、商業的または軍事的利益のためにハードウェアを分析することから始まりました。[6] : 13 ただし、リバースエンジニアリングのプロセスは、常にコピーを作成したり、何らかの方法で成果物を変更したりするものではありません。元の製造手順に関する追加の知識がほとんどまたはまったくない製品から設計上の特徴を推測するための分析の一部として使用される場合があります。 [6] : 15
場合によっては、リバースエンジニアリングプロセスの目標は、単にレガシーシステムの再文書化である可能性があります。[6] : 15 [7]リバースエンジニアリングされた製品が競合他社の製品である場合でも、目標はそれをコピーすることではなく、競合他社の分析を行うことである可能性があります。[8]リバースエンジニアリングは相互運用可能な製品を作成するために使用される場合もあり、米国と欧州連合の法律が厳密に調整されているにもかかわらず、その目的で特定のリバースエンジニアリング手法を使用することの合法性は、20年以上にわたって世界中の裁判所で激しく争われてきました。[9]
ソフトウェアのリバースエンジニアリングは、ソフトウェアの保守と改善のための基礎となるソースコードの理解を深めるのに役立ちます。また、関連情報を抽出してソフトウェア開発の決定を下すこともできます。また、コードのグラフィカルな表現によってソースコードに関する別の見方が提供されるため、ソフトウェアのバグや脆弱性を検出して修正するのに役立ちます。ソフトウェアが開発されるにつれて、時間の経過とともに設計情報や改善が失われることがよくありますが、その失われた情報は通常、リバースエンジニアリングで回復できます。このプロセスは、ソースコードの理解に必要な時間を短縮するのにも役立ち、ソフトウェア開発の全体的なコストを削減します。[10]リバースエンジニアリングは、より優れたコード検出器を使用して、ソフトウェアに書き込まれた悪意のあるコードを検出して排除するのにも役立ちます。ソースコードをリバースすると、ソースコードの別の用途を見つけることができます。たとえば、ソースコードが意図されていない場所で無許可で複製されていることを検出したり、競合他社の製品がどのように構築されたかを明らかにしたりすることができます。[11]このプロセスは、ソフトウェアやメディアを「クラッキング」してコピープロテクトを解除したり、[11] : 7 または、競合他社やハッカーの目的である、改良されたコピーや模造品を作成したりするためによく使用されます。[11] : 8
マルウェア開発者は、オペレーティングシステムの脆弱性を見つけ、システムの脆弱性を悪用できるコンピュータウイルスを作成するために、リバースエンジニアリング技術を使用することが多い。 [11] : 5 リバースエンジニアリングは、置換暗号、対称鍵アルゴリズム、公開鍵暗号の脆弱性を見つけるために暗号解読にも使用されている。[11] : 6
リバースエンジニアリングには他にも用途があります。
- ゲーム。ゲームやゲーム エンジンのコンテキストでのリバース エンジニアリングは、基盤となるメカニズム、データ構造、独自のプロトコルを理解するためによく使用され、開発者は MOD やカスタム ツールを作成したり、互換性を強化したりすることができます。この方法は、既存のシステムとインターフェイスして、さまざまなゲーム コンポーネント、エンジン、またはプラットフォーム間の相互運用性を向上させる場合に特に役立ちます。Reshax などのプラットフォームは、ゲーム バイナリの分析やゲーム エンジンの動作の分析に役立つツールとリソースを提供し、ゲーム テクノロジーの理解を深め、コミュニティ主導の機能強化を可能にします。
- インターフェース。リバース エンジニアリングは、あるシステムが別のシステムとインターフェースする必要があり、両方のシステムがどのようにネゴシエートするかを確立する必要がある場合に使用できます。このような要件は通常、相互運用性のために存在します。
- 軍事または商業 スパイ活動。試作品を盗んだり捕獲したりして、敵や競争相手の最新の研究について知ることで、類似の製品やそれに対するより良い対抗策が開発される可能性があります。
- 陳腐化。集積回路は多くの場合、独自のシステムで設計され、生産ラインで製造されますが、これらの生産ラインはわずか数年で陳腐化します。これらの部品が製造中止となり、それらの部品を使用するシステムが維持できなくなった場合、その機能を新しい技術に組み込む唯一の方法は、既存のチップをリバースエンジニアリングし、得られた理解をガイドとして使用して、新しいツールを使用して再設計することです。リバースエンジニアリングによって解決できるもう 1 つの陳腐化に起因する問題は、元の機器製造元によってサポートされなくなった既存のレガシーデバイスをサポートする (継続動作のための保守と供給) 必要があることです。この問題は、軍事作戦において特に重大です。
- 製品セキュリティ分析。製品のコンポーネントの仕様を決定してコストを見積もり、潜在的な特許侵害を特定することで、製品がどのように機能するかを調べます。また、製品セキュリティ分析の一部には、システムコンポーネントの設計を分解して分析することにより、機密データを取得することも含まれます。[12]別の目的は、コピー保護を削除したり、アクセス制限を回避したりすることです。
- 競争技術的情報。つまり、競争相手が何をしているかではなく、実際に何をしているかを理解することです。
- お金の節約。電子機器の機能を知ることで、ユーザーは別の製品を購入せずに済むかもしれません。
- 再利用。古くなったオブジェクトは、別の有用な方法で再利用されます。
- デザイン。製造・デザイン企業は、リバースエンジニアリングを実際の工芸品製造プロセスに適用しました。企業は、3Dスキャン、3Dリモデリング、再設計を通じて「歴史的な」製造コレクションに取り組むことができます。2013年、イタリアの製造業者BaldiとSavio Firminoはフィレンツェ大学と協力して、イノベーション、デザイン、製造プロセスを最適化しました。 [13]
一般的な用途
機械
コンピュータ支援設計(CAD)が普及するにつれて、リバースエンジニアリングは、3D CAD、CAM、CAE、またはその他のソフトウェアで使用するために、既存の物理部品の3D仮想モデルを作成する実行可能な方法になりました。[14]リバースエンジニアリングのプロセスでは、オブジェクトを測定し、それを3Dモデルとして再構築します。物理オブジェクトは、 CMM、レーザースキャナー、構造化光デジタイザー、産業用CTスキャン(コンピューター断層撮影)などの3Dスキャン技術を使用して測定できます。通常、ポイントクラウドとして表される測定データだけでは、位相情報と設計意図が欠けています。前者は、ポイントクラウドを三角形のメッシュに変換することで回復できます。リバースエンジニアリングは、そのようなメッシュの作成を超えて、適切な場合は単純な解析面(平面、円柱など)や、場合によってはNURBS面の観点から設計意図を回復し、境界表現のCADモデルを作成することを目指しています。このようなモデルを復元すると、新しい要件を満たすように設計を変更したり、製造計画を生成したりできるようになります。
ハイブリッドモデリングは、NURBSとパラメトリックモデリングが一緒に実装されるときによく使用される用語です。幾何学的表面と自由曲面の組み合わせを使用すると、3Dモデリングの強力な方法を提供できます。自由曲面データの領域を正確な幾何学的表面と組み合わせて、ハイブリッドモデルを作成できます。この典型的な例は、ウォータージャケットや高精度の機械加工領域などの自由曲面鋳造フィーチャを含むシリンダーヘッドのリバースエンジニアリングです。[15]
リバース エンジニアリングは、既存の物理ジオメトリをデジタル製品開発環境に取り込んだり、自社製品のデジタル 3D 記録を作成したり、競合他社の製品を評価したりするために企業でも使用されています。リバース エンジニアリングは、製品の仕組み、機能、コンポーネントを分析したり、コストを見積もったり、潜在的な特許侵害を特定したりするために使用されます。
バリューエンジニアリングは、企業でも使用される関連活動であり、製品の分解と分析を伴います。ただし、目的はコスト削減の機会を見つけることです。
プリント基板
プリント基板のリバース エンジニアリングには、特定の基板の製造データの再作成が含まれます。これは主に、設計を識別し、設計の機能的および構造的特性を把握するために行われます。また、この設計情報が簡単に入手できない場合は特に、製品の背後にある設計原理を発見することもできます。
時代遅れのPCBは、特に機械や他の電子部品に電力を供給するなど、非常に重要な機能を果たす場合には、リバースエンジニアリングの対象となることが多い。これらの古い部品をリバースエンジニアリングすることで、PCBが重要な役割を果たす場合にはPCBを再構築できるほか、同じ機能を提供する代替品を見つけたり、古いPCBをアップグレードしたりすることもできる。[16]
PCB のリバース エンジニアリングは、基本的に同じ一連の手順に従います。まず、PCB を描画、スキャン、または写真撮影して画像を作成します。次に、これらの画像を適切なリバース エンジニアリング ソフトウェアに移植して、新しい PCB の基本設計を作成します。適切なリバース エンジニアリングに必要なこれらの画像の品質は、PCB 自体の複雑さに比例します。より複雑な PCB には、暗い背景に明るい写真が必要ですが、かなり単純な PCB は、基本的な寸法を測るだけで簡単に再現できます。PCB の各層は、最終的な設計をできるだけ初期設計に近づけることを目的として、ソフトウェアで慎重に再現されます。次に、適切なツールを使用して回路の回路図が最終的に生成されます。[17]
ソフトウェア
1990 年、電気電子技術者協会(IEEE) は、(ソフトウェア) リバース エンジニアリング (SRE) を「対象システムを分析して、システムのコンポーネントとそれらの相互関係を特定し、別の形式またはより高い抽象レベルでシステムの表現を作成するプロセス」と定義しました。ここで「対象システム」はソフトウェア開発の最終製品です。リバース エンジニアリングは検査のみのプロセスであり、検討中のソフトウェア システムが変更されることはありません (変更されると、再エンジニアリングまたは再構築になります)。リバース エンジニアリングは、必ずしも機能的な最終製品からではなく、製品サイクルのどの段階でも実行できます。[10]
リバースエンジニアリングには、再文書化と設計回復という2つの要素があります。再文書化とは、コンピュータコードの新しい表現を作成して、理解しやすくすることです。一方、設計回復とは、製品の機能を完全に理解するために、製品に関する一般的な知識や個人的な経験から演繹または推論を使用することです。[10]これは、「開発サイクルを逆方向にたどる」とも見ることができます。[18]このモデルでは、実装フェーズの出力(ソースコード形式)は、従来のウォーターフォールモデルを逆転させて、分析フェーズにリバースエンジニアリングされます。この手法の別名は、プログラム理解です。[7]リバースエンジニアリングの手法を探求および拡張するために、リバースエンジニアリングに関するワーキングカンファレンス(WCRE)が毎年開催されています。[11] [19] コンピュータ支援ソフトウェアエンジニアリング(CASE)と自動コード生成は、リバースエンジニアリングの分野で大きく貢献しています。[11]
難読化などのソフトウェア改ざん防止技術は、プロプライエタリソフトウェアおよびソフトウェア駆動システムのリバースエンジニアリングとリエンジニアリングの両方を阻止するために使用されます。実際には、リバースエンジニアリングには主に 2 つの種類があります。最初のケースでは、ソフトウェアのソースコードはすでに入手可能ですが、プログラムの高レベルの側面 (おそらく文書化が不十分か、文書化されていても有効ではなくなったもの) が発見されます。2 番目のケースでは、ソフトウェアのソースコードが入手できず、ソフトウェアの可能性のあるソースコードを発見するためのあらゆる取り組みがリバースエンジニアリングと見なされます。この用語の 2 番目の用法は、ほとんどの人にとってより馴染みのあるものです。ソフトウェアのリバースエンジニアリングでは、クリーンルーム設計手法を利用して著作権侵害を回避 できます。
関連して、ソフトウェアエンジニアリングにおけるブラックボックステストはリバースエンジニアリングと多くの共通点があります。テスターは通常APIを持っていますが、外部から製品を叩くことでバグや文書化されていない機能を見つけることを目標としています。[20]
リバース エンジニアリングのその他の目的には、セキュリティ監査、コピー保護の解除 (「クラッキング」)、民生用電子機器によくあるアクセス制限の回避、組み込みシステムのカスタマイズ(エンジン管理システムなど)、社内修理または改造、低価格の「機能不全」ハードウェア (一部のグラフィックス カード チップセットなど) の追加機能の有効化、あるいは単なる好奇心の満足などがあります。
バイナリソフトウェア
バイナリのリバースエンジニアリングは、ソフトウェアのソースコードが入手できない場合に実行されます。[11]このプロセスは、リバースコードエンジニアリング、またはRCEと呼ばれることもあります。[21]たとえば、Javaプラットフォームのバイナリの逆コンパイルは、Jadを使用して実行できます。 リバースエンジニアリングの有名な例の1つは、 PC BIOSの最初の非IBM実装であり、長年にわたって圧倒的な優位性を持つコンピュータハードウェアプラットフォームである歴史的なIBM PC互換機産業を立ち上げました。ソフトウェアのリバースエンジニアリングは、米国では著作権法のフェアユース例外によって保護されています。[22] Microsoft Windowsシステムを実行していないシステムが、それを実行するシステムとファイルを共有できるようにするSambaソフトウェアは、ソフトウェアリバースエンジニアリングの典型的な例です。[23] Sambaプロジェクトは、Windowsファイル共有の仕組みに関する未公開情報をリバースエンジニアリングし、Windows以外のコンピューターでエミュレートできるようにしなければならなかったためです。 WineプロジェクトはWindows APIに対して同じことを行っており、OpenOffice.orgはMicrosoft Officeファイル形式でそれを行っている団体の1つです。 ReactOSプロジェクトは、NT ブランチの現在の Windows オペレーティング システムとのバイナリ (ABI および API) 互換性を提供することを目指しており、その目標はさらに野心的です。これにより、Windows 用に作成されたソフトウェアとドライバーを、クリーン ルームでリバース エンジニアリングされたフリー ソフトウェア (GPL) 対応のソフトウェアで実行できるようになります。WindowsSCOPEを使用すると、実行中のすべてのプロセスのバイナリ レベルのグラフィカル リバース エンジニアリングを含む、Windows システムのライブ メモリの完全な内容をリバース エンジニアリングできます。
もう一つの古典的な(あまり知られていないが)例は、1987年にベル研究所が、もともとApple Macintosh SE上で動作していたMac OS System 4.1をリバースエンジニアリングし、自社のRISCマシン上で動作できるようにしたことだ。 [24]
バイナリソフトウェア技術
ソフトウェアのリバースエンジニアリングはさまざまな方法で実行できます。ソフトウェアリバースエンジニアリングの主な3つのグループは次のとおりです。
- 情報交換の観察による分析。プロトコル リバース エンジニアリングで最も普及している手法で、バス アナライザーやパケット スニファーを使用して、コンピュータ バスやコンピュータ ネットワーク接続にアクセスし、そこにあるトラフィック データを明らかにするなどの処理を行います。その後、バスまたはネットワークの動作を分析して、その動作を模倣するスタンドアロン実装を作成できます。これは、デバイス ドライバーのリバース エンジニアリングに特に役立ちます。組み込みシステムのリバース エンジニアリングでは、 JTAGポートやその他のデバッグ手段など、メーカーが意図的に導入したツールが大いに役立つ場合があります。Microsoft Windowsでは、 SoftICEなどの低レベル デバッガーが人気です。
- 逆アセンブラを使用した逆アセンブル。これは、プログラムの生の機械語が、機械語ニーモニックの助けを借りて、その言葉通りに読み取られ、理解されることを意味します。これは、どのコンピュータ プログラムでも機能しますが、特に機械語に慣れていない人にとってはかなりの時間がかかります。対話型逆アセンブラは、特に人気のあるツールです。
- 逆コンパイラを使用した逆コンパイル。マシン コードまたはバイトコードでのみ使用可能なプログラムのソース コードを何らかの高水準言語で再作成しようとするプロセスで、結果はさまざまです。
ソフトウェア分類
ソフトウェア分類は、ソフトウェア サンプル間のコード関係を検出するために使用される、異なるソフトウェア バイナリ (同じバイナリの 2 つの異なるバージョンなど) 間の類似点を識別するプロセスです。このタスクは、従来、いくつかの理由 (脆弱性検出や著作権侵害のパッチ分析など) により手動で行われていましたが、現在では大量のサンプルに対してある程度自動的に実行できます。
この方法は、主に長時間にわたる徹底的なリバース エンジニアリング タスク (複雑なアルゴリズムや大規模なソフトウェアの完全な分析) に使用されています。一般に、統計分類は難しい問題であると考えられており、ソフトウェア分類についてもこれは当てはまり、このタスクを適切に処理できるソリューションやツールはほとんどありません。
ソースコード
多くのUMLツールでは、ソース コードをインポートして分析し、UML ダイアグラムを生成するプロセスを「リバース エンジニアリング」と呼んでいます。UMLツールの一覧を参照してください。
UML は「リバース エンジニアリング」を提供する 1 つのアプローチですが、国際標準化活動における最近の進歩により、知識発見メタモデル(KDM) が開発されました。この標準は、プログラミング言語構造とその相互関係の中間 (または抽象化) 表現のオントロジーを提供します。Object Management Group標準 (ISO 標準にもなりつつあります) [要出典]である KDM は、ソース、バイナリ、バイト コードの抽出と分析を実行できるツールと分析環境の開発により、業界で定着し始めています。ソース コード分析では、KDM の粒度の高い標準アーキテクチャにより、ソフトウェア システム フロー (データ、制御、および呼び出しマップ)、アーキテクチャ、およびビジネス レイヤー知識 (ルール、用語、およびプロセス) を抽出できます。この標準により、共通データ形式 (XMI) を使用できるため、詳細な分析 (根本原因、影響など) または派生分析 (ビジネス プロセスの抽出など) のいずれかで、さまざまなレイヤーのシステム知識を相関させることができます。言語構造を表現するための取り組みは、言語の数、ソフトウェア言語の継続的な進化、新しい言語の開発により、終わりのない作業になる可能性がありますが、標準では、幅広い言語セットと進化をサポートするために拡張機能の使用が許可されています。KDM は、UML、BPMN、RDF などの標準と互換性があり、他の環境への移行が可能で、ソフトウェア システムの変換やエンタープライズ ビジネス レイヤー分析などの取り組みにシステム知識を活用できます。
プロトコル
プロトコルは、メッセージ形式とメッセージの交換方法を記述する一連のルールです。つまり、プロトコルステート マシンです。したがって、プロトコル リバース エンジニアリングの問題は、メッセージ形式とステート マシン リバース エンジニアリングという 2 つのサブ問題に分割できます。
メッセージフォーマットは、従来、プロトコル実装がメッセージを処理する方法を分析する面倒な手作業によってリバースエンジニアリングされてきましたが、最近の研究ではいくつかの自動ソリューションが提案されています。[25] [26] [27]通常、自動アプローチでは、さまざまなクラスタリング分析を使用してメッセージをクラスターにグループ化するか、メッセージ処理をトレースするプロトコル実装をエミュレートします。
プロトコルのステートマシンのリバースエンジニアリングに関する研究は少ない。一般に、プロトコルのステートマシンは、通信を受動的に観察し、観察されたすべてのメッセージシーケンスを受け入れる最も一般的なステートマシンを構築しようとするオフライン学習プロセスと、メッセージのプローブシーケンスを対話的に生成し、それらのプローブシーケンスに対する応答を聞くことができるオンライン学習プロセスのいずれかを通じて学習できる。一般に、小さなステートマシンのオフライン学習はNP完全であることが知られているが[28]、オンライン学習は多項式時間で実行できる。[29]自動オフラインアプローチはComparettiらによって実証されている。[27]オンラインアプローチはChoらによって実証されている。[30]
暗号化やハッシュ関数などの典型的なプロトコルの他のコンポーネントも、自動的にリバースエンジニアリングすることができます。通常、自動アプローチでは、プロトコル実装の実行をトレースし、暗号化されていないパケットを保持するメモリ内のバッファを検出しようとします。[31]
集積回路/スマートカード
リバースエンジニアリングは、スマートカードを分析する侵襲的で破壊的な方法です。攻撃者は化学薬品を使用してスマートカードを層ごとにエッチングし、走査型電子顕微鏡(SEM) で写真を撮ります。この技術により、スマートカードのハードウェアとソフトウェア部分を完全に明らかにすることができます。攻撃者にとっての主な問題は、すべての仕組みを調べるためにすべてを正しい順序に並べることです。カードのメーカーは、バススクランブルなど、メモリの位置を混ぜてキーと操作を隠そうとします。[32] [33]
場合によっては、スマートカードがまだ動作している間にプローブを接続して電圧を測定することも可能である。カードのメーカーは、その攻撃を検出して防止するためにセンサーを採用している。[34]この攻撃は、大規模な労力と、通常は大手チップメーカーのみが利用できる特別な機器の両方を必要とするため、あまり一般的ではない。さらに、シャドーアカウントなどの他のセキュリティ技術が使用されることが多いため、この攻撃による利益は低い。暗号化データを複製してPINを解読するためのチップアンドPINカードへの攻撃が、多要素認証に対する費用対効果の高い攻撃になるかどうかはまだ不明である。
完全なリバース エンジニアリングは、いくつかの主要なステップで進行します。
SEM で画像を撮影した後の最初のステップは、画像をつなぎ合わせることです。これは、各層を 1 回の撮影でキャプチャできないために必要です。SEM は回路の領域をスキャンし、層全体をカバーするために数百枚の画像を撮影する必要があります。画像つなぎ合わせでは、数百枚の画像を入力として受け取り、層全体の適切に重ね合わせた 1 枚の画像を出力します。
次に、ステッチされたレイヤーを位置合わせする必要があります。これは、エッチング後のサンプルを SEM に対して毎回正確に同じ位置に置くことができないためです。したがって、ステッチされたバージョンは、実際の回路のように正しい方法で重なり合うことはありません。通常は、対応する 3 つのポイントが選択され、それに基づいて変換が適用されます。
回路構造を抽出するには、位置合わせされたつなぎ合わせた画像をセグメント化して、重要な回路を強調し、興味のない背景や絶縁材料から分離する必要があります。
最後に、配線をある層から次の層まで追跡し、回路のすべての情報を含む回路のネットリストを再構築できます。
軍事用途
リバースエンジニアリングは、戦場での正規軍や諜報活動によって入手された他国の技術、デバイス、または情報をコピーするためによく使用されます。第二次世界大戦と冷戦中によく使用されました。以下は、第二次世界大戦以降のよく知られた例です。
- ジェリカン:第二次世界大戦中のイギリス軍とアメリカ軍は、ドイツ軍が優れたデザインのガソリン缶を持っていることに気付きました。彼らはその缶のリバースエンジニアリングによるコピーを作成しました。その缶は一般に「ジェリカン」として知られていました。
- 中島 G5N : 1939年、米国のダグラス航空機会社はDC-4E旅客機の試作機を大日本帝国航空に売却した。大日本帝国航空は秘密裏に大日本帝国海軍のフロント企業として活動していた。大日本帝国海軍は長距離戦略爆撃機を必要としていたが、日本の航空機産業は長距離大型航空機の経験不足のため実現できなかった。DC-4Eは中島飛行機に移管され、研究のため解体されたが、日本のマスコミはカバーストーリーとして、同機が東京湾に墜落したと報じた。[35] [36] G5Nの主翼、エンジン、着陸装置はDC-4Eから直接コピーされた。[37]
- パンツァーシュレック: ドイツ軍は第二次世界大戦中にアメリカのバズーカ砲を捕獲し、それをリバースエンジニアリングして、より大型のパンツァーシュレックを製造した。
- ツポレフTu-4 : 1944年、日本上空を飛行中のアメリカのB-29爆撃機3機がソ連に不時着した。同様の戦略爆撃機を持っていなかったソ連は、B-29をコピーすることにした。3年以内に、ほぼ完璧なコピーであるTu-4を開発した。[38]
- SCR-584 レーダー: 第二次世界大戦後にソ連によってコピーされ、いくつかの改良版 (СЦР-584、Бинокль-Д) が知られています。
- V-2ロケット:V-2の技術文書と関連技術は戦争末期に西側連合国によって押収された。アメリカはペーパークリップ作戦を通じてリバースエンジニアリングに注力し、 PGM-11レッドストーンロケットの開発につながった。[39]ソ連は捕獲したドイツの技術者を使って技術文書と設計図を再現し、押収したハードウェアからロケットのクローンであるR-1を作った。こうして戦後のソ連のロケット計画が始まり、R-7と宇宙開発競争の始まりにつながった。
- K-13/R-3Sミサイル(NATOの報告名AA-2アトール)は、ソ連がリバースエンジニアリングで作成したAIM-9サイドワインダーのコピーであり、1958年9月に台湾(ROCAF)のAIM-9Bが中国人民解放軍のMiG-17に命中したが不発だったことから実現した。 [40]ミサイルは機体内に留まり、パイロットはソ連の科学者がミサイル開発の大学課程と表現する講義を受けて基地に戻った。
- トゥーファンミサイル: 1975 年 5 月、イランとヒューズ ミサイル システムズの間で行われたBGM-71 TOWおよびマーベリック ミサイルの共同生産に関する交渉は、価格構造に関する意見の相違により行き詰まり、その後の1979 年の革命により、このような共同生産の計画はすべて終了しました。イランはその後、このミサイルのリバース エンジニアリングに成功し、現在は独自のコピーであるトゥーファンを生産しています。
- 中国は、戦闘機からミサイル、重戦車まで、西側諸国とロシアのハードウェアの多くの例をリバースエンジニアリングしており、MiG-15、17、19、21(後にJ-2、5、6、7となる)やSu-33(後にJ-15となる)などがある。[41]
- 第二次世界大戦中、ポーランドとイギリスの暗号学者は、捕獲したドイツの「エニグマ」暗号機の弱点を研究しました。その後、その動作は電気機械装置「ボンベ」でシミュレートされ、「エニグマ」暗号機のあらゆるスクランブラー設定が試され、ドイツ軍が送信した暗号化メッセージの解読に役立ちました。
- また、第二次世界大戦中、イギリスの科学者たちは、夜間に誘導爆撃任務を遂行するためにドイツ空軍が使用していた、ますます高度化する一連の無線航法システムを分析し、これを破りました。このシステムに対するイギリスの対抗手段は非常に効果的で、ドイツ軍の航空機がドイツ領に戻ったと思い込み、信号によってイギリス空軍基地に着陸させられるケースもありました。
遺伝子ネットワーク
リバースエンジニアリングの概念は生物学にも応用されており、特に遺伝子制御ネットワークの構造と機能の理解に役立っています。遺伝子制御ネットワークは生物学的行動のほぼすべての側面を制御し、細胞が生理学的プロセスや摂動への反応を実行できるようにします。したがって、遺伝子ネットワークの構造と動的動作を理解することは、システム生物学の最も重要な課題の1つであり、基礎研究を超えたいくつかのアプリケーションで直接的な実用的な影響を及ぼします。[42] 分子生物学とデータサイエンスの手法を使用して遺伝子制御ネットワークをリバースエンジニアリングする方法はいくつかあります。それらは一般的に6つのクラスに分類されます。[43]

- 共発現法は、2 つの遺伝子が類似した発現プロファイルを示す場合、共発現から因果関係を単純に推測することはできないが、それらの遺伝子は関連している可能性があるという考えに基づいています。
- シーケンスモチーフ法は、遺伝子プロモーターを分析して、特定の転写因子 結合ドメインを見つけます。転写因子が特定の遺伝子のプロモーターに結合すると予測される場合、制御接続が仮定できます。
- クロマチン免疫沈降(ChIP) 法は、選択された転写因子のDNA 結合のゲノム全体のプロファイルを調査して、下流の遺伝子ネットワークを推測します。
- オーソロジー法は、遺伝子ネットワークの知識をある種から別の種に転送します。
- 文献法では、テキスト マイニングと手動調査を実施して、推定または実験的に証明された遺伝子ネットワーク接続を特定します。
- 転写複合体法は、転写因子間のタンパク質間相互作用に関する情報を活用し、遺伝子ネットワークの概念を転写制御複合体にまで拡張します。
遺伝子ネットワークの信頼性は、多くの場合、遺伝子摂動実験とそれに続く動的モデリングによってテストされます。これは、ネットワークノードの1つを削除すると、ネットワークの残りのノードの機能に予測可能な影響があるという原理に基づいています。[44] 遺伝子ネットワークのリバースエンジニアリングの応用は、植物生理学のメカニズムの理解から[45]抗癌治療の新しいターゲットの強調まで多岐にわたります。[46]
特許法との重複
リバース エンジニアリングは、主に、作成者によって構築、使用、または内部プロセスの方法が明らかにされていないプロセスまたは成果物を理解することに適用されます。
特許取得済みの品目は、それ自体を研究するためにリバースエンジニアリングする必要はありません。特許の本質は、発明者が自ら詳細な公開情報を提供し、その代わりに、関連する発明の法的保護を受けることです。ただし、1 つ以上の特許に基づいて製造された品目には、特許取得も公開もされていない他の技術も含まれる可能性があります。実際、リバースエンジニアリングの一般的な動機の 1 つは、競合他社の製品に特許侵害または著作権侵害が含まれているかどうかを判断することです。
合法性
アメリカ合衆国
米国では、たとえ成果物やプロセスが企業秘密で保護されていたとしても、それが合法的に取得された場合、その成果物やプロセスをリバースエンジニアリングすることは合法であることが多い。[47]
コンピュータ ソフトウェアのリバース エンジニアリングは、契約違反として契約法に違反するだけでなく、その他の関連法にも違反することが多い。これは、エンド ユーザー ライセンス契約のほとんどが明確に禁止しているためであり、米国の裁判所は、そのような条項が存在する場合、明示的に許可している著作権法よりも優先すると判決を下している ( Bowers v. Baystate Technologies [48] [49]を参照)。デジタル ミレニアム著作権法(17 USC § 1201 (f))のセクション 103 (f) によれば、プログラムを合法的に所有する人は、それが「相互運用性」を達成するために必要な場合、リバース エンジニアリングを行い、その保護を回避することができる。「相互運用性」とは、プログラムと対話し、それを利用し、有用な方法でデータを使用したり、データを転送したりできる他のデバイスやプログラムを広くカバーする用語である。このようにして得られた知識を共有し、相互運用性の目的で使用できる限定的な例外が存在する。[a]
欧州連合
コンピュータプログラムの法的保護に関するEU指令2009/24は、以前の指令(1991年)に取って代わり、欧州連合におけるリバースエンジニアリングを規制している。[50] [51] [b ]
参照
- アンティキティラ島の機械
- 後方誘導
- ベンチマーク
- バスアナライザー
- チョンダ
- クローン(コンピューティング)
- クリーンルーム設計
- CMMM
- コードモーフィング
- Connectix バーチャル ゲーム ステーション
- 偽造
- 暗号解読
- 逆コンパイル
- 変形
- デジタルミレニアム著作権法(DMCA)
- 逆アセンブラ
- ドングル
- 法医学工学
- 産業用CTスキャン
- インタラクティブ逆アセンブラ
- 知識発見メタモデル
- レーザースキャナー
- 制作トピックス一覧
- リステロイドエンジン
- ロジックアナライザ
- 給料
- 再利用
- リバースアーキテクチャ
- ラウンドトリップエンジニアリング
- レトロディクション
- セガ対アコレード
- ソフトウェア考古学
- ソフトウェアクラッキング
- 構造化光デジタイザー
- バリューエンジニアリング
注記
- ^ この条項は次のように規定している:
(f) リバースエンジニアリング.—
(1) サブセクション (a)(1)(A) の規定にかかわらず、コンピュータプログラムのコピーを使用する権利を合法的に取得した者は、独立して作成されたコンピュータプログラムと他のプログラムとの相互運用性を実現するために必要であり、かつ回避行為を行う者がこれまで容易に入手できなかったプログラムの要素を識別および分析する目的のみで、そのプログラムの特定部分へのアクセスを効果的に制御する技術的手段を回避することができる。ただし、そのような識別および分析行為が本章の下では侵害を構成しない範囲とする。
(2) 項 (a)(2) および (b) の規定にかかわらず、(1) 項の識別および分析を可能にするため、または独自に作成されたコンピュータ プログラムと他のプログラムとの相互運用性を可能にする目的で、そのような手段が相互運用性を達成するために必要な場合、人は、技術的手段を回避するため、または技術的手段によって提供される保護を回避するための技術的手段を開発および使用することができるが、その行為が本章の下での侵害を構成しない範囲においてである。
(3) 項 (1) の下で許可された行為によって取得された情報、および項 (2) の下で許可された手段は、項 (1) または (2) で言及された人が、独自に作成されたコンピュータ プログラムと他のプログラムとの相互運用性を可能にすることのみを目的として、そのような情報または手段を提供する場合、およびそうすることが本章の下での侵害を構成しないか、またはこのセクション以外の適用法に違反しない限りにおいて、他者に提供することができる。
(4)この項において、「相互運用性」とは、コンピュータプログラムが情報を交換する能力、およびそのようなプログラムが交換された情報を相互に利用する能力を意味する。 - ^ 指令では次のように述べられています:
コンピュータ プログラムのコピーが提供されるコードの形式を許可なく複製、翻訳、翻案または変換することは、著作者の独占的権利の侵害に当たる。しかし、コードの複製およびその形式の翻訳が、独立して作成されたプログラムと他のプログラムとの相互運用性を達成するために必要な情報を取得するために不可欠な状況が存在する可能性がある。したがって、これらの限定された状況においてのみ、プログラムのコピーを使用する権利を有する者またはその代理人による複製および翻訳行為の実行は、正当であり、公正な慣行に適合しており、したがって権利者の許可を必要としないとみなされなければならない。この例外の目的は、異なるメーカーのものも含め、コンピュータ システムのすべてのコンポーネントを接続して連携できるようにすることである。著作者の独占的権利に対するこのような例外は、権利者の正当な利益を害する方法、またはプログラムの通常の利用と矛盾する方法で使用してはならない。
参考文献
- ^ ab 「リバースエンジニアリングとは何か?どのように機能するのか」。SearchSoftwareQuality 。 2022年7月27日閲覧。
- ^ 「リバースエンジニアリング」. ethics.csc.ncsu.edu . 2022年7月27日閲覧。
- ^ Garcia, Jorge (2015年12月). 「Un-building blocks: a model of river engineering and applied heuristics」(PDF) . Core.ac.uk . 2023年6月4日閲覧。
- ^ Thayer, Ken. 「リバースエンジニアリングはどのように機能するのか?」globalspec . IEEE Global Spec . 2018 年2 月 26 日閲覧。
- ^ Villaverde, Alejandro F.; Banga, Julio R. (2014 年 2 月 6 日). 「システム生物学におけるリバースエンジニアリングと識別: 戦略、展望、課題」. Journal of the Royal Society Interface . 11 (91): 20130505. doi :10.1098/rsif.2013.0505. PMC 3869153. PMID 24307566.
- ^ abc Chikofsky, EJ & Cross, JH II (1990). 「リバースエンジニアリングと設計リカバリ: 分類法」. IEEE ソフトウェア. 7 (1): 13–17. doi :10.1109/52.43044. S2CID 16266661.
- ^ ab リバースエンジニアリングとプログラム理解の調査。Michael L. Nelson、1996 年 4 月 19 日、ODU CS 551 – ソフトウェアエンジニアリング調査。arXiv : cs /0503068v1
- ^ Vinesh Raja、Kiran J. Fernandes (2007)。リバースエンジニアリング:産業的視点。Springer Science & Business Media。p. 3。ISBN 978-1-84628-856-2。
- ^ ジョナサン・バンド、加藤正信 (2011)。『Interfaces on Trial 2.0』MIT Press、p. 136。ISBN 978-0-262-29446-1。
- ^ abc Chikofsky, EJ; Cross, JH (1990年1月). 「リバースエンジニアリングと設計リカバリ:分類法」(PDF) . IEEE Software . 7 : 13–17. doi :10.1109/52.43044. S2CID 16266661. 2018年4月17日時点の オリジナル(PDF)よりアーカイブ。2012年7月2日閲覧。
- ^ abcdefgh Eilam, Eldad (2005). Reversing: リバースエンジニアリングの秘密. John Wiley & Sons. ISBN 978-0-7645-7481-8。
- ^ インターネット技術タスクフォース RFC 2828 インターネットセキュリティ用語集
- ^ Karwowski, Waldemar; Trzcielinski, Stefan; Mrugalsk, Beata; DiNicolantonio, Massimo; Rossi, Emilio (2018).製造、生産管理、プロセス制御の進歩。pp. 287–288。
- ^ Varady, T; Martin, R; Cox, J (1997). 「幾何学的モデルのリバースエンジニアリング - 入門」. Computer-Aided Design . 29 (4): 255–268. doi :10.1016/S0010-4485(96)00054-1.
- ^ 「リバースエンジニアリング」。
- ^ Patel, Suresh (2022年8月25日). 「プリント回路基板のリバースエンジニアリング」.電子設計. 2024年2月1日閲覧。
- ^ Patel, Suresh (2022年8月25日). 「プリント回路基板のリバースエンジニアリング」.電子設計. 2024年2月1日閲覧。
- ^ Warden, R. (1992).ソフトウェアの再利用とリバースエンジニアリングの実践ロンドン、イギリス: Chapman & Hall. pp. 283–305.
- ^ 「リバースエンジニアリングに関するワーキングカンファレンス(WCRE)」。uni-trier.de。コンピュータサイエンスの書誌。2017年3月14日時点のオリジナルよりアーカイブ。 2018年2月22日閲覧。
- ^ Shahbaz, Muzammil (2012).ブラックボックスソフトウェアコンポーネントのリバースエンジニアリングとテスト: 文法推論技術による。LAP LAMBERT Academic Publishing。ISBN 978-3-659-14073-0。
- ^ Chuvakin, Anton; Cyrus Peikari (2004年1月). Security Warrior (第1版). O'Reilly. 2006年5月22日時点のオリジナルよりアーカイブ。2006年5月25日閲覧。
- ^ Samuelson, Pamela & Scotchmer, Suzanne (2002). 「リバースエンジニアリングの法と経済学」Yale Law Journal . 111 (7): 1575–1663. doi :10.2307/797533. JSTOR 797533. 2010年7月15日時点のオリジナルよりアーカイブ。 2011年10月31日閲覧。
- ^ 「Samba: 入門」 2001年11月27日. 2009年5月7日閲覧。
- ^ Lee, Newton (2013).テロ対策とサイバーセキュリティ: 総合的な情報認識(第2版). Springer Science+Business Media. p. 110. ISBN 978-1-4614-7204-9。
- ^ W. Cui、J. Kannan、HJ Wang。Discoverer: ネットワーク トレースからの自動プロトコル リバース エンジニアリング。USENIX セキュリティ シンポジウムの議事録、1 ~ 14 ページ。
- ^ W. Cui、M. Peinado、K. Chen、HJ Wang、および L. Irún-Briz。Tupni: 入力形式の自動リバースエンジニアリング。第 15 回 ACM コンピューターおよび通信セキュリティ会議の議事録、pp. 391–402。ACM、2008 年 10 月。
- ^ ab PM Comparetti、G. Wondracek、C. Kruegel、および E. Kirda。Prospex: プロトコル仕様の抽出。2009 年 30 回目の IEEE セキュリティおよびプライバシーシンポジウムの議事録、pp. 110~125、ワシントン、2009 年。IEEE コンピュータ協会。
- ^ Gold, E (1978). 「与えられたデータからのオートマトン識別の複雑性」.情報と制御. 37 (3): 302–320. doi : 10.1016/S0019-9958(78)90562-4 .
- ^ D. Angluin (1987). 「クエリと反例からの正規集合の学習」.情報と計算. 75 (2): 87–106. doi : 10.1016/0890-5401(87)90052-6 .
- ^ CY Cho、D. Babic、R. Shin、および D. Song。ボットネットコマンドおよび制御プロトコルの形式モデルの推論と分析、2010 ACM コンピューターおよび通信セキュリティ会議。
- ^ ポリグロット: 動的バイナリ解析を使用したプロトコル メッセージ形式の自動抽出。J. Caballero、H. Yin、Z. Liang、および D. Song。第 14 回 ACM コンピューターおよび通信セキュリティ会議の議事録、pp. 317–329。
- ^ Wolfgang Rankl、Wolfgang Effing、スマートカードハンドブック (2004)
- ^ T. Welz: 支払い方法としてのスマートカード[リンク切れ ] (2008)、ルール大学ボーフム校 ITS セキュリティセミナー
- ^ David C. Musker: エレクトロニクスにおける知的財産の保護と活用、 Wayback Machineに 2011-07-09 にアーカイブ、IBC カンファレンス、1998 年 6 月 10 日
- ^ フランシロン、ルネ・J. (1988) [1979]。マクドネル・ダグラス航空機 1920年以降。第1巻(第2版)。メリーランド州アナポリス:海軍研究所出版。pp. 265–268。ISBN 0-87021-428-4。
- ^ Westell, Freeman (1999年11月). 「大型の鉄、大型のエンジン、そしてさらに大きな頭痛の種: 最初の実験的戦略爆撃機の建造」. Airpower . 29 (6): 18, 49–50.
- ^ アンジェルッチ、エンツォ、マトリカルディ、パオロ (1978)。-第二次世界大戦の飛行機:第2巻。シカゴ:ランドマクナリーアンドカンパニー。p. 127。ISBN 0-528-88171-X。
- ^ Yeam Gordon と Vladimir Rigmant、ツポレフ Tu-4: ソビエト超要塞 (ヒンクレー、英国: ミッドランド、2002)。
- ^ 「レッドストーンロケット」 centennialofflight.net . 2010年4月27日閲覧。
- ^ 「中国空軍:進化する概念、役割、能力」、中国軍事研究センター(米国)、国防大学出版局、277ページ
- ^ Chandrashekar, S., R. Nagappa, L. Sundaresan、N. Ramani。2011 年「中国における技術とイノベーション: 航空機タービンブレード向け単結晶超合金開発のケーススタディ」、R4~11。ISSSP 国立高等研究所、バンガロール。http://isssp.in/wp-content/uploads/2013/01/Technology-and-Innovation-in-China-A-case-Study-of-Single-Crystal4.pdf;ディロン・チョウ、「中国の J-15 戦闘機: 中国当局は新型戦闘機は中国製だと擁護するが、疑問は残る」Mic、2012 年 12 月 16 日、https://mic.com/articles/20270/china-j-15-fighter-jet-chinese-officials-defend-new-fighter- [ permanent dead link ] as-chinese-original-but-questions-remain
- ^ Giorgi , Federico M. (2020). 「遺伝子ネットワークリバースエンジニアリング:次世代」。Biochimica et Biophysica Acta (BBA) - 遺伝子調節メカニズム。1863 (6): 194523. doi :10.1016/j.bbagrm.2020.194523. hdl :11585/753853. ISSN 1874-9399. PMID 32145356. S2CID 212629142.
- ^ ab Mercatelli, Daniele; Scalambra, Laura; Triboli, Luca; Ray, Forest; Giorgi, Federico M. (2020). 「遺伝子調節ネットワーク推論リソース:実用的な概要」。Biochimica et Biophysica Acta ( BBA ) - 遺伝子調節メカニズム。1863 (6): 194430。doi : 10.1016 /j.bbagrm.2019.194430。ISSN 1874-9399。PMID 31678629。S2CID 207895066。
- ^ Tegner, J.; Yeung, MKS; Hasty, J.; Collins, JJ (2003). 「遺伝子ネットワークのリバースエンジニアリング: 遺伝子変動と動的モデリングの統合」Proceedings of the National Academy of Sciences . 100 (10): 5944–5949. Bibcode :2003PNAS..100.5944T. doi : 10.1073/pnas.0933416100 . ISSN 0027-8424. PMC 156306 . PMID 12730377.
- ^ Friedel, Swetlana; Usadel, Björn; von Wirén, Nicolaus; Sreenivasulu, Nese (2012). 「リバースエンジニアリング: 地球規模の非生物的ストレスのクロストークを解明するシステム生物学の主要構成要素」. Frontiers in Plant Science . 3 : 294. doi : 10.3389/fpls.2012.00294 . ISSN 1664-462X. PMC 3533172. PMID 23293646 .
- ^ Lefebvre, Celine; Rieckhof, Gabrielle; Califano, Andrea (2012). 「ヒト調節ネットワークのリバースエンジニアリング」Wiley Interdisciplinary Reviews: Systems Biology and Medicine . 4 (4): 311–325. doi :10.1002/wsbm.1159. ISSN 1939-5094. PMC 4128340 . PMID 22246697.
- ^ 「Trade Secrets 101」、特集記事、2011 年 3 月。ASME。2013 年 10 月 31 日に閲覧。
- ^ Baystate v. Bowers Discussion. Utsystem.edu. 2011年5月29日閲覧。
- ^ Gross, Grant. (2003-06-26) 契約訴訟がリバースエンジニアリングに悪影響を及ぼす可能性 | Developer World. InfoWorld. 2011-05-29 に取得。
- ^ 1991年5月14日のコンピュータプログラムの法的保護に関する理事会指令91/250/EEC
- ^ 2009年4月23日の欧州議会および理事会のコンピュータプログラムの法的保護に関する指令2009/24/EC(成文化版)
出典
- Eilam, Eldad (2005)。Reversing : リバースエンジニアリングの秘密。Wiley Publishing。p . 595。ISBN 978-0-7645-7481-8。
- Elvidge, Julia、「リバース エンジニアリングを使用して特許侵害を発見する」、Chipworks、2010 年 9 月。オンライン: http://www.photonics.com/Article.aspx?AID=44063
- Cipresso, Teodoro (2009)。「ソフトウェア リバース エンジニアリング教育」。SJSU修士論文。2009年8 月 22 日閲覧。
- Hausi A. Müllerおよび Holger M. Kienle、「ソフトウェア リバース エンジニアリングの小入門」、技術レポート、ビクトリア大学、17 ページ、2009 年 3 月。オンライン: http://holgerkienle.wikispaces.com/file/view/MK-UVic-09.pdf
- Heines, Henry、「X 線回折による侵害の判定」、Chemical Engineering Process、1999 年 1 月 (IP 侵害の検出に使用されるリバース エンジニアリングの例)
- Huang, Andrew (2003)。『 Xbox のハッキング: リバース エンジニアリング入門』No Starch Press。ISBN 978-1-59327-029-2。
- James, Dick (2006 年 1 月 19 日)。「リバース エンジニアリングによる製品知識の提供、技術の普及の促進」。電子設計。Penton Media, Inc. 2009 年2 月 3 日閲覧。
- メスラー、ロバート (2013)。リバースエンジニアリング: メカニズム、構造、システム、材料。マグロウヒル。ISBN 978-0-07-182516-0。(ハードウェア分解の概要、方法論、目標を含む)
- Raja, Vinesh; Fernandes, Kiran J. (2008).リバースエンジニアリング – 産業的視点. Springer . p. 242. ISBN 978-1-84628-855-5。
- Samuelson, Pamelaおよび Scotchmer, Suzanne、「リバース エンジニアリングの法と経済学」、111 Yale LJ 1575 (2002)。オンライン: http://people.ischool.berkeley.edu/~pam/papers/l&e%20reveng3.pdf
- シュルマン、アンドリュー;ブラウン、ラルフ D .; マクシー、デイビッド; ミシェルズ、レイモンド J.; カイル、ジム (1994) [1993 年 11 月]。『Undocumented DOS: 予約済みの MS-DOS 関数とデータ構造のプログラマ ガイド - MS-DOS 6、Novell DOS、Windows 3.1 まで拡張(第 2 版)』。マサチューセッツ州レディング: Addison Wesley。229~ 241 ページ。ISBN 0-201-63287-X。(xviii+856+vi ページ、3.5 インチフロッピー) 正誤表: [1][2] (注: 量産ソフトウェアに適用されるリバース エンジニアリングの一般的な方法論について: DOS を探索し、DOS を逆アセンブルするプログラム)
- シュルマン、アンドリュー他 (1992)。『 Undocumented Windows: A Programmer's Guide to Reserved Microsoft Windows API Functions』。Addison Wesley。ISBN 978-0-201-60834-2。(pp. 59–188 リバースエンジニアリングの一般的な方法論、大衆市場向けソフトウェアへの適用: Windows 実行ファイルの調査、Windows の逆アセンブル、Windows を調査するためのツール)
- Schulman, Andrew、「明白な視界に隠れている: リバース エンジニアリングを使用してソフトウェア特許侵害を発見する」、Intellectual Property Today、2010 年 11 月。オンライン: http://www.iptoday.com/issues/2010/11/hiding-in-plain-sight-using-reverse-engineering-to-uncover-software-patent-infringement.asp
- Schulman, Andrew、「Open to Inspection: リバース エンジニアリングを使用してソフトウェアの先行技術を発見」、New Matter (カリフォルニア州弁護士会 IP セクション)、2011 年夏 (パート 1)、2011 年秋 (パート 2)。オンライン: http://www.SoftwareLitigationConsulting.com
- Thumm, Mike (2007). 「Talking Tactics」(PDF) . IEEE 2007 Custom Integrated Circuits Conference (CICC) . IEEE, Inc . 2009 年2 月 3 日閲覧。
