Exception Branches Obfuscation

Authors

Mike Stepp (steppm@cs.arizona.edu)

Description

This obfuscation replaces branches with the throwing of exceptions. For each branch that has an empty stack before it, we replace that branch with a 'throw' instruction precedded by a call to s atstic helper method that will return an instance of a Throwable subclass. Depending on the runtime type of this object, the throw will redirect control flow to any of a few places. This is cleverly designed to exactly match the original control flow of the branches. JSRs will not be replaced.

Configuration

No additional configuration parameters are required to carry out this obfuscation.

References