100 likes | 133 Views
Code Obfuscation Midterm Presentation. Yakkob Iyun Guided by Eitan Koch. Topics to be discussed. Problem Definition Project Purpose – Building Obfuscator Obfuscation Quality Obfuscation Using Opaque Predicates Future Planning. Problem Definition.
E N D
Code Obfuscation Midterm Presentation Yakkob Iyun Guided by Eitan Koch
Topics to be discussed • Problem Definition • Project Purpose – Building Obfuscator • Obfuscation Quality • Obfuscation Using Opaque Predicates • Future Planning
Problem Definition • All programming languages generate output files (binaries , byte code files ect.) that are distributed throughout the internet. • These output files can be reverse engineered. So we need to Defend our intellectual property in a way that minimized the additional overhead resources Lets Obfuscate our code!!!
Project purpose - Building Obfuscator • Creating an application that for a given source code , generates an obfuscated one that has the exact same functionality as the original one. Compilation Output Source code Internet (Server – Client) Decopmilation Obfuscated Source code Obfuscated Source code Application Execute Deobfuscation Compilation Output Source code
Obfuscation Quality • Potency: How much obscurity it adds to the Program • Resilience: How difficult is it to break for an automatic deobfuscator • Stealth: How well the obfuscated code blends with the rest of the program • Cost: How much computation overhead it adds to the obfuscated application
Obfuscation Using Opaque Predicate • Opaque Predicate : an expression that evaluates to either "true" or "false“ , for which its outcome is known to the obfuscator and is very difficult and even impossible for the deobfuscator to evaluate , without running the application itself. • Deducing the real control flow by the deobfuscator of the application is a difficult task • We will introduce Opaque Predicate to change and complicate the control flow mechanism
Opaque Predicate Benefits: • Increased number of predicates to deduce • Inserting Dead and irrelevant code: • Introduce a Graph ADT to the code. • Introduce a code that manipulates the Graph. • Building Opaque Predicate with User Input names according to specific invariants that the graph structure holds. T Dead Code Opaque Predicate Manufacture:
Opaque Predicate Benefits: • The Introduced Graph ADT code and the code that manipulates the Graph , blends well with normal used applications. • The predicate names are user defined so they resemble the given code. • The added Predicate are easily to deduce by the obfuscator but hard to deduce by the deobfuscator. • Elevated execution cost – both memory consumption and calculation overhead. Opaque Predicate disadvantage:
Future Planning • Implementing The Application ~10 Weeks • Making Final Presentation ~ 1 Week • Final Presentation - 15/3/2009