X hits on this document





43 / 120

in relation to the Wintel animated tutorial, is an activity related to the obfuscation of a

program, which we discuss next.

7.2 Basic Obfuscation of Wintel Machine Code

Obfuscating the Program calls for performing transformations to the source code

and/or machine code that would render either extremely difficult to understand but

functionally equivalent to the original. There are many kinds of transformations one can

apply with varying levels of effectiveness, and as [5] states “an obfuscation

transformation will typically have an associated cost (such as) : larger code, slower

execution time, or increased runtime memory consumption (by the machine code).”

Because of the high-level nature of intermediate languages like Java and .NET bytecode,

there are free obfuscation tools that can perform fairly robust transformations on

bytecode so that any attempt to decompile the program will still result in source code that

compiles, but is near impossible to understand because of the obfuscation techniques that

are applied. [19] states “Obfuscation (of Java bytecode) is possible for the same reasons

that decompiling is possible: Java bytecode is standardized and well documented.”

Unfortunately, the situation is very different for machine code because it is not

standardized; instruction sets, formats, and program image layouts vary depending on the

target platform architecture. The side-effect of this is that tools to assist with obfuscating

machine code are much more challenging to implement and expensive to acquire; no free

tools were found at the time of this writing. One such commercial tool, EXECryptor

(www.strongbit.com) is an industrial-strength machine code obfuscator that when applied


Document info
Document views290
Page views291
Page last viewedFri Oct 28 10:14:46 UTC 2016