Definición
¿Qué es un opaque predicate?
Un opaque predicate es una expresión condicional cuyo resultado está predeterminado. Siempre evalúa a true, o siempre a false, pero el valor no se puede deducir mediante análisis estático sin llegar a ejecutar el código.
Por sí solos, los opaque predicates no hacen nada visible. Su poder está en lo que habilitan. Son la pieza de construcción que hace que el código muerto parezca alcanzable y que el control flow ofuscado resista el análisis.
Cuando un atacante analiza un método, necesita saber qué ramas pueden ejecutarse. Los opaque predicates dejan esa pregunta sin respuesta solo con el código, forzando un análisis lento e incierto.
