computing means interpreting

5
Abstractio n Interpretati on Abstract Interpretation is a general theory for approximating the semantics of dynamic systems (Cousot & Cousot 1977) Computing means Interpreting For large/real programs control/data flow is too complex for being understandable by humans: Reverse Engineering needs abstraction! Reverse Engineering needs automated tools!

Upload: zahur

Post on 06-Jan-2016

18 views

Category:

Documents


2 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Computing means Interpreting

Abstraction

Interpretation

Abstract Interpretation is a general theory for approximating the semantics of dynamic systems (Cousot & Cousot 1977)

Computing means Interpreting

For large/real programs control/data flowis too complex for being understandable by humans:

Reverse Engineering needs abstraction!Reverse Engineering needs automated tools!

Page 2: Computing means Interpreting

More Concrete

observation

More Abstractobservation

Modeling the Adversary: Degrees of abstraction

Page 3: Computing means Interpreting

P

We can quantify the security achieved by looking at proof complexity!

key

Proof

Reverse Engineering is Interpreting

Each tool is an Abstract Interpretation

Page 4: Computing means Interpreting

O(P)

Removing noise means refining abstractions / complicating proofs! (Giacobazzi et al 2000 / 2012)

Proof

Tracing

Monitoring

Slicing

Profiling

Decompiler

Disassembler

Static Analysis

Dynamic Analysis

SAT

VMware

SMT

BinDiffBinHunt

BinJuice

HexRays

GDB OllyDbg

IDA Pro

Th

eore

m P

rover

Constrained Adversary

Concolic

Emulation

Protecting is obscuring Interpretation

Transform code to make all tools blind

Page 5: Computing means Interpreting

Pro

of

com

ple

xit

y

Low

High

High Degree of obfuscation Low

Measuring Adversary Strength

By constraining the adversary within a theorem prover we can quantify the security achieved from obfuscation

Force the attacker to use automated tools (programs of large size and highly interconnected)Design code transformations making tools blindDetermine lower bounds for proof complexity in obfuscated codeMeasure the degree of noise/slowdown induced in obfuscation