August 1999

"JPEG Optimizer V3.07"

Win Code Reversing

 

vom Instructor

 
 

Finden der korrekten Serial mit SoftIce

   

 

   Programm- Name:jpopt.exe    Programm-Typ: Grafik-Tool

                        Programm- URL:   Hier

              Programm-Größe:390K  

 
                          Tools :                      Softice V4.0                                        

Level

Leicht ( )  Mittel ( x )  Schwer (   ) 

 

 

 

Die Einleitung

 
Der Autor von  JPEG Optimizer sagt :       "JPEG Optimizer wurde entwickelt, um die kleinstmöglichen JPEG Images herzustellen. Bis zu 50% Einsparung der Originalgröße  der Images sind möglich, das bringt enorme Geschwindigkeitsvorteile beim Übertragen ihrer Webseiten  und spart Platz auf Ihrer Festplatte". 

Das Sicherungssystem

 Das Sicherungssystem des Programmes liegt in einer einfachen Registrationsnummer, die bei Richtigkeit in der Registrierungsdatei unter folgendem Abschnitt gespeichert wird, sonst ist der Abschnitt " Code " leer.
 
HKEY_LOCAL_MACHINE\SOFTWARE\XA Tech\JpegOpt
Mit dem folgenden Eintrag:
CODE="XXXXXX"
 
Die X' stellen den 6 stelligen Code dar. Um den Registrationscode einzugeben, gehen wir im Programm in das Menü Help/Register.

Die Lösung

 
Ich gab eine Seriennummer ein,setzte die üblichen Breakpoints in Softice zum Textauslesen und mußte leider feststellen, daß Softice nicht reagierte. Daraufhin fertige ich ein Deadlisting an,  suchte markante Textstrings. Ich konnte aber weder eine Fehlermeldung, noch andere ' verdächtige ' Stellen finden. Daraufhin sah ich mir noch mal das Programm an, und bemerkte in der Titelzeile den String  ' -Unregistered '. Damit ging ich jetzt noch mal ins Deadlisting und fand einen Eintrag hier an dieser Stelle:

Doppelklick auf den Eintrag und ich sprang zu folgendem Codeabschnitt:



Um zu sehen, woher der Aufruf kam, scrollte ich nach oben bis hier hin, bis zu Adresse 40471A, das sah ja sehr interessant aus. Ich sah einen Call mit anschließender Überprüfung. Das wollte ich mir näher ansehen.

Ich rief Softice auf und setzte einen Breakpoint auf die Adresse 40471A, danach tracte ich mit F10 den Code durch und beobachtete die Register.Von Adresse 429EF1 bis 429F10 wurden die ersten 6 Stellen der Serial nach Register EBX verschoben, danach erfolgte ein Vergleich der gefakten Serial mit einer vorgegebenen Serial, die Buchstabenweise abgelegt war, siehe dazu den folgenden Codeabschnitt, die rot markierten Stellen enthalten die Auflösung dieses Cracks.



Das Finale

Wir können jetzt entweder die Serial auslesen und unser Programm damit registrieren oder die bedingten Sprünge nach den Compares ausnoppen. Das wars mal wieder...

-- Mein Dank geht an 'Sandman' für seine hervorragenden Tutorials --


Tutorial von:          Instructor
Page gestaltet:      17.August 1999