Szukałem dobrych, darmowych obfuscatorów, nic ciekawego nie znalazłem, a więc zastanawiam się nad napisaniem swojego obfuscatora. Znalazłoby sie w nim oczywiście:
-zmiana nazw klas, metod, zmiennych na 'a', 'b' lub na cos takiego 'x42rwxgd534xu08'
-szyfrowanie stringów (bardzo prosty przykład)

//------------orginalny kod---------------
string myString = "4programmers.net";
// użycie: myString
//------------po obfuscacji---------------
class a
{
public String b;
public a(String b)
{
this.b = "";
for(int i = 0; i < b.length(); i++)
this.b += (char)((int)b.charAt(i) + 1);
}
}
a b = new a("3oqnfq\'lldqr-mds");
// użycie: b.b

-dodanie jakiś goto
-rozbicie klas, metod na mniejsze części

//------------orginalny kod---------------
public class MyClass
{
private String myString = "abc";
public void ShowMyString()
{
JOptionPane.showMessageDialog(null, myString);
}
}
//------------po obfuscacji---------------
public class MyClass_1
{
MyClass_2 myString = new MyClass_2();
public void ShowMyString()
{
JOptionPane.showMessageDialog(null, myString.myString);
}
}
class MyClass_2
{
public String myString = "abc";
}

i inne...

O co mi chodzi?
Profesjonalne obfuscatory tak zabezpieczają kod:

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;
}

Jak one to robią, że mamy np 2 identyczne zmienne jako argumenty w metodzie? a zapis "int a[][]"?
PS: czy gdyby potraktować kod moimi własnymi pomysłami także byłoby dobrze?