August 1999 |
"JPEG Optimizer V3.07" |
Win Code Reversing |
|
vom Instructor |
|
Finden der korrekten Serial mit SoftIce |
|
|
Programm- URL: Hier
|
||
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