Overload-Induction Method Renaming
PreEmptive Protection - DashO provides a sophisticated renaming technique called Overload-Induction™. Whereas most renaming systems simply assign one new name per old-name (i.e. getX()
will become a()
, getY()
will become b()
), Overload-Induction induces method overloading maximally. The underlying idea being that the algorithm attempts to rename as many methods as possible to exactly the same name.
The original source code before obfuscation:
private void calcPayroll(SpecialList employeeGroup) {
while (employeeGroup.hasMore()) {
employee = employeeGroup.getNext(true);
employee.updateSalary();
distributeCheck(employee);
}
}
And the reverse-engineered source after Overload-Induction:
private void a(a b) {
while (b.a()) {
a = b.a(true);
a.a();
a(a);
}
}
One of the things you probably noticed about the example is that the obfuscated code is more compact. A positive side effect of renaming is size reduction. For example, if you have a name that is 20 characters long, renaming it to a()
saves a lot of space (specifically 19 characters). This also saves space by conserving string heap entries. Renaming everything to a means that a is stored only once, and each method or field renamed to a
can point to it. Overload Induction enhances this effect because the shortest identifiers are continually reused.