Cible: Crackme#1 Static Revenge

Outils: WinDasm + Editeur Hexa

 

Allez c'est partit :)

 

Au départ, on fait une copie du fichier au cas où on se tromperait, puis on l'ouvre avec WinDasm, et on cherche dans les SDR le message d'erreur, on arrive là:

 
//******************** Program Entry Point ********
:00401000 6A00                    push 00000000
:00401002 6870224000              push 00402270
 
* Possible StringData Ref from Data Obj ->"                    ..._¿o©º°&hibar;°º©o¿_ "
                                        ->"   Shmeit Corp    _¿o©º°&hibar;°º©o¿_...
 
 "
                                        ->"                                  "
                                        ->"     Static REvenge's Crackme "
                                        ->"#1 
 
Dans ce Crackme, il faut "
                                        ->"faire en sorte qu'un message de "
                                        ->"réussite de déplombage apparaisse.
Si "
                                        ->"vous echouez, un message d' échec "
                                        ->"vous le dira...
"
                                  |
:00401007 6800204000              push 00402000
:0040100C 6A00                    push 00000000
 
* Reference To: USER32.MessageBoxA, Ord:0000h
                                  |
:0040100E E839000000              Call 0040104C        ; affiche le message d'entré
:00401013 83F807                  cmp eax, 00000007
:00401016 EB1A                    jmp 00401032        ; saute vers le bad message
:00401018 6A40                    push 00000040
 
* Possible StringData Ref from Data Obj ->"Okay Dokey!"
                                  |
:0040101A 688C224000              push 0040228C
 
* Possible StringData Ref from Data Obj ->"Félicitations! Tu as reussi à "
                                        ->"déplomber cette super sécurité "
                                        ->"à deux roules ;p
Bon aller, c'est "
                                        ->"pas mal pour un début!
 
Static "
                                        ->"REvenge
Shmeit Corp  www.shmeitcorp.cjb.net"
                                  |
:0040101F 681E214000              push 0040211E
:00401024 6A00                    push 00000000
 
* Reference To: USER32.MessageBoxA, Ord:0000h
                                  |
:00401026 E821000000              Call 0040104C        ; affiche le good message
:0040102B 6A00                    push 00000000
 
* Reference To: KERNEL32.ExitProcess, Ord:0000h
                                  |
:0040102D E820000000              Call 00401052        ; quit
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401016(U)
|
:00401032 6A10                    push 00000010
 
* Possible StringData Ref from Data Obj ->"FATAL ERROR !!"
                                  |
:00401034 6898224000              push 00402298
 
* Possible StringData Ref from Data Obj ->"Ahhh! Tu n'as pas reussis à déplomber "
                                        ->"cette protection et ca se comprend "
                                        ->"vu qu'elle est inviolable... Arf!
 
Nan, "
                                        ->"je plaisante... Aller quoi, c'est "
                                        ->"pas si difficile ;)
"
                                  |
:00401039 68C8214000              push 004021C8
:0040103E 6A00                    push 00000000
 
* Reference To: USER32.MessageBoxA, Ord:0000h
                                  |
:00401040 E807000000              Call 0040104C        ; affiche le bad message
:00401045 6A00                    push 00000000
 
* Reference To: KERNEL32.ExitProcess, Ord:0000h
                                  |
:00401047 E806000000              Call 00401052

 

Bon, c'est très simple, on voit qu'un jmp ( saut inconditionnel ), nous dirige droit vers le message d'erreur, si on le noppe c'est bon on ira sur le bon message.

Remplacez par des 90 et c'est bon. Yeah :P

 

 

@+ fredbug