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