Definition
What is an opaque predicate?
An opaque predicate is a conditional expression whose result is predetermined. It always evaluates true, or always false, but the value cannot be deduced by static analysis without effectively running the code.
On their own, opaque predicates do nothing visible. Their power is what they enable. They are the building block that makes dead code look reachable and makes obfuscated control flow resistant to analysis.
When an attacker analyzes a method, they need to know which branches can execute. Opaque predicates make that question unanswerable from the code alone, forcing slow, uncertain analysis.
