We can help you evaluate your intellectual property. We have extensive experience reverse engineering hardware, software, and firmware, and our expertise covers software, hardware, and all the systems in between. We can sift through volumes of information related to patent infringement and other IP cases to give you the knowledge you need.
By analyzing a product's structure, function and operation, we can draw conclusions about its design decisions with little or no knowledge of how it was originally produced.
If you would like to discuss your project, or better understand how reverse engineering can help, please contact us.
The process
Reverse engineering a product to compare its operation with the claims of a patent (or a set of patents) is usually a very challenging process. It starts with reading and understanding the patents and the invention their claims cover. The next step is gathering as much information as possible about whether the product uses the claimed invention. Sometimes product documentation is enough to give a strong indication. Most of the time, though, further reverse engineering is needed to show whether the product is likely to infringe.
The level and type of reverse engineering depends heavily on the product and on the technology of the claimed invention. Common approaches include:
- Black-box testing. Specific tests are set up and run on the product to reveal whether it operates within the constraints of the patent claims.
- Circuit extraction. For electronic products, a schematic is generated by careful (usually very tedious) tracing of the circuitry. The circuit's operation is then analyzed and compared with the patent claims, which takes real expertise in electronic engineering.
- Software extraction and reverse engineering. In embedded systems, software or firmware is often stored in flash, microcontroller memory or another non-volatile memory. The bytes are extracted from the memory device (which has challenges all its own) and disassembled for the specific processor. Disassembled code has no variable names, function names or comments, so the engineer must understand the processor, its assembly language, how to trace functions through the code, and the patented algorithms themselves. For embedded systems they must also understand the hardware the software runs on and the physics of the process being controlled.
DireenTech has more than 14 years of experience successfully reverse engineering both electronic hardware and software, and mapping highly complex products' operation to the claims of a wide range of technology patents.
Reverse engineering software
Software reverse engineering demands a wide range of engineering skills, especially when source code is not available. For embedded systems, the first steps are identifying the microprocessor, microcontroller or digital signal processor and obtaining its documentation, including the instruction set manuals. Once the bytes are extracted from memory, a disassembler converts the raw data into assembly code.
One of the best tools for this is Hex-Rays IDA, which disassembles code for many processors, including Intel and ARM processors, DSPs and a wide range of microcontrollers, and can decompile x86 and ARM code into C-like source. Even with tools like IDA, software reverse engineering takes a great deal of skill and ingenuity.
The usual approach is to start with small leaf subroutines, work out what they do, and then move outward to the larger routines that call them. It also helps enormously to get the system running, attach a debugger, and step through the code live.
Products we have reverse engineered include database systems, media players, audio signal processing and compression, modems and modem compression algorithms, Coriolis mass flow meters, and more. We have discovered and analyzed complex digital signal processing algorithms and other pertinent operations within these products.
Why reverse engineer a product?
Product reverse engineering is often done to determine whether a product infringes one or more patents, and more specifically their claims. A patent owner has legal rights to the intellectual property covered by those claims. The work usually begins in one of two situations:
- Before a case is filed. A patent owner suspects a product infringes, but no case has been filed. Publicly available documents are gathered and one or more products are obtained. Without schematics or source code, the work can be very challenging. If enough evidence is found, evidence-of-use documents or claim charts are prepared to show potential infringement.
- During litigation. Once a case is filed, the accused infringer is usually required to produce product and engineering documentation, and possibly source code. An independent, typically court-approved, third-party expert handles the reverse engineering. With real documentation available the work is somewhat easier, but depending on the product and technology it can still be very challenging. If the evidence indicates infringement, claim charts show how the product operates within the bounds of the patent claims.