Qu’entendez-vous par crack, patch et autres termes utilisés lors du téléchargement d’un logiciel sur internet ?


Le patch et le crack sont tous deux des correctifs. Signifie des modifications apportées au logiciel original que vous avez en cours d'exécution. Un patch modifie le binaire, mais il existe aussi des patchs au niveau du code source, ce qui est plutôt le cas sur les plateformes open source comme Linux.

Un crack est une sorte spéciale de patch qui supprime certaines fonctionnalités du programme, comme le numéro de série ou la protection contre la copie, certaines autres "fonctions" qui limitent l'application de ce logiciel d'une autre manière que celle prévue par le ou les auteurs originaux.


Un crack peut supprimer un requêteur ou un adware, peut supprimer certains spyware ou désactiver le contrat de licence et laisser ce programme fonctionner sans cette merde. Habituellement, un crack supprime vraiment ou éteint les "fonctionnalités" indésirables qui ne sont d'aucun avantage pour le produit mais une nuisance même pour le client payant. Un crack supprime souvent tellement de conneries, que le programme craqué est meilleur que la version originale non craquée.

Donc, un "crack" implique que quelque chose est cassé. Mais je vois cela différemment. Le logiciel a été livré cassé par le fabricant et vous le réparez pour le rendre utilisable pour vos besoins.


Même si c'est maintenant interdit par la loi en Allemagne, je pense personnellement que c'est une grosse erreur. Si vous avez acheté quelque chose, vous êtes libre de modifier ce truc autant que vous le souhaitez, c'est le vôtre. Vous ne pouvez simplement pas le diffuser, le copier ou le vendre. Ce serait une violation de licence (et non un vol !).

Et bien sûr, ce n'est pas non plus un vol, un meurtre, un viol, un génocide et un putain de piratage.

So. J'utilise Linux ici. Je suis un professionnel du logiciel. J'ai tous les outils de rétro-ingénierie, qui sont disponibles pour mon métier, pour faire de la rétro-ingénierie de mes propres logiciels et des logiciels des clients. Et pour la seule possession, je suis maintenant punissable par la loi dans mon pays. Je suis un criminel.

Parce que je possède Linux. I am totally answering this with civilian disobedience.

Here how a crack works.

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5.  
  6. int main(){ 
  7. char *pass=getpass("Password: "); 
  8. if(strcmp(pass, "secret")){ 
  9. puts("I don't work for you."); 
  10. exit(EXIT_FAILURE); 
  11. }else{ 
  12. puts("Password correct!"); 
  13. return 0; 

We are compiling that little program and run it:

  1. > cc -O3 -mfma4 -o crack crack.c  
  2. > ./crack  
  3. Password:  
  4. I don't work for you. 

The password to run this would be “secret”. I don’t know that password, because in the real program this is hidden or this is my key or something. So I go in there with Radare2, after I copied it to crack_org to keep the original. I open Radare with -A for getting some symbol names and -w to be able to overwrite:

  1. > cp crack crack_org 
  2. > r2 -A -w crack 
  3. [x] Analyze all flags starting with sym. and entry0 (aa)  
  4. [x] Analyze len bytes of instructions for references (aar)  
  5. [x] Analyze function calls (aac)  
  6. [ ] [*] Use -AA or aaaa to perform additional experimental analysis.  
  7. [x] Constructing a function name for fcn.* and sym.func.* functions (aan))  
  8. -- vm is like a small cow in ascii  
  9. [0x00000640]> pdf@main ;*****HERE I VIEW THE SOURCE**** 
  10. ;-- main:  
  11. ;-- section_end..plt.got:  
  12. ;-- section..text:  
  13. / (fcn) sym.main 80  
  14. | sym.main ();  
  15. | ; DATA XREF from 0x0000065d (entry0)  
  16. | 0x000005f0 488d3dfd0100. lea rdi, qword str.Password: ; 0x7f4 ; str.Password: ; "Password: " @ 
  17. 0x7f4 ; [13] va=0x000005f0 pa=0x000005f0 sz=498 vsz=498 rwx=--r-x .text  
  18. | 0x000005f7 4883ec08 sub rsp, 8  
  19. | 0x000005fb e8d8ffffff call sub.__cxa_finalize_216_5d8  
  20. | 0x00000600 488d3df80100. lea rdi, qword str.secret ; 0x7ff ; str.secret ; "secret" @ 0x7ff  
  21. | 0x00000607 4889c6 mov rsi, rax  
  22. | 0x0000060a b907000000 mov ecx, 7  
  23. | 0x0000060f f3a6 repe cmpsb byte [rsi], byte ptr [rdi] ; [0x2700000000:1]=255 ; 0  
  24. | ,=< 0x00000611 7513 jne 0x626 ;*******INTERESTING LINE******* 
  25. | | 0x00000613 488d3d020200. lea rdi, qword str.Password_correct_ ; 0x81c ; str.Password_correct_  
  26. ; "Password correct!" @ 0x81c  
  27. | | 0x0000061a e8b1ffffff call sub.__cxa_finalize_192_5d0  
  28. | | 0x0000061f 31c0 xor eax, eax  
  29. | | 0x00000621 4883c408 add rsp, 8  
  30. | | 0x00000625 c3 ret  
  31. | | ; JMP XREF from 0x00000611 (sym.main)  
  32. | `-> 0x00000626 488d3dd90100. lea rdi, qword str.I_don_t_work_for_you. ; 0x806 ; str.I_don_t_work_f 
  33. or_you. ; "I don't work for you." @ 0x806  
  34. | 0x0000062d e89effffff call sub.__cxa_finalize_192_5d0  
  35. | 0x00000632 bf01000000 mov edi, 1  
  36. | 0x00000637 e8a4ffffff call sub.__cxa_finalize_232_5e0  
  37. 0x0000063c 0f1f4000 nop dword [rax]  
  38. [0x00000640]> wa jmp 0x613@0x611 ;*********HERE I OVERWRITE THE COMMAND***** 
  39. Written 2 bytes (jmp 0x613) = wx eb00 

As you can see at byte 0x611 there’s the jump, we exchange that line by writing “jmp 0x613” to the address of byte 0x611. That’s it.

Write and exit with q

Test:

  1. > ./crack  
  2. Password:  
  3. Password correct! 

Wundervoll. Now the program runs without us knowing the password.

To give this to your friends, that have the crack binary only and are able to do that themselves, we simply use bsdiff and bspatch, that you should install for that.

  1. > bsdiff crack_org crack crack.patch 
  2.  
  3. > bspatch crack_org crack_patched crack.patch 
  4. > chmod +x crack_patched 
  5. > ./crack_patched  
  6. Password:  
  7. Password correct! 

Wundervoll. To see what we have done:

  1. > ls crack* -l  
  2. -rwxr-xr-x 1 hanno hanno 8504 Dez 17 12:27 crack*  
  3. -rw-r--r-- 1 hanno hanno 264 Dez 3 17:39 crack.c  
  4. -rw-r--r-- 1 hanno hanno 156 Dez 17 12:41 crack.patch  
  5. -rwxr-xr-x 1 hanno hanno 8504 Dez 17 12:22 crack_org*  
  6. -rwxr-xr-x 1 hanno hanno 8504 Dez 17 12:42 crack_patched 

That’s it. You just have now to send your friends the crack.patch file, which is really small. Done.

And now I’m a criminal in Germany. C'est des conneries.

En fait, envoyer à quelqu'un un fichier patch n'est pas contraire à la loi. Posséder Linux l'est. En Allemagne, le mot ignorance est écrit en grosses lettres : Ignoranz.

Mais, oui. Voilà comment fonctionne un patch et ce qu'est un crack.

J'espère avoir pu vous aider. S'il vous plaît, rendez-moi visite, si cela me conduit en prison.