This project showcases a new type of opaque predicate built to thwart symbolic execution based attacks. To achieve this, these new probabilistic opaque predicates do the following:
- Select a function parameter (satisfying some
properties) to create a symbolic variable.- Using the inverse CDF method, make the variable lie on a distribution which
we create.- Make probable/improbable statements about the transformed variable.
- profit.
Because probabilistic opaque predicates are just likely to take on a certain value but not deterministic, symbolic execution engines are unable to prove that they are opaque, i.e. prove that only one branch can be taken. By choosing a tiny probability of failiure (below that of an hardware error), the probabilistic opaque predicates have no practical impact on the obfuscated programs.
sariaki/POP
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|