Flow Obfuscation
It is obvious, that with the help of name obfuscation it is possible to obtain a certain level of protection of your product, and, probably, it will stop an unskilled or lazy intruder, but an experienced hacker will only lose some time by converting a reverse engineered code into a readable one. That's why serious obfuscators' developers do implement at least obfuscation of the control flow.
Processing your code in a special way Allatori changes the standard Java constructions (loops, conditional and branching instructions) for the series of 'goto' instructions. And what's more, in cases where it's possible, the series of commands alters in the way so that after decompilation it would be impossible to find the appropriate Java equivalent.
The mixture of unique methods used in Allatori makes the code safe to the maximum, often causing the process of decompilation to fail. To eliminate all the possible doubts and to make you sure, that Allatori is all you need you can just check an example of Allatori's work:
Original source:
/**
* Returns sum of the elements in the first rowsCount rows
* and columnsCount columns.
*/
int sumOfElements(int[][] matrix, int rowsCount, int columnsCount) {
int sum = 0;
for (int row = 0; row < rowsCount; row++)
for (int column = 0; column < columnsCount; column++)
sum += matrix[row][column];
return sum;
}
Name and Flow obfuscated then decompiled:
int a(int a[][], int a, int a) {
int i = 0;
int j = 0;
goto _L1
_L6:
int k = 0;
goto _L2
_L4:
i += a[j][k];
++k;
_L2:
a;
JVM INSTR icmplt 17;
goto _L3 _L4
_L3:
++j;
_L1:
a;
JVM INSTR icmplt 10;
goto _L5 _L6
_L5:
return i;
}



















