Edward Carter (ecarter@cs.arizona.edu)
The Irreducibility obfuscation algorithm add conditional branches to a method via opaque predicates so that the control flow graph of the resulting method is irreducible. For each pair of basic blocks (u,v), where v does not dominate u and u is reachable from v, a conditional branch from u to v is added with some fixed probability.
Consider the following code:
class A {
int i;
private float f;
public A(){ }
public void dummy() {
i=10;
f=12.2;
}
}
After Obfuscation:
???
There are no extra configuration parameters necessary to run this obfuscator.