workings and witness first-hand how vulnerabilities find their way into computer
programs. Reversing software that has been infected with a virus, is a technique used by
the developers of anti-virus products to identify and neutralize new viruses or understand
the behavior of malware.
Programming languages like Java, which do not require computer programmers to
manage low-level system details, have become ubiquitous. As a result, computer
programmers have increasingly lost touch with what happens in a system during
execution of programs.  suggests that programmers can gain a better and deeper
understanding of software and hardware through learning reverse engineering concepts.
Hackers and crackers have been quite vocal and active in proving that they possess a
deeper understanding of low-level system details than their professional counterparts .
According to , there are four software security related reverse engineering
scenarios. Similar to development related reverse engineering—the scenarios cover a
broad spectrum of activities: ensuring that software is safe to deploy and use, protecting
clever algorithms or business processes, preventing pirating of software and digital media
such as music, movies, and books—and making sure that cryptographic algorithms are
not vulnerable to attacks. Fig. 3.1 summarizes the software security related reverse
engineering scenarios. The following are tasks one might perform in each of the
reversing scenarios :
➢ Detecting and Neutralizing iruses and Malware: Detect, analyze, or neutralize
(clean) malware, viruses, spyware, and adware.