X hits on this document





14 / 120

Evaluating Software Quality and Robustness: Ensure the quality of software

before purchasing it by performing heuristic analysis of the binaries to check for

certain instruction sequences that appear in poor quality code.

Legacy Software Maintenance, Re-engineering, and Evolution: Recover the

design of legacy software modules when source is not available to make possible

the maintenance, evolution, and reuse of the modules.

3 Reverse Engineering in Software Security

From the perspective of a software company, it is highly desirable that the

company’s products are difficult to pirate and reverse engineer. Making software difficult

to reverse engineer seems to be in conflict with the idea of being able to recover the

software’s design later on for maintenance and evolution. Therefore, software

manufacturers usually don’t apply anti-reverse engineering transformations to software

binaries until it is packaged for shipment to customers. Software manufacturers will

typically only invest time in making software difficult to reverse engineer if there are

particularly interesting algorithms that make the product stand out from the competition.

Making software difficult to pirate or reverse engineer is often a moving target

and requires special skills and understanding on the part of the developer. Software

developers who are given the opportunity to practice anti-reversing techniques might be

in a better position to help their employer, or themselves, protect their intellectual

property. As [3] states, “to defeat a crook you have to think like one.” By reverse

engineering viruses or other malicious software, programmers can learn their inner


Document info
Document views157
Page views158
Page last viewedSat Oct 22 00:10:07 UTC 2016