04
مهر

مهندسی معکوس در مدیریت مهندسی

Understanding reverse engineering
Common reasons for reverse engineering are:
Development of interfaces for system interoperability…
Corporate and/or military espionage…
Improve product documentation…
Considering the obsolescence…
Renovation of software products…
Security adaptations…
Fix product defects…
simulation …

 

What is reverse engineering?
Reverse engineering is taking apart an object to see how it works. This is mainly done to analyze and gain knowledge about how something works, but is often used to replicate or enhance the object. Many things can be reverse engineered, including software, physical machines, military technology, and even biological functions related to how genes work.
The reverse engineering method used in computer hardware and software is taken from old industries. Software reverse engineering focuses on the program’s machine code—the strings 0 and 1 that enter the processor
Sent logically. Programming language statements are used to convert machine code into original source code

Depending on the technology, the knowledge gained in reverse engineering can be used to reuse obsolete objects, analyze security, gain a competitive advantage, or simply teach how something works. Regardless of how the knowledge is used or communicated, reverse engineering is the process of obtaining that knowledge from a finished object.

How does the reverse engineering process work?
The reverse engineering process is specific to the object on which it is performed. Regardless of context, however, there are three general steps common to all reverse engineering efforts. They are:
Information Extraction The object being reverse engineered is studied, information about its design is extracted, and this information is examined to determine how the parts fit together. In software reverse engineering, this may require collecting source code and related design documents for study. It may also involve the use of tools such as a disassembler to separate the program into its component parts.

Modeling Collected information is abstracted into a conceptual model, and each piece of the model explains its function in the overall structure. The purpose of this step is to take the original specific information and transform it into a general model that can be used to guide the design of new objects or systems. In software reverse engineering this may take the form of a data flow diagram or a structure diagram.
review This involves examining the model and testing it in different scenarios to ensure that it is a true abstraction of the original object or system. In software engineering this may take the form of software testing. After testing, the model can be implemented to re-engineer the original object.

Software reverse engineering involves the use of several tools. One tool is a hexadecimal player that prints or displays the binary numbers of a program in hexadecimal. By knowing the bit patterns that represent the processor’s instructions, as well as the length of the instructions, the reverse engineer can identify parts of a program to see how they work.

Another software reverse engineering tool is the splitter. Reads binary code and displays each executable instruction as text. The disassembler cannot tell the difference between the executable instruction and the data that the program uses, so debugging is used to prevent the disassembler from detaching parts of the program’s data. These tools may be used by a computer cracker to break into a computer system or cause other damage.

Computer-aided design (CAD) is a reverse engineering technique used to recreate a manufactured part when the original blueprint is no longer available. This involves producing 3D images of the part so that it can be reproduced. The measuring device measures the coordinates of the part and as it is measured, a 3D wire frame image is created using CAD software and displayed on the monitor. After the measurement is completed, the image of the wire frame is measured. Any part can be reverse engineered using these methods.

What is the purpose of reverse engineering?
The goal of reverse engineering is to find out how an object or system works. There are several reasons for doing this. Reverse engineering can be used to learn how something works and recreate the object or create a similar object with further improvements.
Often the purpose of reverse engineering software or hardware is to find a way to make a product cheaper and cheaper, or because the original product is no longer available. Reverse engineering in information technology is also used to solve compatibility problems and work of hardware or software with other hardware, software or operating systems that were not compatible with them in the first place.

Apple’s Logic Pro software, which allows musicians to compose, record, arrange, edit and mix music, is a good example. Logic Pro is only available for Mac devices and is relatively expensive. This program has several dedicated digital tools. With a little research, a programmer can reverse engineer these digital instruments, figure out how they work, and customize them for use in Logic Pro or make them compatible with other Windows-compatible music software.

Legal and ethical challenges with reverse engineering
In the United States, reverse engineering is generally considered a legal way to learn about a product as long as the original was produced legally and no other contractual agreement was violated. US trade goals are to allow reverse engineering if it improves the product or creates interoperability with other products that were previously incompatible.
Reverse-engineering a registered product is generally legal under the Defend Trade Secrets Act, but there are circumstances where that legality falls short. Patent owners take advantage of anyone who copies their inventions.

Reverse engineering software for the purpose of duplicating or duplicating a program may be a violation of copyright law. Some software licenses specifically prohibit reverse engineering. Other contractual agreements can also limit the use of reverse engineering to access code, including terms of service or usage and non-disclosure notices and other types of developer agreements.
Technological protection measures (TPM), such as passwords, encryption and access control devices, are often used to control access to copyrighted software and other digital content. Bypassing TPM can raise legal issues.

The various laws related to reverse engineering include the following:
patent law;
copyright law and fair use;
Trade secrets law;
Anti-Possible Provisions of the Digital Millennium Copyright Act;
Electronic Communications Privacy Act; And
Any contractual agreement specific to the product in question.
When a reverse engineering challenge is brought to court, the original owner of the object, system, or intellectual property must prove that they created the object or own the patent or copyright. The person or organization doing the reverse engineering must prove that they obtained the information through legal means.

One way to reverse engineer and develop a new software product to avoid patent or copyright infringement is to use a clean room or ethical wall technique, where two separate groups of programmers work on the project and ensure that the original is not directly copied. To
Reverse engineering is a complex area of ​​ethics and law. The spread of information technology in many parts of daily life has made it more complicated.