___ ___ _ _ ____ ___ ____ ____ ____ _/ /_/ // \/ \ / \ / // \ / \ / \ /_ _/ // \ ___// // ___// ___// ___/ / //__// \___// // ___//___ //___ / /______//___\__/\ \_//____/___ / \____/ \____/ \__\ ~~~~~~~~tIMELESS~~~~~~~~ Member of fRACTUs`99 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Keygen ( ) RegKey ( ) Regfile ( ) Crack ( ) Appz ( ) | | | | Tutor (x) Progz ( ) Message ( ) Filez ( ) Other ( ) | | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tutor 1: ~~~~~~~~ Programm: Desktop Toys 2.0 Cracker: tIMELESS Benötigte Zeit: 5 Minuten (kein Witz) Benötigte Tools: W32Dasm 8.9, Hex-Editor Also, das geht so: ~~~~~~~~~~~~~~~~~~ Zuerst einmal desk.zip auf die Festplatte entpacken. Dann starten wir eine der EXE-Dateien (z.B. DriveClick.exe), die Codeabfrage kommt. Wir geben irgendeinen Scheiss ein....und..."Der Code ist ungültig!" erscheint in einer neuen MsgBox. Das merken wir uns! So nun geht´s ab in den W32Dasm, disassembling und "String Data Reference" wählen. Wir schauen nach "Der Code ist ungültig" und finden.... nix. Hmm. Was machen wir jetzt? Schauen wir doch mal in der DeskToys.dll nach, schliesslich kann der W32Dasm auch DLLs öffnen. Also ran, und nachschauen. Wir werden fündig "Der Code ist ung". Wir haben´s. Doppelklick und schon sind wir da. So, jetzt geht´s richtig los. Oberhalb der Reference finden wir die Zeile "Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004274E1(C) Jetzt gehen wir mal dahin (mit Goto Code Location aus der oberen Leiste). Wir finden folgendes vor: :004274E1 757D jne 00427560 (Adresse) (Hex) (Prozedur "jump if not equal") Aha, sollte der eingegebene Code falsch sein (jne) dann gehe zu Nachricht "Der Code ist ungültig". Klar? Wie könnte man nun diese Prozedur umgehen? Jmp und je bringen hier nichts also hilft uns nur noch ein NOP (No Operation Point) der die ganze Prozedur einfach weitergibt. Dies verändern wir mit einem Hex Editor (Hex Workshop) Den Offset dafür finden wir im W32Dasm unten in der Leiste (Der Streifen muss immer noch auf "jne 00427560" stehen. Alles was wir jetzt noch tun müssen ist DeskToys.dll mit einem Hex Editor zu öffnen zum Offset 000268E1 (in Hex) zu gehen und den Code mit zwei 90gern zu patchen. Speichern. EXE starten. Irgendwas eingeben. Tadaaa. Ich bin lizensierter User. Möglichkeit 2: RegKey finden Auf diese Möglichkeit bin ich gestossen als ich die DLL schon gepatcht hatte. Ich stöberte in meiner WinReg ein bisschen rum und fand unter [HKCU] - Software - ZOK-Software - DesktopToys etwas interessantes, nämlich [HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys] "RegCode"="4574128" "RegOwner"="tIMELESS" Aha, der RegCode sowie der UserName werden in der WinReg gespeichert. Von da aus wird er immer beim Programmstart abgefragt. Nun hatte ich bei der Abfrage des RegCodes 7777777 eingegeben und in der WinReg wurde dieser Wert verschlüsselt: 4574128 steht da. Hmm. Theoretisch könnte man nun doch herausfinden wie das Programm mit dem bei der Abfrage ge- speicherten Wert umgeht. Probieren geht über studieren. Also geben wir nun in der WinReg als RegCode irgendwas ein (damit das Programm denkt, es sei noch nicht registriert). F5 drücken (für Updating) und dann wieder eines der DesktopToys starten. Bingo, wir müssen wieder die Daten einge- ben. Dank der gecrackten DLL gibt es ja keine Probleme. Geben wir hier nun mal 8888888 ein. HiHi wir sind wieder registriert. Nun schaun wir mal in der WinReg, und wir sehen..... [HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys] "RegCode"="4574128" "RegOwner"="tIMELESS" Ob das nun reiner Zufall ist? Wieder das gleiche Ergebniss. Wir wiederholen den Schritt und geben 1234567 ein. Das Ergebnis: [HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys] "RegCode"="4574128" "RegOwner"="tIMELESS" Wir geben nicht auf, wiederholen den Schritt und geben dieses Mal an der Abfrage eine... sagen wir... 33stellige Zahl ein. Wieder sind wir registriert und wieder steht in der WinReg: [HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys] "RegCode"="4574128" "RegOwner"="tIMELESS" Was folgert der schlaue Cracker daraus? Richtig! Wenn das Programm die Informationen aus der Registrierungsangabe einliest und (dank der kooperativen ;-) DLL) sie als richtig einstuft, speichert es in der WinReg als RegCode nur einen Wert, der dem Programm erzählt, dass es registriert ist. ~~~~~~~~~~~ DesktopToys: "Hallo WinReg, schöner Tag heute. Ach, mal ne Frage: Bin ich registriert?" WinReg: "Hallo Programm, da muss ich mal schauen. [wenige Nanosekunden später] Aha, hier haben wirs ja. Stimmt 4574128?" DesktopToys: "Ja, FREU, ich bin registriert!" ~~~~~~~~~~~~ Da wir vorher ja nicht wissen können wie der Code lautet bringt uns das natürlich nur etwas, wenn wir davor die DLL gecrackt haben, oder wir das Originalprogramm gekauft haben (schön blöd!). Aber es ist trotzdem interessant zu wissen, wie man ein Programm noch cracken kann. F: "Funktioniert das auch mit der ungecrackten DLL?" A: "Ja, wir müssen nur das Programm mit unserem Namen und der Nummer 4574128 registrieren, denn das ist der einzige Freischaltcode der das Programm registriert! Und, wieder was gelernt? JAAAAAAAAAAA! ~~~~~~~~~~~~~ Für Fragen und Anregungen: tIMELESS99@gmx.net