50 likes | 147 Views
Computing means Interpreting. Abstraction. For large/real programs control/data flow is too complex for being understandable by humans: Reverse Engineering needs abstraction! Reverse Engineering needs automated tools!. Interpretation.
E N D
Computing means Interpreting • Abstraction • For large/real programs control/data flow • is too complex for being understandable by humans: • Reverse Engineering needs abstraction! • Reverse Engineering needs automated tools! • Interpretation • Abstract Interpretation is a general theory for approximating the semantics of dynamic systems • (Cousot & Cousot 1977)
More Concrete • observation Modeling the Adversary: Degrees of abstraction • More Abstract • observation
P Reverse Engineering is Interpreting • Each tool is an Abstract Interpretation • Proof • key • We can quantify the security achieved by looking at proof complexity!
Constrained Adversary • BinHunt • IDA Pro • BinDiff • HexRays • BinJuice • GDB • OllyDbg • Disassembler • O(P) Protecting is obscuring Interpretation • Transform code to make all tools blind • Tracing • Concolic • SMT • Decompiler • Theorem Prover • Slicing • SAT • Profiling • VMware • Emulation • Static Analysis • Dynamic Analysis • Monitoring • Proof • Removing noise means refining abstractions / complicating proofs! (Giacobazzi et al 2000 / 2012)
High Measuring Adversary Strength • Force the attacker to use automated tools (programs of large size and highly interconnected) • Design code transformations making tools blind • Determine lower bounds for proof complexity in obfuscated code • Measure the degree of noise/slowdown induced in obfuscation • Proof complexity • Low • High • Degree of obfuscation • Low • By constraining the adversary within a theorem prover we can quantify the security achieved from obfuscation