Protect Your Intellectual Property

We have an abundance of experience in reverse engineering hardware, software, and firmware. Our expertise covers a broad range of engineering: from software to hardware, and all the systems in between. We can sift through volumes of information related to patent infringement and other IP cases to provide you with the knowledge you need.

Through analysis of a product’s structure, function, and operation, we can reverse engineer a given product. This process allows us to make conclusions about design decisions—with little or no knowledge about the processes involved in the original production.

If you would like to discuss your particular project or better understand how reverse engineering can provide solutions, please contact us.

DireenTech has over 14 years of experience of successfully reverse engineering software in a wide range of products, comparing the software’s operation to a wide range of technology patents. Products reversed engineered include database systems; media players; audio signal processing and compression; modems; modem compression algorithms; Coriolis mass flow meters; and a variety of other products. We have successfully discovered and analyzed complex digital signal processing algorithms and pertinent operations within these products.

Our Process

Reverse engineering a product in order to compare the products operation to a given patent (or set of patents) claim(s) is typically a very challenging process. The process starts with reading and understanding the patent(s) and the invention disclosed by the patent as covered by the patent’s claims. The next step is obtaining as much information about the product at hand that indicates whether or not the operation of the product uses the claimed invention. In some instances, product documentation may be sufficient to provide a strong indication of whether or not the product uses the claimed invention. Most the time though, further product reverse engineering will be required to demonstrate whether or not the product is likely to be infringing the claimed invention.

The level and type of reverse engineering depends heavily on the type of product and the technology associated with the claimed invention. Some of the reverse engineering approaches are:

Specific tests are setup and run on the product in order to reveal whether or not the product is operating within the constraints of the patent claim(s).

For electronic products a schematic of the circuity may be generated by careful (usually very tedious) tracing of the circuitry. Based upon analysis of the circuitry discovered and shown in the generated schematic, a comparison of the circuits operation to that of the patent claims is carried out. This takes expertise in electronic engineering to analyzes the circuitry and compare the circuits operation to that of the patent claims.

For embedded systems, the software or firmware is often stored in flash memory or microcontroller memory or some other type of non-volatile memory. The bytes of data is extracted from the memory device (which can have a range of challenges all its own). Based upon the specific type of processor used, the bytes of data extracted are then disassembled into assembly code. There are various software tools on the market that can help with this. Once disassembled the very challenging process of reverse engineering the code begins. The disassembled code will not have any variable names, nor function names, nor comments to aid in the process. To be successful in reverse engineering this code, the engineer must understand the microprocessor’s operation; assembly code; how to trace functions and operations within the assembly code; and must understand the specific patented algorithms and processes. For embedded systems, the engineer must have experience not only with software systems, but also must understand the electronic hardware the system is running, and the physics of process being controlled.

Reverse Engineering Software

Software reverse engineering can be a very challenging process that demands a wide range of engineering skills especially when the source code is not available. For embedded systems first steps include determining what microprocessor, microcontroller or digital signal processor is being used and obtaining documentation for the processor including the assembly code instruction manuals. The software or firmware is often stored in flash memory or microcontroller memory or some other type of non-volatile memory. The bytes of data is extracted from the memory device (which can have a range of challenges all its own). Once the bytes of data are extracted a disassembler is used to convert the raw data into assembly code.

One of the best disassemblers on the market for software reverse engineering is Hex-Rays IDA ( IDA will disassemble code from a range of processors including Intel processors, ARM processors, DSPs, and .a wide range of microcontrollers. For Intel x86 and ARM processors IDA has a decompiler which turns the assembly code into a c-like source code. In addition to the disassembler and decompiler, IDA has a range of support tools to help with the reverse engineering process. Even with tools like IDA, the software reverse engineering is very challenging and requires a great deal of engineering skills and innovation.

Disassembled coded does not contain any of the original variable or function names and certainly does not contain any of the source code comments that might provide hints to the code’s operation. The usual approach to the reverse engineering processing is to start with smaller leaf subroutines, determine the function of these routines and then start working out to larger routines that call the smaller leaf routines. It is also extremely helpful to get the software system in a running state, attach a debugger and work through the code’s operation in a live environment.

What is the Purpose of Reverse Engineering a Product?

Product reverse engineering is often tackled in order to determine whether or not a given product infringes one or more patents, and more specifically the claims of the patents. This is a valid reason to reverse engineer a product as a patent owner has legal rights protected by the law associated with the intellectual property covered by the claims of the patent. The product reverse engineering may be initiated under a couple of conditions:

  1. A patent owner suspects a product is infringing their patent(s) but a legal case has not been initiated. In this case publicly available product documents are gathered and typically one or more products are obtained. The reverse engineering process may be very challenging due to limited publically available information. Hardware and possibly software reverse engineering is carried out without the benefit of engineering documents such as schematics or software source code. Typically evidence of use or claim charts are generated to demonstrate potential infringement if enough evidence can be found.
  2. A legal infringement case has been initiated. In this case the suspected infringer is typically required to produce product and engineering documentation and possibly software source code. An independent, and typically court approved, third party expert is brought in to handle the product reverse engineering. Because actual engineering documentation and source code is made available, the reverse engineering project is typically somewhat easier than the first case. But, there are still many challenges and depending on the product and the technology covered by the patent, the process can still be very challenging. If enough evidence can be found to indicate infringement, claim charts are typically generated showing how the given product is operating within the bounds of the patent claims.