Witajcie,
Bawię się różnymi obfuscatorami i zauważyłem, że część działa tak, że zamienia nazwy zmiennych w ciągi dziwnych znaków, ale ostatecznie po rekompilacji projekt się buduje.
Spotkałem się jednak z takim, który robi taki numer:
private int 0;
private int 1;
private int 2;
private int 3;
private double 0;
private double 1;
private double 2;
private double 3;
a potem dalej w kodzie:
this.0 = parameter0;
this.1 = parameter1;
this.2 = parameter3;
this.3 = parameter2;
this.0 = parameter3;
this.1 = parameter4;
this.2 = parameter5;
this.3 = parameter6;
Oczywiście po dekompilacji:
- po pierwsze zmienne mają błędne nazwy - liczby (to mogę pozamieniać np. 0 - zero, 1 - jeden)
- co bardziej zaskakujące wiele zmiennych (i metod) ma taką samą nazwę (parę zmiennych 0 i dużo metod 0)
Jak kompilator to rozumie? Czemu to działa, a po rekompilacji są same konflikty, dziesiątki deklaracji zmiennych o tych samych nazwach?