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

Tutoriel de piratage QSetup Composer 7

Tutoriel de piratage QSetup Composer 7 (par rel4nium)

Outils:
  PEiD
 
  Upx_mod
 
  Kwdsm
 
  OlyDGB
 
  Hiew
 
  tpe
 

Pour commencer, nous allons déterminer ce dont notre victime est emballée et pour cela, nous allons exécuter PEiD:
UPX 0.89.6 - 1.02 / 1.05 - 1.24 Stub (Delphi) -> Markus & Laszlo
Maintenant nous avons besoin d’un uppacker pour UPX, l’upix lui-même est trop dur, nous allons donc utiliser Upx_mod, pour décompresser nous avons juste besoin d’exécuter Upx_mod comme ceci:
unp1_24.exe -d QSetup.exe
Donc, le programme est décompressé, nous effectuerons toutes les autres opérations sur l'exe-shnik non emballé, taille 1,69. Nous devons maintenant voir quels types de protection sont utilisés dans le programme:


Nous avons donc 3 moyens de protection, nous devons maintenant trouver ces expressions / mots dans le désassembleur, lancez KWdsm. Décidez ce que nous recherchons:
1) Code d'enregistrement illégal!
2) Copie non enregistrée (DEMO)
3) QSetup Composer (DEMO)
Ainsi, après avoir trouvé ces expressions et trouvé des fonctions proches (je cherche toujours les transitions proches d’une fonction, c’est-à-dire je, jne, jmp;):
Code d'enregistrement illégal! - jne 0051D4FB
Copie non enregistrée - jmp 0051D369
QSetup Composer - jne 0051DBA8
Je vais encore expliquer, nous cherchions des points de référence pour le piratage, c’est-à-dire que si nous ne trouvons pas l’erreur par fonction, nous utiliserons celles trouvées avec DASM. Nous danserons plus loin, dirigerons les alliés. Juste pour le plaisir, essayons de trouver par fonction:
bpx MessageBoxA
et nous ne trouvons rien, donc ce n’est pas en vain que nous avons cherché des phrases en dasma). La phrase numéro un est:
0051D4DF |. 75 1A JNZ SHORT QSetup.0051D4FB
Cette fonction ne nous intéresse pas puisque son but est de déduire:
0051D510 |. BA 70D65100 MOV EDX, QSetup.0051D670; ASCII "Vous devez disposer des droits d'administrateur pour vous inscrire!"
=> nous examinerons le code ci-dessus:
  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 SHORT QEnsemble 0051D494 0051D487 |.  EAX 8D45 FC, DWORD PTR SS: [EBP-4]
 0051D48A |.  BA 80D55100 MOV EDX, QSetup.0051D580;  ASCII "QSetup PRO enregistré 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 |.  EAX 8D45 FC, 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 | & Annuler | & Oui | & Non | & Abort | & Réessayer | & Ignorer |"
 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 " Félicitations
 

" 0051D4BC |. E8 4779EEFF CALL QSetup.00404E08 0051D4C1 | 8B55 F8 MOV EDX, DWORD PTR SS: [EBP-8] 0051D4C4 |. B9 28D65100 MOV ECX, QSetup.0051D628; ASCII "Attention" 0051D4C9 |. B8 01000000 MOV EAX, 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 SHORT QSetup 0051D4FB 0051D4E1 |. 68 C8D55100 PUSH QSetup.0051D5C8; ASCII "| & OK | & Annuler | & Oui | & Non | & Abort | & Réessayer | & Ignorer |" 0051D4E6 |. 6A 00 PUSH 0 0051D4E8 |. B9 3CD65100 MOV ECX, QSetup.0051D63C; ASCII "Erreur" 0051D4ED |. BA 4CD65100 MOV EDX, QSetup.0051D64C; ASCII "Code d'enregistrement illégal!"

Je ne vous connais pas, mais je me suis intéressé aux lignes:
 0051D47C 74 57 JE SHORT QEnsemble 0051D4D5
 0051D485 74 0D JE COURT QEnsemble 0051D494
Voyons où ils mènent, comme vous pouvez le constater, à un endroit, à savoir:
 0051D4D5 |> 8B45 FC MOV EAX, DWORD PTR SS: [EBP-4]
Vous pouvez comprendre que cette transition va à la phrase Code d'enregistrement illégal!
Nous changeons immédiatement 2 transitions, car si nous changeons 1, il n'y aura aucun effet:
 0051D47C 74 57 JNE SHORT QPrésentation 0051D4D5
 0051D485 74 0D JNE SHORT QEnsemble 0051D494
Donc, en changeant les conclusions des fonctions, on obtient:
QSetup PRO enregistré OK!
Mais il est trop tôt pour se réjouir, car 2 autres défenses ne sont pas piratées, et même si nous voyons une fenêtre amusante sur laquelle le programme est enregistré, il ne le sera pas, car 2 autres inscriptions sont en place.
Nous allons traiter avec eux, sur la file d'attente jmp 0051D369, nous n'hésiterons pas et ferons immédiatement attention au code au-dessus de cette fonction:
  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 |.  EAX 8D45 FC, DWORD PTR SS: [EBP-4]
 0051D303 |.  BA 94D35100 MOV EDX, QSetup.0051D394;  ASCII "Copie enregistrée (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 |.  EAX 8D45 FC, DWORD PTR SS: [EBP-4]
 0051D319 |.  BA B4D35100 MOV EDX, QSetup.0051D3B4;  ASCII "Copie enregistrée (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 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 "Copie non enregistrée (DEMO)"
Nous voyons une protection typique, mais c’est déjà plus facile, cette fonction JE SHORT QSetup.0051D346, si le CH entré est incorrect, affiche une fenêtre: Copie non enregistrée (DEMO), etc. Par conséquent, nous modifions les fonctions en:
 0051D2F5 75 4F JNZ SHORT QÉtude 0051D346
 0051D2FE 75 0D JNZ SHORT QEnsemble 0051D30D
Maintenant, 2 algorithmes simples de protection du programme sont piratés, il n’en reste plus qu’un. Nous passons à la fonction trouvée dans dasma: jne 0051DBA8.Nous regardons le code dans son ensemble, il est responsable de l’affichage de la démo dans la fenêtre du programme:
 0051DBCB |.  EAX 8D45 FC, DWORD PTR SS: [EBP-4]
 0051DBCE |.  BA C4DC5100 MOV EDX, QSetup.0051DCC4;  ASCII "Compositeur QSetup"
 0051DBD3 |.  E8 3072EEFF CALL QSetup.00404E08
 0051DBD8 |.  8X55 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]
Et elle se fiche de la boucle qui précède:
 0051DBA8 |> 6A 00 / PUSH 0
 0051DBAA |.  6A 00 | PUSH 0
 0051DBAC |.  49 | DEC ECX
 0051DBAD |. ^ 75 F9 \ JNZ SHORT QSetup.0051DBA8
Tout repose sur le fait qu'il existe encore une sorte d'algorithme de vérification que nous n'avons pas remarqué. Maintenant, nous devons rouvrir le programme dans dasma, après quoi, nous cherchons à nouveau la phrase QSetup Composer et l’attrape immédiatement:
0051DBC3 |. E8 48ABFBFF CALL QSetup.004D8710
Nous effectuons cet appel en cliquant simplement sur le bouton d'appel dans la barre d'outils.
Il se trouve ici:
 004D8710 / 53 $ PUSH EBX 004D8711 |.  8BD8 MOV EBX, EAX 004D8713 |.  MOX 8BC3 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 |.  MOX 8BC3 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 |.  MOX 8BC3 EAX, EBX 004D873F |.  BA 70874D00 MOV EDX, QSetup.004D8770;  ASCII "LITE" 004D8744 |.  E8 07C4F2FF CALL QSetup.00404B50 004D8749 |> 5B POP EBX 004D874A \.  C3 RETN 
Encore une fois, la construction familière de la protection, et il ne reste plus maintenant qu’à changer le JE 004D8734 en JNE 004D8734 et le programme dans la fenêtre supérieure indique PRO). Maintenant, il ne reste plus qu’à patcher le programme, vous pouvez utiliser hiew 'a. Vous devez patcher la fonction aux adresses suivantes:
0051D47C, 0051D485, 0051D2F5, 0051D2FE, 004D8726 tout doit être changé en jne et le programme se considérera toujours comme enregistré.
Après avoir corrigé le programme, vous pouvez créer un correctif à l’aide de TPE (j'en ai parlé dans des articles précédents, je ne le répète donc pas).
Le programme est piraté, le patch est créé ...