Cracking in JAVA by noName

Cel      : Expandable Menu Applet        [ ENTERCD#1 7/98 ]
Narzedzia: JAD - dekompilator klas JAVY  [ http://web.unicom.com.cy/~kpd/jad.html ]
           JDK - kompilator JAVY         [ http://java.sun.com/ ]
Wstep:

Dzisiaj przedstawie zupelnie nowe podejscie do crackowania, a mianowicie crackowanie programów napisanych w JAVIE. JAVA zdobywa coraz wieksza popularnosc i mozemy sie spodziewac coraz wiekszej ilosci produkcji napisanych w tym jezyku. Po naszej (crackerów) stronie stoi "sklonnosc" klas JAVY do latwej dekompilacji.

A wiec zaczynamy:

Program sklada sie z pliku .exe generujacego parametry appletu. Plików z przykladami i dwóch plików .class (pliki appletu). Kiedy uruchomimy plik przykladu pierwsze co rzuca sie nam w oczy to czarny prostokat z napiem "UNREGISTERED" - trzeba cos z tym zrobic. Dekompilujemy plik ExpandMenu.class (piszemy "jad ExpandMenu.class"). W wyniku uzyskalismy plik ExpandMenu.jad. Przegladarka wyswietla applet przez wywolanie jego funkcji 'paint()'. Szukamy jej w otrzymanym listingu:

    public void paint(Graphics g)
    {
        offscreenGraphics.setColor(backcolor);
        offscreenGraphics.fillRect(0, 0, size().width, size().height);
        if(backimgactive)
        {
            Image image = getImage(backimgURL);
            offscreenGraphics.drawImage(image, 0, 50, size().width, size().height - 50, this);
        }
        offscreenGraphics.setColor(Color.black);
        offscreenGraphics.fillRect(0, 0, size().width, 50);
        offscreenGraphics.setColor(Color.orange);
        offscreenGraphics.setFont(new Font(nodefont.toString(), 3, 10));
        offscreenGraphics.drawString("Expandable Menu Applet (unregistered)", 5, 20);
        offscreenGraphics.drawString("Copyright ApplePie Software 1998", 5, 40);
Teraz najlepiej usunmy linie :
[...].setColor(Color.black);                     <-- ustawienie czarnego koloru
[...].fillRect(0, 0, size().width, 50);          <-- narysowanie prostokata
[...].setColor(Color.orange);                    <-- ustawienie pomaranczowego koloru
[...].setFont(new Font(nodefont.toString(), 3, 10));   <-- ustawienie czcionki
[...].drawString("Expandable Menu Applet (unregistered)", 5, 20); <-- wiadomo co
[...].drawString("Copyright ApplePie Software 1998", 5, 40);      <-- tez wiadomo
Linie:
        tree[0].top = 50 + TOPMARGIN;
Zmienmy na:
        tree[0].top = TOPMARGIN;
(Margines 50 pikseli potrzebny byl na tekst "unregistered:) A:
   offscreenGraphics.drawImage(image, 0, 50, size().width, size().height , this);
Na:
   offscreenGraphics.drawImage(image, 0, 0, size().width, size().height , this);
(Aby tlo zaczynalo sie od samej gory)

Teraz wystarczy skompilowac plik ExpandMenu.java ("javac ExpandMenu.java").

Zakonczenie:

Autor chce od nas 10 bucksów, a nawet nie zadal sobie trudu, zeby zmienic nazwy zmiennych na jakies trudniejsze do zinterpretowania... Jesli checsz dalej uzywac ten program - zaplac za niego (napisz autorowi, ze juz masz zarejestrowany plik .class i nie musi sie fatygowac, aby Ci go wyslac... :)