2008-11-01(Sat)
Basic Approaches to Antireversing
There are several antireversing approaches, each vcp braindumpswith its own set of advantages
and disadvantages. Applications that are intent on fighting off attackers
will typically use a combination of more than one of the approaches discussed.
Eliminating Symbolic Information The first and most obvious step in
hindering reversers is to eliminate any obvious textual information from
the program. In a regular non-bytecode-based compiled program, this
simply means to strip all symbolic information from the program executable.
In bytecode-based programs, the executables often contain large
amounts of internal symbolic information such as class names, class
member names, and the names of instantiated global objects. This is true
for languages such as Java and for platforms such as .NET. This information
can be extremely helpful to reversers, which is why it absolutely
must be eliminated from programs where reversing is a concern. The
most fundamental Testking vcp-310feature of pretty much every bytecode obfuscator is
to rename all symbols into meaningless sequences of characters.
Obfuscating the Program Obfuscation is a generic name for a number of
techniques that are aimed at reducing the program’s vulnerability to any
kind of static analysis such as the manual reversing process described in
this book. This is accomplished by modifying the program’s layout,
logic, data, and organization in a way that keeps it functionally identical
yet far less readable. There are many different approaches to obfuscation,
and this chapter discusses and demonstrates the most interesting
and effective ones.
Embedding Antidebugger Code Another common antireversing
approach is aimed specifically at hindering live analysis, in which a
reverser steps through the program to determine details regarding how
it’s internally implemented. The idea is to have the program intentionally
perform operations that would somehow damage or disable a
debugger, if one is attached. Some of these approaches involve simply
detecting that a debugger is present and terminating the program if it is,
while others involve more sophisticated means of interfering with
debuggers in case Pass4sure vcp-310
one is present. There are numerous antidebugger
approaches, and many of them are platform-specific or even debuggerspecific.
In this chapter, I will be discussing the most interesting and
effective ones, and will try to focus on the more generic techniques.
and disadvantages. Applications that are intent on fighting off attackers
will typically use a combination of more than one of the approaches discussed.
Eliminating Symbolic Information The first and most obvious step in
hindering reversers is to eliminate any obvious textual information from
the program. In a regular non-bytecode-based compiled program, this
simply means to strip all symbolic information from the program executable.
In bytecode-based programs, the executables often contain large
amounts of internal symbolic information such as class names, class
member names, and the names of instantiated global objects. This is true
for languages such as Java and for platforms such as .NET. This information
can be extremely helpful to reversers, which is why it absolutely
must be eliminated from programs where reversing is a concern. The
most fundamental Testking vcp-310feature of pretty much every bytecode obfuscator is
to rename all symbols into meaningless sequences of characters.
Obfuscating the Program Obfuscation is a generic name for a number of
techniques that are aimed at reducing the program’s vulnerability to any
kind of static analysis such as the manual reversing process described in
this book. This is accomplished by modifying the program’s layout,
logic, data, and organization in a way that keeps it functionally identical
yet far less readable. There are many different approaches to obfuscation,
and this chapter discusses and demonstrates the most interesting
and effective ones.
Embedding Antidebugger Code Another common antireversing
approach is aimed specifically at hindering live analysis, in which a
reverser steps through the program to determine details regarding how
it’s internally implemented. The idea is to have the program intentionally
perform operations that would somehow damage or disable a
debugger, if one is attached. Some of these approaches involve simply
detecting that a debugger is present and terminating the program if it is,
while others involve more sophisticated means of interfering with
debuggers in case Pass4sure vcp-310
one is present. There are numerous antidebugger
approaches, and many of them are platform-specific or even debuggerspecific.
In this chapter, I will be discussing the most interesting and
effective ones, and will try to focus on the more generic techniques.


