This page has been robot translated, sorry for typos if any. Original content here.

QSetup Composer 7 Hacking Tutorial

Hacking Tutorial QSetup Composer 7 (von rel4nium)

Werkzeuge:
  PEiD
 
  Upx_mod
 
  Kwdsm
 
  OlyDGB
 
  Hiew
 
  tpe
 

Zunächst bestimmen wir, womit unser Opfer voll ist, und führen dazu PEiD durch:
UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) -Stub -> Markus & Laszlo
Jetzt brauchen wir einen Uppacker für UPX, der Upix selbst ist zu robust, also werden wir Upx_mod verwenden, zum Entpacken müssen wir nur Upx_mod wie folgt ausführen:
unp1_24.exe -d QSetup.exe
Damit das Programm entpackt wird, werden wir alle anderen Operationen auf dem entpackten exe-shnik, Größe 1.69, durchführen. Nun müssen wir sehen, welche Schutzarten im Programm verwendet werden:


Wir haben also 3 Arten des Schutzes. Jetzt müssen wir diese Ausdrücke / Wörter im Disassembler finden und KWdsm ausführen. Entscheide, wonach wir suchen:
1) Ungültiger Registrierungscode!
2) Nicht registrierte Kopie (DEMO)
3) QSetup Composer (DEMO)
Nachdem diese Ausdrücke gefunden wurden und Near-Funktionen gefunden wurden (ich suche immer nach Near-Übergängen einer Funktion, d. H. Je, jne, jmp;):
Ungültiger Registrierungscode! - jne 0051D4FB
Nicht registrierte Kopie - jmp 0051D369
QSetup Composer - jne 0051DBA8
Ich werde es noch einmal erklären. Wir haben nach Referenzpunkten für das Hacken gesucht. Wenn wir den Fehler nicht anhand der Funktion finden können, werden wir die mit DASM gefundenen verwenden. Versuchen wir zum Spaß, nach Funktionen zu suchen:
bpx MessageBoxA
und wir finden nichts, daher war es nicht umsonst, dass wir in dasma) nach Phrasen gesucht haben. Die Phrase Nummer eins ist:
0051D4DF |. 75 1A JNZ SHORT QSetup.0051D4FB
Diese Funktion ist für uns nicht interessant, da sie folgende Schlüsse ziehen soll:
0051D510 |. BA 70D65100 MOV EDX, QSetup.0051D670; ASCII "Sie müssen über Administratorrechte verfügen, um sich zu registrieren!"
=> wir werden den obigen Code untersuchen:
  0051D47A |.  84DB TEST BL, BL
 0051D47C 74 57 JE SHORT QSetup.0051D4D5 0051D47E |.  E8 25B2FBFF CALL QSetup.004D86A8
 0051D483 |.  84C0 TEST AL, AL
 0051D485 74 0D JE KURZ QEinrichtung 0051D494 0051D487 |  8D45 FC LEA EAX, DWORD PTR SS: [EBP-4]
 0051D48A |.  BA 80D55100 MOV EDX, QSetup.0051D580;  ASCII "QSetup PRO registriert OK!"
 0051D48F |.  E8 0077EEFF CALL QSetup.00404B94
 0051D494 |> E8 A7B1FBFF CALL QSetup.004D8640
 0051D499 |.  84C0 TEST AL, AL
 0051D49B |.  74 0D JE SHORT QSetup.0051D4AA
 0051D49D |.  8D45 FC LEA EAX, DWORD PTR SS: [EBP-4]
 0051D4A0 |.  BA A4D55100 MOV EDX, QSetup.0051D5A4;  ASCII "QSetup LITE Registered OK!"
 0051D4A5 |.  E8 EA76EEFF CALL QSetup.00404B94
 0051D4AA |> 68 C8D55100 PUSH QSetup.0051D5C8;  ASCII "| & OK | & Abbrechen | & Ja | & Nein | & Abbrechen | & Wiederholen | & Ignorieren |"
 0051D4AF |.  6A 00 PUSH 0
 0051D4B1 |.  8D45 F8 LEA EAX, DWORD PTR SS: [EBP-8]
 0051D4B4 |.  8B4D FC MOV ECX, DWORD PTR SS: [EBP-4]
 0051D4B7 |.  BA 00D65100 MOV EDX, QSetup.0051D600;  ASCII " Herzlichen Glückwunsch
 

0051D4BC |. E8 4779EEFF CALL QSetup.00404E08 0051D4C1 |. 8B55 F8 MOV EDX, DWORD PTR SS: [EBP-8] 0051D4C4 |. B9 28D65100 MOV ECX, QSetup.0051D628; ASCII "Achtung" 0051D009D628 1 0051D4CE | E8 39B1F7FF CALL-QSetup.0049860C 0051D4D3 | EB 61 JMP SHORT QSetup.0051D536 0051D4D5 |> 8B45 FC MOV EAX, DWORD PTR SS: .. [EBP-4] 0051D4D8 | E8 2BACFBFF CALL-QSetup.004D8108 0051D4DD | .. 84C0 TEST AL, AL 0051D4DF 75 1A JNZ KURZ QSetup.0051D4FB 0051D4E1 |. 68 C8D55100 DRÜCKEN QSetup.0051D5C8; ASCII | | OK | & Abbrechen | & Ja | & Nein | & Abbrechen | & Wiederholen | & Ignorieren | .B9 3CD65100 MOV ECX, QSetup.0051D63C; ASCII "Fehler" 0051D4ED | .BA 4CD65100 MOV EDX, QSetup.0051D64C; ASCII "Ungültiger Registrierungscode!"

Ich weiß nichts über dich, aber ich interessierte mich für die Zeilen:
 0051D47C 74 57 JE KURZ QEinrichtung 0051D4D5
 0051D485 74 0D JE KURZ QEinrichtung 0051D494
Lassen Sie uns herausfinden, wohin sie führen, wie Sie sehen können, und zwar an einem Ort:
 0051D4D5 |> 8B45 FC MOV EAX, DWORD PTR SS: [EBP-4]
Sie können verstehen, dass dieser Übergang zur Phrase illegaler Registrierungscode geht!
Wir ändern sofort 2 Übergänge, da, wenn wir 1 ändern, es keinen Effekt gibt:
 0051D47C 74 57 JNE SHORT QEinrichtung 0051D4D5
 0051D485 74 0D JNE SHORT QEinrichtung 0051D494
Wenn wir also die Schlussfolgerungen der Funktionen ändern, erhalten wir:
QSetup PRO Registriert OK!
Aber es ist noch zu früh, um sich darüber zu freuen, denn 2 andere Verteidigungen werden nicht gehackt, und selbst wenn wir ein lustiges Fenster sehen, in dem das Programm registriert ist, wird dies nicht der Fall sein, da 2 andere Beschriftungen vorhanden sind.
Wir werden uns mit ihnen befassen, in der jmp-Warteschlange 0051D369 werden wir nicht zögern und sofort auf den Code über dieser Funktion achten:
  0051D2F3 |.  84C0 TEST AL, AL
 0051D2F5 |.
  74 4F JE SHORT QSetup.0051D346 0051D2F7 |.  E8 ACB3FBFF CALL QSetup.004D86A8
 0051D2FC |.  84C0 TEST AL, AL
 0051D2FE |.
  74 0D JE SHORT QSetup.0051D30D

 0051D300 |.  8D45 FC LEA EAX, DWORD PTR SS: [EBP-4]
 0051D303 |.  BA 94D35100 MOV EDX, QSetup.0051D394;  ASCII "Registrierte Kopie (PRO)"
 0051D308 |.  E8 8778EEFF CALL QSetup.00404B94
 0051D30D |> E8 2EB3FBFF CALL QSetup.004D8640
 0051D312 |.  84C0 TEST AL, AL
 0051D314 |.  74 0D JE SHORT QSetup.0051D323
 0051D316 |.  8D45 FC LEA EAX, DWORD PTR SS: [EBP-4]
 0051D319 |.  BA B4D35100 MOV EDX, QSetup.0051D3B4;  ASCII "Registrierte Kopie (LITE)"
 0051D31E |.  E8 7178EEFF CALL QSetup.00404B94
 0051D323 |> 8B55 FC MOV EDX, DWORD PTR SS: [EBP-4]
 0051D326 |.  8B83 DC060000 MOV EAX, DWORD PTR DS: [EBX + 6DC]
 0051D32C |.  E8 6379F5FF CALL QSetup.00474C94
 0051D331 |.  8B83 DC060000 MOV EAX, DWORD PTR DS: [EBX + 6DC]
 0051D337 |.  8B40 68 MOV EAX, DWORD PTR DS: [EAX + 68]
 0051D33A |.  BA 180000FF MOV EDX, FF000018
 0051D33F |.  E8 989CF0FF CALL QSetup.00426FDC
 0051D344 |.  EB 23 JMP SHORT QSetup.0051D369
 0051D346 |> BA D4D35100 MOV EDX, QSetup.0051D3D4;  ASCII "Nicht registrierte Kopie (DEMO)"
Wir sehen einen typischen Schutz, aber es ist schon einfacher, diese Funktion JE SHORT QSetup.0051D346 zeigt, wenn der eingegebene CH nicht korrekt ist, ein Fenster an: Nicht registrierte Kopie (DEMO) usw. Daher ändern wir die Funktionen auf:
 0051D2F5 75 4F JNZ SHORT QEinrichtung 0051D346
 0051D2FE 75 0D JNZ SHORT QEinrichtung 0051D30D
Jetzt werden 2 einfache Algorithmen zum Schutz des Programms gehackt, es ist nur noch einer übrig. Wir gehen zu der gefundenen Funktion in dasma: jne 0051DBA8. Wir betrachten den Code in seiner Gesamtheit, er ist verantwortlich für die Anzeige des DEMO-Programmfensters:
 0051DBCB |.  8D45 FC LEA EAX, DWORD PTR SS: [EBP-4]
 0051DBCE |.  BA C4DC5100 MOV EDX, QSetup.0051DCC4;  ASCII "QSetup Composer"
 0051DBD3 |.  E8 3072EEFF CALL QSetup.00404E08
 0051DBD8 |.  8B55 FC MOV EDX, DWORD PTR SS: [EBP-4]
 0051DBDB |.  A1 40E25400 MOV EAX, DWORD PTR DS: [54E240]
 0051DBE0 |.  8B00 MOV EAX, DWORD PTR DS: [EAX]
Und die vorhergehende Schleife interessiert sie nicht:
 0051DBA8 |> 6A 00 / PUSH 0
 0051DBAA |.  6A 00 | PUSH 0
 0051DBAC |.  49 | DEC ECX
 0051DBAD |. ^ 75 F9 \ JNZ SHORT QSetup.0051DBA8
Alles hängt damit zusammen, dass es immer noch eine Art Verifizierungsalgorithmus gibt, die wir nicht bemerkt haben. Jetzt müssen wir das Programm erneut in dasma öffnen und suchen nach dem Öffnen erneut nach der Phrase QSetup Composer und fallen sofort auf:
0051DBC3 |. E8 48ABFBFF CALL QSetup.004D8710
Diesen Anruf tätigen wir, indem wir einfach auf die Anrufschaltfläche in der Symbolleiste klicken.
Es stellt sich heraus, hier:
  004D8710 / 53 USD PUSH EBX
 004D8711 |.  8BD8 MOV EBX, EAX
 004D8713 |.  8BC3 MOV EAX, EBX
 004D8715 |.  BA 54874D00 MOV EDX, QSetup.004D8754;  ASCII "DEMO"
 004D871A |.  E8 31C4F2FF CALL QSetup.00404B50
 004D871F |.  E8 84FFFFFF CALL QSetup.004D86A8
 004D8724 |.  84C0 TEST AL, AL
 004D8726 |.
  74 0C JE SHORT QSetup.004D8734

 004D8728 |.  8BC3 MOV EAX, EBX
 004D872A |.  BA 64874D00 MOV EDX, QSetup.004D8764;  ASCII "PRO"
 004D872F |.  E8 1CC4F2FF CALL QSetup.00404B50
 004D8734 |> E8 07FFFFFF CALL QSetup.004D8640
 004D8739 |.  84C0 TEST AL, AL
 004D873B |.  74 0C JE SHORT QSetup.004D8749
 004D873D |.  8BC3 MOV EAX, EBX
 004D873F |.  BA 70874D00 MOV EDX, QSetup.004D8770;  ASCII "LITE"
 004D8744 |.  E8 07C4F2FF CALL QSetup.00404B50
 004D8749 |> 5B POP EBX
 004D874A \.  C3 RETN
Der gewohnte Aufbau des Schutzes, und jetzt bleibt nur noch JE 004D8734 in JNE 004D8734 zu ändern und das Programm im oberen Fenster schreibt PRO) .Das ist alles der einfache Schutz. Jetzt müssen wir nur noch das Programm patchen, Sie können hiew 'a verwenden. Sie müssen die Funktion an den Adressen patchen:
0051D47C, 0051D485, 0051D2F5, 0051D2FE, 004D8726 Alle müssen auf jne geändert werden, und das Programm betrachtet sich immer als registriert.
Nachdem Sie das Programm gepatcht haben, können Sie mit TPE einen Patch erstellen.
Das Programm wird gehackt, der Patch wird erstellt ...