Name Obfuscation

Name obfuscation includes the obfuscation of class names, method names and parameters. The quality of the name obfuscation is dependant on the algorithms it uses; the more deliberate and complex these algorithms the better.

That's why we have devoted a lot of time to crafting our name obfuscation algorithm, and as a result Allatori is able to understand and work with any project of any complexity. Your software's architecture doesn't really matter to Allatori - unlike other obfuscators. It is able to distinguish and convert any dependencies and schemes of inheritance into incomprehensible, impenetrable code.

Allatori's name obfuscation seems to be one of the product's peculiarities; Allatori gives one name to as many elements as possible. As a result, there is a certain probability that one name will be used for naming the class, the class methods (e.g. methods, which differ only by argument types) and class variables. This means that the code is simply impossible to fathom, by machine and human alike.

As well as securing and protecting your code, name obfuscation also provides another handy benefit: minification, making it as small as possible. This is of great importance in applications where a smaller size is imperative - take applets for example.

The example below shows some of what Allatori can do:

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 obfuscated then decompiled:
    int a(int a[][], int a, int a) {
        int i = 0;
        for(int j = 0; j < a; j++) {
            for(int k = 0; k < a; k++)
                i += a[j][k];
        }
        return i;
    }