Ginger Myles
(mylesg@cs.arizona.edu)
Miriam Miklofsky
(miriamm@cs.arizona.edu)
This algorithm obfuscates a class. The obfuscation is done by inserting a bogus field into a class and then making assignments to that field in specific locations throughout the code. The specific locations are determined by the random selection of a "sister" field. Wherever assignments are made to the sister field an assignment to the bogus field also occurs.
To obfuscate the code a new field in added to the class and then assignments are made to this field. The way the obfuscation works is that a "sister" field is identified which is used to insert an assignment to the new field. The sister field is chosen randomly. Everytime there is an assignment to the sister field an assignment to the new field is inserted into the code.
newFieldName = "sm$" + i sisterFieldIndex = randomNumberGen() % fields.length insert newFieldName in the class for (each method in class){ search instruction list for assignment to sisterField insert assignment to newField }
There are no extra configuration parameters necessary to run this obfuscator.