かならずよんで ね!

民族誌のリヴァース・エンジニアリング

Engineering Reading of Ethnography


池田光穂

「リバースエンジニアリング(Reverse engineeringから。直訳すれば逆行工学という意味)とは、機械を 分解したり、製品の動作を観察したり、ソフトウェアの動作を解析するな どして、製品の構造を分析し、そこから製造方法や動作原理、設計図などの仕様やソースコードなどを調査することを指す」(→ウィキ日本語「リバースエンジニアリング」垂水源之介「逆行的工学=リヴァース・エンジニアリング」)

古典的な民族誌(エスノグラ フィー)の冒頭や脚注、あるいは著作の末尾には「方法論的覚え書き (Notes on methodology)」等の記述に、その民族誌の作者の調査の方法などが書かれている。しかし、それは著者によるアリバイ証明のように、読者がその方 法 論を鵜呑みにして、同じことを別のフィールドにおいて実践すれば、同じタイプの民族誌ができあがるわけではない。

一般的に、民族誌(エ スノグラフィー)には、作者性が強く(strong authorship)、そのフィールドワークのやり方には不詳な点が多く、とくわけ秘 義化しているわけではないが、民族誌には著者の個性や彼/彼女らが実証したいテーマ性が強く投影されていることが多い。

そのため、偉大な民族誌家(エスノグラファー)が、フィールドでどのよう にフィールドワークを行ったのか?なぜそのような著名な民族誌のように、当該民族の「文化表象」が彫琢(ちょうたく)されたのか?などを明らかにするため には、彼/彼女らがいう方法論以外の部分をも含めて、読書しなければならない。

その方法を、結果(=民族誌)を分解したり、民族誌 が もつ修辞の効果を観察したり、他の研究者による解析などを参照して、民族誌の構造を分析し、そこから民族誌の制作方法やその「社会的機能」や「社会効果」 の動作原理、民族誌の設計概念の「仕様」や「ソースコード」などを調査するように、民族誌を立体的に読むことが重要になる。

Reverse engineering (also known as backwards engineering or back engineering) is a process or method through which one attempts to understand through deductive reasoning how a previously made device, process, system, or piece of software accomplishes a task with very little (if any) insight into exactly how it does so. Depending on the system under consideration and the technologies employed, the knowledge gained during reverse engineering can help with repurposing obsolete objects, doing security analysis, or learning how something works.[1][2][3]

Although the process is specific to the object on which it is being performed, all reverse engineering processes consist of three basic steps: information extraction, modeling, and review. Information extraction is the practice of gathering all relevant information for performing the operation. Modeling is the practice of combining the gathered information into an abstract model, which can be used as a guide for designing the new object or system. Review is the testing of the model to ensure the validity of the chosen abstract.[1] Reverse engineering is applicable in the fields of computer engineering, mechanical engineering, design, electronic engineering, software engineering, chemical engineering,[4] and systems biology.[5]
リバースエンジニアリング(リバースエンジニアリングまたはバックエン ジニアリングとも呼ばれる)とは、以前に作られたデバイス、プロセス、システム、ソフトウェアの一部が、どのようにタスクを達成するのかを演繹的推論に よって理解しようとするプロセスまたは手法である。対象とするシステムや採用する技術にもよるが、リバースエンジニアリングで得られる知識は、古くなった ものを再利用したり、セキュリティ分析を行ったり、何かの仕組みを学んだりするのに役立つことがある[1][2][3]。

リバースエンジニアリングのプロセスは、その対象物によって異なるが、すべてのリバースエンジニアリングプロセスは、情報抽出、モデリング、レビューとい う3つの基本ステップで構成されている。情報抽出とは、操作を実行するために関連するすべての情報を収集することである。モデリングとは、収集した情報を 組み合わせて抽象的なモデルを作成することであり、新しいオブジェクトやシステムを設計する際のガイドとして使用することができる。リバース・エンジニア リングは、コンピュータ工学、機械工学、設計、電子工学、ソフトウェア工学、化学工学、システム生物学などの分野で応用できる。
Overview

There are many reasons for performing reverse engineering in various fields. Reverse engineering has its origins in the analysis of hardware for commercial or military advantage.[6]: 13  However, the reverse engineering process may not always be concerned with creating a copy or changing the artifact in some way. It may be used as part of an analysis to deduce design features from products with little or no additional knowledge about the procedures involved in their original production.[6]: 15 

In some cases, the goal of the reverse engineering process can simply be a redocumentation of legacy systems.[6]: 15 [7] Even when the reverse-engineered product is that of a competitor, the goal may not be to copy it but to perform competitor analysis.[8] Reverse engineering may also be used to create interoperable products and despite some narrowly-tailored United States and European Union legislation, the legality of using specific reverse engineering techniques for that purpose has been hotly contested in courts worldwide for more than two decades.[9]

Software reverse engineering can help to improve the understanding of the underlying source code for the maintenance and improvement of the software, relevant information can be extracted to make a decision for software development and graphical representations of the code can provide alternate views regarding the source code, which can help to detect and fix a software bug or vulnerability. Frequently, as some software develops, its design information and improvements are often lost over time, but that lost information can usually be recovered with reverse engineering. The process can also help to cut down the time required to understand the source code, thus reducing the overall cost of the software development.[10] Reverse engineering can also help to detect and to eliminate a malicious code written to the software with better code detectors. Reversing a source code can be used to find alternate uses of the source code, such as detecting the unauthorized replication of the source code where it was not intended to be used, or revealing how a competitor's product was built.[11] That process is commonly used for "cracking" software and media to remove their copy protection,[11]: 7  or to create a possibly-improved copy or even a knockoff, which is usually the goal of a competitor or a hacker.[11]: 8 

Malware developers often use reverse engineering techniques to find vulnerabilities in an operating system to build a computer virus that can exploit the system vulnerabilities.[11]: 5  Reverse engineering is also being used in cryptanalysis to find vulnerabilities in substitution cipher, symmetric-key algorithm or public-key cryptography.[11]: 6 

There are other uses to reverse engineering:

Interfacing. Reverse engineering can be used when a system is required to interface to another system and how both systems would negotiate is to be established. Such requirements typically exist for interoperability.
Military or commercial espionage. Learning about an enemy's or competitor's latest research by stealing or capturing a prototype and dismantling it may result in the development of a similar product or a better countermeasure against it.
Obsolescence. Integrated circuits are often designed on proprietary systems and built on production lines, which become obsolete in only a few years. When systems using those parts can no longer be maintained since the parts are no longer made, the only way to incorporate the functionality into new technology is to reverse-engineer the existing chip and then to redesign it using newer tools by using the understanding gained as a guide. Another obsolescence originated problem that can be solved by reverse engineering is the need to support (maintenance and supply for continuous operation) existing legacy devices that are no longer supported by their original equipment manufacturer. The problem is particularly critical in military operations.
Product security analysis. That examines how a product works by determining the specifications of its components and estimate costs and identifies potential patent infringement. Also part of product security analysis is acquiring sensitive data by disassembling and analyzing the design of a system component.[12] Another intent may be to remove copy protection or to circumvent access restrictions.
Competitive technical intelligence. That is to understand what one's competitor is actually doing, rather than what it says that it is doing.
Saving money. Finding out what a piece of electronics can do may spare a user from purchasing a separate product.
Repurposing. Obsolete objects are then reused in a different-but-useful manner.
Design. Production and design companies applied Reverse Engineering to practical craft-based manufacturing process. The companies can work on "historical" manufacturing collections through 3D scanning, 3D re-modeling and re-design. In 2013 Italian manufactures Baldi and Savio Firmino together with University of Florence optimized their innovation, design, and production processes.[13]

概要

リバースエンジニアリングを行う理由は様々である。リバースエンジニアリングの起源は、商業的または軍事的な利点を得るためのハードウェアの解析にある [6]: 13 しかし、リバースエンジニアリングプロセスは、必ずしも成果物のコピーを作成したり、成果物を何らかの方法で変更したりすることに関係するとは限らない。 リバースエンジニアリングは、製品から設計上の特徴を推測するための分析の一環として使用されることもある: 15 

リバースエンジニアリングプロセスの目的が、単にレガシーシステムの再ドキュメント化である場合もある[6]: 8] リバースエンジニアリングは、相互運用可能な製品を作成するために使用されることもあり、米国や欧州連合(EU)の法律では、そのような目的のために特定 のリバースエンジニアリング技術を使用することの合法性は、20年以上にわたって世界中の裁判所で激しく争われてきた。

ソフトウェアのリバースエンジニアリングは、ソフトウェアの保守と改良のために基礎となるソースコードの理解を向上させるのに役立ち、ソフトウェア開発の 意思決定を行うために関連情報を抽出することができ、コードのグラフィカルな表現は、ソフトウェアのバグや脆弱性を検出して修正するのに役立つソースコー ドに関する代替見解を提供することができる。ソフトウェアが開発されるにつれ、その設計情報や改良点が時間の経過とともに失われていくことがよくあるが、 リバースエンジニアリングによって失われた情報を回復することができる。リバースエンジニアリングは、ソースコードを理解するのに必要な時間を短縮し、ソ フトウェア開発の全体的なコストを削減するのにも役立つ。ソースコードのリバースエンジニアリングは、ソースコードが意図されていない場所に無断で複製さ れたことを検出したり、競合他社の製品がどのように構築されたかを明らかにしたりするなど、ソースコードの別の用途を見つけるために使用することができる [11]。このプロセスは、コピープロテクトを解除するためにソフトウェアやメディアを「クラッキング」したり[11][11][7]、改良された可能性 のあるコピーやコピー商品を作成したりするために一般的に使用される。 

マルウェア開発者は、しばしばリバースエンジニアリングの技術を使用してオペレーティングシステムの脆弱性を見つけ、システムの脆弱性を悪用するコン ピュータウイルスを構築する[11]: 5 リバース・エンジニアリングは、置換暗号、共通鍵アルゴリズム、公開鍵暗号の脆弱性を見つけるために、暗号解読でも使用されている。 

リバースエンジニアリングには他にも用途がある:

1. インターフェイス。リバースエンジニアリングは、あるシステムが他のシステムとのインタフェースを必要とし、両システムがどのようにネゴシエーションを行うかを確立する必要がある場合に使用できる。このような要件は通常、相互運用性のために存在する。
軍事または商業スパイ。プロトタイプを盗んだり、捕獲したり、解体したりすることで、敵や競争相手の最新の研究を知ることができ、その結果、類似の製品や、それに対するより優れた対策が開発される可能性がある。

2. 陳腐化。集積回路は多くの場合、独自のシステムで設計され、生産ラインで製造されるため、わずか数年で陳腐化する。部品が製造されなくなったため、それら の部品を使用したシステムを維持できなくなった場合、新しい技術に機能を組み込む唯一の方法は、既存のチップをリバースエンジニアリングし、得られた理解 を指針として新しいツールを使用して再設計することである。リバースエンジニアリングによって解決できる、陳腐化に起因するもう一つの問題は、元の機器 メーカーがサポートしなくなった既存のレガシーデバイスをサポート(継続的な動作のための保守と供給)する必要性である。この問題は、軍事作戦において特 に重大である。

3. 製品のセキュリティ分析。これは、部品の仕様を決定し、コストを見積もることによって、製品がどのように機能するかを調査し、潜在的な特許侵害を特定する ものである。また、システム・コンポーネントの設計を分解・分析することによって、機密データを取得することも、製品セキュリティ分析の一部である [12]。また、コピープロテクトの解除やアクセス制限の回避を目的とすることもある。

4. 競合技術情報。つまり、競合他社がやっていると言っていることではなく、実際にやっていることを理解することである。

5. お金を節約する。電子機器の一部で何ができるかを知ることで、ユーザーは別の製品を購入せずに済むかもしれない。

6. 再利用。使われなくなったものを、別の、しかし有用な方法で再利用する。

7. デザイン。生産およびデザイン会社は、リバース・エンジニアリングを実用的な工芸ベースの製造工程に応用した。これらの企業は、3Dスキャン、3D再モデ リング、再デザインを通じて、「歴史的」製造コレクションに取り組むことができる。2013年、イタリアのBaldi社とSavio Firmino社は、フィレンツェ大学と共同で、イノベーション、デザイン、生産プロセスを最適化した[13]。
Common uses

Machines

As computer-aided design (CAD) has become more popular, reverse engineering has become a viable method to create a 3D virtual model of an existing physical part for use in 3D CAD, CAM, CAE, or other software.[14] The reverse-engineering process involves measuring an object and then reconstructing it as a 3D model. The physical object can be measured using 3D scanning technologies like CMMs, laser scanners, structured light digitizers, or industrial CT scanning (computed tomography). The measured data alone, usually represented as a point cloud, lacks topological information and design intent. The former may be recovered by converting the point cloud to a triangular-faced mesh. Reverse engineering aims to go beyond producing such a mesh and to recover the design intent in terms of simple analytical surfaces where appropriate (planes, cylinders, etc.) as well as possibly NURBS surfaces to produce a boundary-representation CAD model. Recovery of such a model allows a design to be modified to meet new requirements, a manufacturing plan to be generated, etc.

Hybrid modeling is a commonly used term when NURBS and parametric modeling are implemented together. Using a combination of geometric and freeform surfaces can provide a powerful method of 3D modeling. Areas of freeform data can be combined with exact geometric surfaces to create a hybrid model. A typical example of this would be the reverse engineering of a cylinder head, which includes freeform cast features, such as water jackets and high-tolerance machined areas.[15]

Reverse engineering is also used by businesses to bring existing physical geometry into digital product development environments, to make a digital 3D record of their own products, or to assess competitors' products. It is used to analyze how a product works, what it does, what components it has; estimate costs; identify potential patent infringement; etc.

Value engineering, a related activity that is also used by businesses, involves deconstructing and analyzing products. However, the objective is to find opportunities for cost-cutting.

Printed circuit boards
Main article: PCB reverse engineering
Reverse engineering of printed circuit boards involves recreating fabrication data for a particular circuit board. This is done primarily to identify a design, and learn the functional and structural characteristics of a design. It also allows for the discovery of the design principles behind a product, especially if this design information is not easily available.

Outdated PCBs are often subject to reverse engineering, especially when they perform highly critical functions such as powering machinery, or other electronic components. Reverse engineering these old parts can allow the reconstruction of the PCB if it performs some crucial task, as well as finding alternatives which provide the same function, or in upgrading the old PCB. [16]

Reverse engineering PCBs largely follow the same series of steps. First, images are created by drawing, scanning, or taking photographs of the PCB. Then, these images are ported to suitable reverse engineering software in order to create a rudimentary design for the new PCB. The quality of these images that is necessary for suitable reverse engineering is proportional to the complexity of the PCB itself. More complicated PCBs require well lighted photos on dark backgrounds, while fairly simple PCBs can be recreated simply with just basic dimensioning. Each layer of the PCB is carefully recreated in the software with the intent of producing a final design as close to the initial. Then, the schematics for the circuit are finally generated using an appropriate tool.[17]

Software

In 1990, the Institute of Electrical and Electronics Engineers (IEEE) defined (software) reverse engineering (SRE) as "the process of analyzing a subject system to identify the system's components and their interrelationships and to create representations of the system in another form or at a higher level of abstraction" in which the "subject system" is the end product of software development. Reverse engineering is a process of examination only, and the software system under consideration is not modified, which would otherwise be re-engineering or restructuring. Reverse engineering can be performed from any stage of the product cycle, not necessarily from the functional end product.[10]

There are two components in reverse engineering: redocumentation and design recovery. Redocumentation is the creation of new representation of the computer code so that it is easier to understand. Meanwhile, design recovery is the use of deduction or reasoning from general knowledge or personal experience of the product to understand the product's functionality fully.[10] It can also be seen as "going backwards through the development cycle".[18] In this model, the output of the implementation phase (in source code form) is reverse-engineered back to the analysis phase, in an inversion of the traditional waterfall model. Another term for this technique is program comprehension.[7] The Working Conference on Reverse Engineering (WCRE) has been held yearly to explore and expand the techniques of reverse engineering.[11][19] Computer-aided software engineering (CASE) and automated code generation have contributed greatly in the field of reverse engineering.[11]

Software anti-tamper technology like obfuscation is used to deter both reverse engineering and re-engineering of proprietary software and software-powered systems. In practice, two main types of reverse engineering emerge. In the first case, source code is already available for the software, but higher-level aspects of the program, which are perhaps poorly documented or documented but no longer valid, are discovered. In the second case, there is no source code available for the software, and any efforts towards discovering one possible source code for the software are regarded as reverse engineering. The second usage of the term is more familiar to most people. Reverse engineering of software can make use of the clean room design technique to avoid copyright infringement.

On a related note, black box testing in software engineering has a lot in common with reverse engineering. The tester usually has the API but has the goals to find bugs and undocumented features by bashing the product from outside.[20]

Other purposes of reverse engineering include security auditing, removal of copy protection ("cracking"), circumvention of access restrictions often present in consumer electronics, customization of embedded systems (such as engine management systems), in-house repairs or retrofits, enabling of additional features on low-cost "crippled" hardware (such as some graphics card chip-sets), or even mere satisfaction of curiosity.

Binary software

Binary reverse engineering is performed if source code for a software is unavailable.[11] This process is sometimes termed reverse code engineering, or RCE.[21] For example, decompilation of binaries for the Java platform can be accomplished by using Jad. One famous case of reverse engineering was the first non-IBM implementation of the PC BIOS, which launched the historic IBM PC compatible industry that has been the overwhelmingly-dominant computer hardware platform for many years. Reverse engineering of software is protected in the US by the fair use exception in copyright law.[22] The Samba software, which allows systems that do not run Microsoft Windows systems to share files with systems that run it, is a classic example of software reverse engineering[23] since the Samba project had to reverse-engineer unpublished information about how Windows file sharing worked so that non-Windows computers could emulate it. The Wine project does the same thing for the Windows API, and OpenOffice.org is one party doing that for the Microsoft Office file formats. The ReactOS project is even more ambitious in its goals by striving to provide binary (ABI and API) compatibility with the current Windows operating systems of the NT branch, which allows software and drivers written for Windows to run on a clean-room reverse-engineered free software (GPL) counterpart. WindowsSCOPE allows for reverse-engineering the full contents of a Windows system's live memory including a binary-level, graphical reverse engineering of all running processes.

Another classic, if not well-known, example is that in 1987 Bell Laboratories reverse-engineered the Mac OS System 4.1, originally running on the Apple Macintosh SE, so that it could run it on RISC machines of their own.[24]

Binary software techniques
Reverse engineering of software can be accomplished by various methods. The three main groups of software reverse engineering are

Analysis through observation of information exchange, most prevalent in protocol reverse engineering, which involves using bus analyzers and packet sniffers, such as for accessing a computer bus or computer network connection and revealing the traffic data thereon. Bus or network behavior can then be analyzed to produce a standalone implementation that mimics that behavior. That is especially useful for reverse engineering device drivers. Sometimes, reverse engineering on embedded systems is greatly assisted by tools deliberately introduced by the manufacturer, such as JTAG ports or other debugging means. In Microsoft Windows, low-level debuggers such as SoftICE are popular.
Disassembly using a disassembler, meaning the raw machine language of the program is read and understood in its own terms, only with the aid of machine-language mnemonics. It works on any computer program but can take quite some time, especially for those who are not used to machine code. The Interactive Disassembler is a particularly popular tool.
Decompilation using a decompiler, a process that tries, with varying results, to recreate the source code in some high-level language for a program only available in machine code or bytecode.
Software classification
Software classification is the process of identifying similarities between different software binaries (such as two different versions of the same binary) used to detect code relations between software samples. The task was traditionally done manually for several reasons (such as patch analysis for vulnerability detection and copyright infringement), but it can now be done somewhat automatically for large numbers of samples.

This method is being used mostly for long and thorough reverse engineering tasks (complete analysis of a complex algorithm or big piece of software). In general, statistical classification is considered to be a hard problem, which is also true for software classification, and so few solutions/tools that handle this task well.

Source code

A number of UML tools refer to the process of importing and analysing source code to generate UML diagrams as "reverse engineering". See List of UML tools.

Although UML is one approach in providing "reverse engineering" more recent advances in international standards activities have resulted in the development of the Knowledge Discovery Metamodel (KDM). The standard delivers an ontology for the intermediate (or abstracted) representation of programming language constructs and their interrelationships. An Object Management Group standard (on its way to becoming an ISO standard as well),[citation needed] KDM has started to take hold in industry with the development of tools and analysis environments that can deliver the extraction and analysis of source, binary, and byte code. For source code analysis, KDM's granular standards' architecture enables the extraction of software system flows (data, control, and call maps), architectures, and business layer knowledge (rules, terms, and process). The standard enables the use of a common data format (XMI) enabling the correlation of the various layers of system knowledge for either detailed analysis (such as root cause, impact) or derived analysis (such as business process extraction). Although efforts to represent language constructs can be never-ending because of the number of languages, the continuous evolution of software languages, and the development of new languages, the standard does allow for the use of extensions to support the broad language set as well as evolution. KDM is compatible with UML, BPMN, RDF, and other standards enabling migration into other environments and thus leverage system knowledge for efforts such as software system transformation and enterprise business layer analysis.

Protocols

Protocols are sets of rules that describe message formats and how messages are exchanged: the protocol state machine. Accordingly, the problem of protocol reverse-engineering can be partitioned into two subproblems: message format and state-machine reverse-engineering.

The message formats have traditionally been reverse-engineered by a tedious manual process, which involved analysis of how protocol implementations process messages, but recent research proposed a number of automatic solutions.[25][26][27] Typically, the automatic approaches group observe messages into clusters by using various clustering analyses, or they emulate the protocol implementation tracing the message processing.

There has been less work on reverse-engineering of state-machines of protocols. In general, the protocol state-machines can be learned either through a process of offline learning, which passively observes communication and attempts to build the most general state-machine accepting all observed sequences of messages, and online learning, which allows interactive generation of probing sequences of messages and listening to responses to those probing sequences. In general, offline learning of small state-machines is known to be NP-complete,[28] but online learning can be done in polynomial time.[29] An automatic offline approach has been demonstrated by Comparetti et al.[27] and an online approach by Cho et al.[30]

Other components of typical protocols, like encryption and hash functions, can be reverse-engineered automatically as well. Typically, the automatic approaches trace the execution of protocol implementations and try to detect buffers in memory holding unencrypted packets.[31]

Integrated circuits/smart cards

Reverse engineering is an invasive and destructive form of analyzing a smart card. The attacker uses chemicals to etch away layer after layer of the smart card and takes pictures with a scanning electron microscope (SEM). That technique can reveal the complete hardware and software part of the smart card. The major problem for the attacker is to bring everything into the right order to find out how everything works. The makers of the card try to hide keys and operations by mixing up memory positions, such as by bus scrambling.[32][33]

In some cases, it is even possible to attach a probe to measure voltages while the smart card is still operational. The makers of the card employ sensors to detect and prevent that attack.[34] That attack is not very common because it requires both a large investment in effort and special equipment that is generally available only to large chip manufacturers. Furthermore, the payoff from this attack is low since other security techniques are often used such as shadow accounts. It is still uncertain whether attacks against chip-and-PIN cards to replicate encryption data and then to crack PINs would provide a cost-effective attack on multifactor authentication.

Full reverse engineering proceeds in several major steps.

The first step after images have been taken with a SEM is stitching the images together, which is necessary because each layer cannot be captured by a single shot. A SEM needs to sweep across the area of the circuit and take several hundred images to cover the entire layer. Image stitching takes as input several hundred pictures and outputs a single properly-overlapped picture of the complete layer.

Next, the stitched layers need to be aligned because the sample, after etching, cannot be put into the exact same position relative to the SEM each time. Therefore, the stitched versions will not overlap in the correct fashion, as on the real circuit. Usually, three corresponding points are selected, and a transformation applied on the basis of that.

To extract the circuit structure, the aligned, stitched images need to be segmented, which highlights the important circuitry and separates it from the uninteresting background and insulating materials.

Finally, the wires can be traced from one layer to the next, and the netlist of the circuit, which contains all of the circuit's information, can be reconstructed.

Military applications

This section needs additional citations for verification. Please help improve this article by adding citations to reliable sources in this section. Unsourced material may be challenged and removed. (July 2014) (Learn how and when to remove this message)
Reverse engineering is often used by people to copy other nations' technologies, devices, or information that have been obtained by regular troops in the fields or by intelligence operations. It was often used during the Second World War and the Cold War. Here are well-known examples from the Second World War and later:

Jerry can: British and American forces in WW2 noticed that the Germans had gasoline cans with an excellent design. They reverse-engineered copies of those cans, which cans were popularly known as "Jerry cans".
Nakajima G5N: In 1939, the U.S. Douglas Aircraft Company sold its DC-4E airliner prototype to Imperial Japanese Airways, which was secretly acting as a front for the Imperial Japanese Navy, which wanted a long-range strategic bomber but had been hindered by the Japanese aircraft industry's inexperience with heavy long-range aircraft. The DC-4E was transferred to the Nakajima Aircraft Company and dismantled for study; as a cover story, the Japanese press reported that it had crashed in Tokyo Bay.[35][36] The wings, engines, and landing gear of the G5N were copied directly from the DC-4E.[37]
Panzerschreck: The Germans captured an American bazooka during the Second World War and reverse engineered it to create the larger Panzerschreck.
Tupolev Tu-4: In 1944, three American B-29 bombers on missions over Japan were forced to land in the Soviet Union. The Soviets, who did not have a similar strategic bomber, decided to copy the B-29. Within three years, they had developed the Tu-4, a nearly-perfect copy.[38]
SCR-584 radar: copied by the Soviet Union after the Second World War, it is known for a few modifications - СЦР-584, Бинокль-Д.
V-2 rocket: Technical documents for the V-2 and related technologies were captured by the Western Allies at the end of the war. The Americans focused their reverse engineering efforts via Operation Paperclip, which led to the development of the PGM-11 Redstone rocket.[39] The Soviets used captured German engineers to reproduce technical documents and plans and worked from captured hardware to make their clone of the rocket, the R-1. Thus began the postwar Soviet rocket program, which led to the R-7 and the beginning of the space race.
K-13/R-3S missile (NATO reporting name AA-2 Atoll), a Soviet reverse-engineered copy of the AIM-9 Sidewinder, was made possible after a Taiwanese (ROCAF) AIM-9B hit a Chinese PLA MiG-17 without exploding in September 1958.[40] The missile became lodged within the airframe, and the pilot returned to base with what Soviet scientists would describe as a university course in missile development.
Toophan missile: In May 1975, negotiations between Iran and Hughes Missile Systems on co-production of the BGM-71 TOW and Maverick missiles stalled over disagreements in the pricing structure, the subsequent 1979 revolution ending all plans for such co-production. Iran was later successful in reverse-engineering the missile and now produces its own copy, the Toophan.
China has reversed engineered many examples of Western and Russian hardware, from fighter aircraft to missiles and HMMWV cars, such as the MiG-15,17,19,21 (which became the J-2,5,6,7) and the Su-33 (which became the J-15).[41]
During the Second World War, Polish and British cryptographers studied captured German "Enigma" message encryption machines for weaknesses. Their operation was then simulated on electromechanical devices, "bombes", which tried all the possible scrambler settings of the "Enigma" machines that helped the breaking of coded messages that had been sent by the Germans.
Also during the Second World War, British scientists analyzed and defeated a series of increasingly-sophisticated radio navigation systems used by the Luftwaffe to perform guided bombing missions at night. The British countermeasures to the system were so effective that in some cases, German aircraft were led by signals to land at RAF bases since they believed that they had returned to German territory.

Gene networks

Reverse engineering concepts have been applied to biology as well, specifically to the task of understanding the structure and function of gene regulatory networks. They regulate almost every aspect of biological behavior and allow cells to carry out physiological processes and responses to perturbations. Understanding the structure and the dynamic behavior of gene networks is therefore one of the paramount challenges of systems biology, with immediate practical repercussions in several applications that are beyond basic research.[42] There are several methods for reverse engineering gene regulatory networks by using molecular biology and data science methods. They have been generally divided into six classes:[43]


The six classes of gene network inference methods, according to[43]
Coexpression methods are based on the notion that if two genes exhibit a similar expression profile, they may be related although no causation can be simply inferred from coexpression.
Sequence motif methods analyze gene promoters to find specific transcription factor binding domains. If a transcription factor is predicted to bind a promoter of a specific gene, a regulatory connection can be hypothesized.
Chromatin ImmunoPrecipitation (ChIP) methods investigate the genome-wide profile of DNA binding of chosen transcription factors to infer their downstream gene networks.
Orthology methods transfer gene network knowledge from one species to another.
Literature methods implement text mining and manual research to identify putative or experimentally-proven gene network connections.
Transcriptional complexes methods leverage information on protein-protein interactions between transcription factors, thus extending the concept of gene networks to include transcriptional regulatory complexes.
Often, gene network reliability is tested by genetic perturbation experiments followed by dynamic modelling, based on the principle that removing one network node has predictable effects on the functioning of the remaining nodes of the network.[44] Applications of the reverse engineering of gene networks range from understanding mechanisms of plant physiology[45] to the highlighting of new targets for anticancer therapy.[46]

Overlap with patent law
Reverse engineering applies primarily to gaining understanding of a process or artifact in which the manner of its construction, use, or internal processes has not been made clear by its creator.

Patented items do not of themselves have to be reverse-engineered to be studied, for the essence of a patent is that inventors provide a detailed public disclosure themselves, and in return receive legal protection of the invention that is involved. However, an item produced under one or more patents could also include other technology that is not patented and not disclosed. Indeed, one common motivation of reverse engineering is to determine whether a competitor's product contains patent infringement or copyright infringement.


一般的な用途

機械

コンピュータ支援設計(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] 。この手法の別の用語はプログラム理解である[7]。リバースエンジニアリングの技術を探求し、拡大するために、リバースエンジニアリングに関する作業会 議(WCRE)が毎年開催されている[11][19]。

難読化のようなソフトウェア改ざん防止技術は、リバース・エンジニアリングとプロプライエタリ・ソフトウェアおよびソフトウェア駆動システムのリエンジニ アリングの両方を抑止するために使用される。実際には、主に 2 種類のリバース・エンジニアリングが出現する。最初のケースでは、ソフトウェアのソースコードはすでに入手可能であるが、おそらくドキュメント化が不十分 であったり、ドキュメント化されているがもはや無効であったりするプログラムの高次の側面が発見される。2つ目のケースでは、ソフトウェアのソースコード が入手できず、可能性のあるソースコードを発見するための努力がリバースエンジニアリングとみなされる。この用語の2番目の用法は、多くの人にとってより 馴染み深いものである。ソフトウェアのリバース・エンジニアリングは、著作権侵害を避けるためにクリーンルーム設計技術を利用することができる。

関連して、ソフトウェア工学におけるブラックボックステストは、リバースエンジニアリングと多くの共通点がある。テスターは通常APIを持っているが、外部から製品をバッシングすることによって、バグや文書化されていない機能を見つけることを目的としている[20]。

リバースエンジニアリングの他の目的としては、セキュリティ監査、コピープロテクションの解除(「クラッキング」)、家電製品によくあるアクセス制限の回 避、組み込みシステム(エンジンマネジメントシステムなど)のカスタマイズ、社内での修理や改造、低コストの「不自由な」ハードウェア(一部のグラフィッ クカードのチップセットなど)での追加機能の有効化、あるいは単なる好奇心の充足などがある。

バイナリソフトウェア

バイナリ・リバースエンジニアリングは、ソフトウェアのソースコードが入手できない場合に実行される[11]。このプロセスは、リバースコードエンジニア リング(RCE)と呼ばれることもある[21]。リバースエンジニアリングの有名な事例として、PC BIOSの最初の非IBM実装がある。ソフトウェアのリバースエンジニアリングは、米国では著作権法のフェアユース例外によって保護されている[22]。 マイクロソフト・ウィンドウズを実行していないシステムが、ウィンドウズを実行しているシステムとファイルを共有できるようにするSambaソフトウェア は、ソフトウェアのリバースエンジニアリングの典型的な例である[23]。WineプロジェクトはWindows APIに対して同じことをしているし、OpenOffice.orgはMicrosoft Officeのファイルフォーマットに対して同じことをしている一つの団体である。ReactOSプロジェクトは、NTブランチの現在のウィンドウズ・オ ペレーティング・システムとのバイナリ(ABIとAPI)互換性を提供することで、ウィンドウズ用に書かれたソフトウェアやドライバーを、クリーンルーム でリバースエンジニアリングされたフリーソフトウェア(GPL)上で動作させるという、さらに野心的な目標を掲げている。WindowsSCOPEは、実 行中の全プロセスのバイナリレベルのグラフィカルなリバースエンジニアリングを含む、Windowsシステムのライブメモリの全内容のリバースエンジニア リングを可能にする。

よく知られてはいないが、もう一つの古典的な例は、1987年にベル研究所が、もともとApple Macintosh SE上で動作していたMac OS System 4.1を、自社のRISCマシンで実行できるようにリバースエンジニアリングしたことである[24]。

バイナリソフトウェアの技術

ソフトウェアのリバースエンジニアリングは、様々な手法によって達成することができる。ソフトウェアのリバースエンジニアリングには、主に次の3つのグループがある。

情報交換の観察による分析。プロトコル・リバース・エンジニアリングで最も一般的で、バス・アナライザやパケット・スニッファを使用し、コンピュータ・バ スやコンピュータ・ネットワーク接続にアクセスして、そのトラフィック・データを明らかにする。バスやネットワークの動作を分析し、その動作を模倣したス タンドアロン実装を作成することができる。これは、特にデバイスドライバのリバースエンジニアリングに役立つ。時には、組み込みシステムのリバースエンジ ニアリングは、JTAGポートやその他のデバッグ手段のような、メーカーが意図的に導入したツールによって大いに助けられる。Microsoft Windows では、SoftICE のような低レベルのデバッガがよく使われている。
逆アセンブラを使用した逆アセンブルとは、プログラムの生の機械語を、機械語のニーモニックの助けを借りてのみ、独自の言葉で読み取り、理解することを意 味する。どのようなコンピューター・プログラムでも機能するが、特に機械語に慣れていない人にとっては、かなりの時間がかかる。インタラクティブ・ディス アセンブラは特によく使われるツールである。
デコンパイラを使った逆コンパイルは、機械語コードまたはバイトコードでしか利用できないプログラムに対して、さまざまな結果を得ながら、何らかの高級言語でソースコードを再現しようとするプロセスである。
ソフトウェアの分類
ソフトウェア分類は、ソフトウェアサンプル間のコード関係を検出するために使用される、異なるソフトウェアバイナリ(同じバイナリの2つの異なるバージョ ンなど)間の類似性を識別するプロセスである。この作業は、いくつかの理由(脆弱性検出や著作権侵害のためのパッチ解析など)から、従来は手作業で行われ ていたが、現在では大量のサンプルに対してある程度自動的に行うことができる。

この方法は、主に長時間の徹底的なリバースエンジニアリング作業(複雑なアルゴリズムや大きなソフトウェアの完全な解析)に使用されている。一般的に、統 計的分類は難しい問題と考えられており、それはソフトウェアの分類にも当てはまるため、このタスクをうまく処理するソリューションやツールはほとんどな い。

ソースコード

多くのUML(Unified Modeling Language)ツールは、ソースコードをインポートして分析し、UMLダイアグラムを生成するプロセスを「リバース・エンジニアリング」と呼んでいる。UMLツールのリストを参照。

UMLは「リバース・エンジニアリング」を提供する1つのアプローチであるが、国際標準化活動の最近の進歩により、知識発見メタモデル(KDM)が開発さ れた。この標準は、プログラミング言語の構成要素とそれらの相互関係の中間(または抽象化された)表現のためのオントロジーを提供する。オブジェクト管理 グループの標準規格(ISO標準規格にもなりつつある)[要出典]であるKDMは、ソースコード、バイナリコード、バイトコードの抽出と解析を実現する ツールや解析環境の開発によって、産業界に定着し始めている。ソースコード解析では、KDMの粒度の細かい標準アーキテクチャにより、ソフトウェアシステ ムフロー(データ、制御、コールマップ)、アーキテクチャ、ビジネスレイヤー知識(ルール、用語、プロセス)の抽出が可能になる。この標準は、詳細分析 (根本原因、影響など)または派生分析(ビジネスプロセス抽出など)のために、システム知識の様々なレイヤーの相関を可能にする共通のデータ形式 (XMI)の使用を可能にする。言語の数、ソフトウェア言語の継続的な進化、新しい言語の開発のため、言語構造を表現する努力は終わりがないが、標準は、 進化と同様に幅広い言語セットをサポートするための拡張機能の使用を許可している。KDMはUML、BPMN、RDF、その他の標準と互換性があり、他の 環境への移行を可能にし、ソフトウェアシステム変換やエンタープライズビジネスレイヤー分析のような取り組みにシステム知識を活用する。

プロトコル

プロトコルは、メッセージのフォーマットとメッセージの交換方法を記述するルールの集合である。したがって、プロトコル・リバースエンジニアリングの問題は、メッセージ・フォーマットとステートマシン・リバースエンジニアリングの2つのサブ問題に分割することができる。

メッセージフォーマットのリバースエンジニアリングは、従来、プロトコルの実装がどのようにメッセージを処理するかを解析する面倒な手作業によって行われ てきたが、最近の研究では、多くの自動的な解決策が提案されている[25][26][27]。一般的に、自動的なアプローチでは、様々なクラスタリング解 析を使用することによって、観測されたメッセージをクラスタにグループ化するか、メッセージ処理をトレースするプロトコル実装をエミュレートする。

プロトコルのステートマシンのリバースエンジニアリングに関する研究は少ない。一般に、プロトコルのステートマシンは、通信を受動的に観察し、観察された すべてのメッセージシーケンスを受け入れる最も一般的なステートマシンを構築しようとするオフライン学習と、メッセージのプロービングシーケンスを対話的 に生成し、それらのプロービングシーケンスに対する応答を聞くことができるオンライン学習のいずれかのプロセスを通じて学習することができる。一般に、小 さな状態機械のオフライン学習はNP完全であることが知られている[28]が、オンライン学習は多項式時間で行うことができる[29]。自動オフラインア プローチはComparettiら[27]、オンラインアプローチはChoら[30]によって実証されている。

暗号化やハッシュ関数のような典型的なプロトコルの他のコンポーネントも、同様に自動的にリバースエンジニアリングすることができる。通常、自動的なアプ ローチはプロトコル実装の実行をトレースし、暗号化されていないパケットを保持するメモリ内のバッファの検出を試みる[31]。

集積回路/スマートカード

リバースエンジニアリングは、スマートカードを分析する侵襲的で破壊的な方法である。攻撃者は化学薬品を使ってスマートカードの層を次々とエッチングし、 走査型電子顕微鏡(SEM)で写真を撮る。この技術によって、スマート・カードのハードウェアとソフトウェアの完全な部分を明らかにすることができる。攻 撃者にとっての大きな問題は、すべてがどのように機能するかを知るために、すべてを正しい順番に並べることである。カードの製造者は、バス・スクランブル などのメモリ位置を混在させることで、キーと操作を隠そうとする[32][33]。

場合によっては、スマートカードが動作している間に電圧を測定するプローブを取り付けることさえ可能である。この攻撃は、多大な労力と、一般に大手チッ プ・メーカーしか利用できない特別な装置の両方を必要とするため、あまり一般的ではない。さらに、シャドウ・アカウントのような他のセキュリティ技法がよ く使われるため、この攻撃による見返りは低い。チップ・アンド・PINカードに対して暗号化データを複製し、その後PINをクラックする攻撃が、多要素認 証に対する費用対効果の高い攻撃になるかどうかはまだ不明である。

完全なリバース・エンジニアリングは、いくつかの主要なステップで進行する。

SEMで画像を撮影した後の最初のステップは、画像をつなぎ合わせることである。これは、各層を1ショットで撮影することができないためである。SEM は、回路の領域を掃引し、全層をカバーするために数百枚の画像を撮影する必要がある。画像つなぎ合わせは、数百枚の画像を入力とし、レイヤー全体を適切に 重ね合わせた1枚の画像を出力する。

次に、スティッチングされたレイヤーは位置合わせされる必要がある。エッチング後のサンプルは、SEMに対して毎回正確に同じ位置に置くことができないか らである。そのため、ステッチされたバージョンは、実際の回路上のように正しい形で重ならない。通常、対応する3点が選択され、それに基づいて変換が適用 される。

回路構造を抽出するためには、位置合わせされ、スティッチングされた画像をセグメント化し、重要な回路を強調し、興味のない背景や絶縁材料から分離する必要がある。

最後に、あるレイヤーから次のレイヤーへとワイヤーをトレースし、回路のすべての情報を含む回路のネットリストを再構築することができる。

軍事用途

このセクションには、検証のための追加引用が必要である。このセクションに信頼できるソースの引用を追加することで、この記事の改善にご協力いただきた い。ソースのないものは異議申し立てされ、削除される可能性がある。(2014年7月)(このメッセージを削除する方法とタイミングを学ぶ)
リバース・エンジニアリングとは、一般兵が現地で、あるいは諜報活動によって入手した他国の技術や装置、情報を、人々がコピーするために用いられることが 多い。リバース・エンジニアリングは、第二次世界大戦や冷戦時代にもしばしば用いられた。以下は、第二次世界大戦以降の有名な例である:

ジェリー缶: 第二次世界大戦の英米軍は、ドイツ軍が優れたデザインのガソリン缶を持っていることに気づいた。彼らはそれらの缶のコピーをリバースエンジニアリングし、その缶は「ジェリー缶」として一般に知られるようになった。
中島G5N:1939年、米ダグラス・エアクラフト社は、長距離戦略爆撃機を欲していたものの、日本の航空機産業が重厚長大機の経験が浅いために妨げられ ていた日本海軍の隠れ蓑として密かに活動していた大日本帝国航空に、旅客機の試作機DC-4Eを売却した。G5Nの主翼、エンジン、着陸装置はDC-4E から直接コピーされた[35][36]。
パンツァーシュレック ドイツ軍は第二次世界大戦中にアメリカのバズーカを鹵獲し、それをリバースエンジニアリングして大型のPanzerschreckを作った。
ツポレフ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月に台湾(中華民国空軍)のAIM-9Bが中国PLAのMiG-17に爆発せずに命中した後に実現した[40]。ミサイルは機体内に留まり、パイロッ トはソ連の科学者がミサイル開発の大学課程と表現するようなものを受けて基地に戻った。
トゥーファン・ミサイル: 1975年5月、イランとヒューズ・ミサイル・システムズの間で、BGM-71 TOWミサイルとマーベリック・ミサイルの共同生産に関する交渉が、価格体系の不一致を理由に頓挫した。イランは後にこのミサイルのリバースエンジニアリ ングに成功し、現在では独自のコピーであるトゥーファンを製造している。
中国は、MiG-15,17,19,21(J-2,5,6,7となった)やSu-33(J-15となった)など、戦闘機からミサイルやHMMWV車まで、西側やロシアのハードウェアの多くの例をリバースエンジニアリングしている[41]。
第二次世界大戦中、ポーランドとイギリスの暗号学者は捕獲したドイツの「エニグマ」メッセージ暗号機の弱点を研究した。そして、その動作は電気機械装置で ある「ボンブ」でシミュレートされ、「エニグマ」機の可能なスクランブラー設定をすべて試すことで、ドイツ軍によって送信された暗号メッセージの解読に役 立った。
また第二次世界大戦中、イギリスの科学者たちは、ドイツ空軍が夜間の誘導爆撃を行うために使用していた、高度化する一連の無線ナビゲーション・システムを 分析し、打ち破った。このシステムに対するイギリスの対策は非常に効果的で、ドイツ軍機がドイツ領に戻ったと勘違いし、信号によって空軍基地に着陸するよ う誘導されたケースもあった。

遺伝子ネットワーク
リバース・エンジニアリングのコンセプトは生物学にも応用されており、特に遺伝子制御ネットワークの構造と機能を理解する作業に応用されている。遺伝子 ネットワークは、生物学的行動のほとんどすべての側面を制御し、細胞が生理学的プロセスや摂動に対する応答を行うことを可能にしている。したがって、遺伝 子ネットワークの構造と動的な挙動を理解することは、システム生物学の最も重要な課題の一つであり、基礎研究の枠を超えたいくつかの応用において、直ちに 実用的な反響をもたらすものである。それらは一般的に以下の6つのクラスに分類されている[43]。


43]によると、遺伝子ネットワーク推定法の6つのクラスは以下の通りである。
共発現法は、2つの遺伝子が同じような発現プロファイルを示す場合、両者は関連している可能性があるという考え方に基づくが、共発現から単純に因果関係を推論することはできない。
配列モチーフ法は、遺伝子プロモーターを解析し、特定の転写因子結合ドメインを見つける。転写因子が特定の遺伝子のプロモーターに結合すると予測される場合、制御の関連性が推測される。
ChIP (Chromatin ImmunoPrecipitation)法は、選択した転写因子のDNA結合のゲノムワイドプロファイルを調査し、その下流の遺伝子ネットワークを推測する。
Orthology法は、遺伝子ネットワークの知識をある生物種から別の生物種に転送する。
文献解析法は、テキストマイニングと手作業による調査を実施し、推定または実験的に証明された遺伝子ネットワークのつながりを同定する。
転写複合体法は転写因子間のタンパク質-タンパク質相互作用に関する情報を活用し、遺伝子ネットワークの概念を転写制御複合体を含むように拡張する。
多くの場合、遺伝子ネットワークの信頼性は、遺伝的摂動実験によって検証され、その後、ネットワークの1つのノードを取り除くと、ネットワークの残りの ノードの機能に予測可能な影響を与えるという原理に基づいて、動的モデリングが行われる[44]。遺伝子ネットワークのリバースエンジニアリングの応用範 囲は、植物生理学のメカニズムの理解[45]から、抗がん治療のための新たなターゲットの強調まで多岐にわたる[46]。

特許法との重複
リバースエンジニアリングは、主に、その構造、使用、内部プロセスの方法が作成者によって明らかにされていないプロセスや人工物の理解を得るために適用される。

特許の本質は、発明者が自ら詳細な情報公開を行い、その見返りとして関連する発明の法的保護を受けることにあるからだ。しかし、1つまたは複数の特許に基 づいて製造された品目には、特許も公開もされていない他の技術も含まれている可能性がある。実際、リバースエンジニアリングの一般的な動機の一つは、競合 他社の製品に特許侵害や著作権侵害が含まれているかどうかを判断することである。

Legality
United States
In the United States, even if an artifact or process is protected by trade secrets, reverse-engineering the artifact or process is often lawful if it has been legitimately obtained.[47]

Reverse engineering of computer software often falls under both contract law as a breach of contract as well as any other relevant laws. That is because most end-user license agreements specifically prohibit it, and US courts have ruled that if such terms are present, they override the copyright law that expressly permits it (see Bowers v. Baystate Technologies[48][49]). According to Section 103(f) of the Digital Millennium Copyright Act (17 U.S.C. § 1201 (f)), a person in legal possession of a program may reverse-engineer and circumvent its protection if that is necessary to achieve "interoperability", a term that broadly covers other devices and programs that can interact with it, make use of it, and to use and transfer data to and from it in useful ways. A limited exemption exists that allows the knowledge thus gained to be shared and used for interoperability purposes.[a]

European Union
EU Directive 2009/24 on the legal protection of computer programs, which superseded an earlier (1991) directive,[50] governs reverse engineering in the European Union.[51][b]
合法性
米国
米国では、人工物やプロセスが企業秘密によって保護されている場合でも、それが合法的に入手されたものであれば、その人工物やプロセスをリバースエンジニアリングすることは多くの場合合法である[47]。

コンピュータソフトウェアのリバースエンジニアリングは、契約違反としての契約法だけでなく、その他の関連法にも該当することが多い。というのも、ほとん どのエンドユーザーライセンス契約はリバースエンジニアリングを明確に禁止しており、米国の裁判所は、そのような条項が存在する場合、リバースエンジニア リングを明確に許可している著作権法に優先すると判断しているからである(Bowers v. Baystate Technologies[48][49]を参照)。デジタルミレニアム著作権法第103条(f)(17 U.S.C. § 1201 (f))によれば、プログラムを合法的に所有する者は、「相互運用性」を達成するために必要であれば、リバースエンジニアリングしてその保護を回避するこ とができる。このようにして得られた知識を共有し、相互運用性の目的のために使用することを認める限定的な免除が存在する[a]。

欧州連合
コンピュータ・プログラムの法的保護に関するEU指令2009/24は、それ以前(1991年)の指令に取って代わり[50]、EUにおけるリバース・エンジニアリングを規定している[51][b]。
Antikythera mechanism
Backward induction
Benchmarking
Bus analyzer
Chonda
Clone (computing)
Clean room design
CMM
Code morphing
Connectix Virtual Game Station
Counterfeiting
Cryptanalysis
Decompile
Deformulation
Digital Millennium Copyright Act (DMCA)
Disassembler
Dongle
Forensic engineering
Industrial CT scanning
Interactive Disassembler
Knowledge Discovery Metamodel
Laser scanner
List of production topics
Listeroid Engines
Logic analyzer
Paycheck
Repurposing
Reverse architecture
Round-trip engineering
Retrodiction
Sega v. Accolade
Software archaeology
Software cracking
Structured light digitizer
Value engineering
アンティキティラ島のメカニズム
後方誘導
ベンチマーク
バスアナライザー
チョンダ
クローン(コンピューティング)
クリーンルーム設計
CMM
コードモーフィング
Connectixバーチャルゲームステーション
偽造
暗号解読
デコンパイル
デフォルメ
デジタルミレニアム著作権法(DMCA)
逆アセンブラ
ドングル
フォレンジック・エンジニアリング
産業用CTスキャン
インタラクティブ逆アセンブラ
知識発見メタモデル
レーザースキャナー
生産トピック一覧
リステロイド・エンジン
ロジック・アナライザー
ペイチェック
再利用
リバース・アーキテクチャー
ラウンドトリップ・エンジニアリング
レトロディクション
セガ対アコレード
ソフトウェア考古学
ソフトウェアクラッキング
構造化光デジタイザー
バリューエンジニアリング
https://en.wikipedia.org/wiki/Reverse_engineering



*

リンク

リンク(フィールドワーク)

文献

その他の情報

Maya_Abeja

Copyleft, CC, Mitzub'ixi Quq Chi'j, 1996-2099

池田蛙  授業蛙 電脳蛙 医人蛙 子供蛙