Beginning with a basic primer on reverse engineering-including computer internals, operating systems, and assembly language-and then discussing the various applications of reverse engineering, this book provides readers with practical, in-depth techniques for software reverse engineering. The book is broken into two parts, the first deals with security-related reverse engineering and the second explores the more practical aspects of reverse engineering. In addition, the author explains how to reverse engineer a third-party software library to improve interfacing and how to reverse engineer a competitor's software to build a better product. This is the first popular book to show how software reverse engineering can help defend against security threats, speed up development, and unlock the secrets of competitive products. It helps developers plug security holes by demonstrating how hackers exploit reverse engineering techniques to crack copy-protection schemes and identify software targets for viruses and other malware. The book offers a primer on advanced reverse-engineering, delving into "disassembly," code-level reverse engineering, and explains how to decipher assembly language.