Bonjour a tous !
Nouveau dans le cracking (et pour cause, en recherche d'emploi, ce qui laisse pas mal de temps!), je pioche un peu partout des Crackme sur le net.
Sur l'un d'eux (me tuez pas, il vient pas de NC

), vraiment lambda (2 textbox : 1 Name,1 serial + 1 bouton), je voulais afficher le bon serial calculé par la routine dans un des textbox. Niveau code, on peut pas dire que ca soit très compliqué...
Mon problème vient d'ailleurs (comme la vérité?) .
(je paste un bout du code, en gros celui qui m'intéresse) :
CPU Disasm
Address Hex dump Command Comments
00401177 /. 6A 00 PUSH 0 ; /ModuleName = NULL
00401179 |. E8 40000000 CALL <JMP.&kernel32.GetModuleHandleA> ; \KERNEL32.GetModuleHandleA
0040117E |. A3 40304000 MOV DWORD PTR DS:[403040],EAX
00401183 |. 6A 00 PUSH 0 ; /InitParam = 0
00401185 |. 68 7C104000 PUSH 0040107C ; |DialogProc = ***.40107C
0040118A |. 6A 00 PUSH 0 ; |hParent = NULL
0040118C |. 6A 64 PUSH 64 ; |TemplateName = 64
0040118E |. FF35 40304000 PUSH DWORD PTR DS:[403040] ; |hInst = NULL
00401194 |. E8 07000000 CALL <JMP.&user32.DialogBoxParamA> ; \USER32.DialogBoxParamA
00401199 |. 6A 00 PUSH 0 ; /ExitCode = 0
0040119B \. E8 18000000 CALL <JMP.&kernel32.ExitProcess> ; \KERNEL32.ExitProcess
004011A0 $- FF25 1C204000 JMP DWORD PTR DS:[<&user32.DialogBoxPara
004011A6 $- FF25 18204000 JMP DWORD PTR DS:[<&user32.EndDialog>]
004011AC $- FF25 14204000 JMP DWORD PTR DS:[<&user32.GetDlgItemTex
004011B2 $- FF25 10204000 JMP DWORD PTR DS:[<&user32.MessageBoxA>]
004011B8 $- FF25 08204000 JMP DWORD PTR DS:[<&kernel32.ExitProcess
004011BE $- FF25 04204000 JMP DWORD PTR DS:[<&kernel32.GetModuleHa
004011C4 >- FF25 00204000 JMP DWORD PTR DS:[<&kernel32.IsDebuggerP
004011CA 00 DB 00
004011CB 00 DB 00
004011CC 00 DB 00
004011CD 00 DB 00
004011CE 00 DB 00
Je voudrais rajouter mon code par exemple en 4011CC, appelé grâce à un JMP dans la routine du serial (pas décrite ici), et faire un JMP back pour y retourner ensuite (si je vous ai pas encore largué, le code que je veux insérer ici servira donc à écrire le bon serial dans la textbox).
Le problème, c'est que quand je commence à écrire en 4011CC, tout se passe bien, en le lancant sur Olly ca tourne du tonerre, j'arrive bien à sauvegarder les modifs dans un executable, sans problème.
Par contre, quand je rouvres l'exe sur Olly, la, c'est la cata

Les données sont bien présentes, sous forme hexa, par contre Olly ne les "reconnait" plus :
004011CC |. C705 47314000 MOV DWORD PTR DS:[403147],OFFSET 0040300
devient
004011CC |. C705
004011CD |. 47
004011CE |. 31
004011CF |. 40
004011D0 |. 00
Et résultat, plus rien ne marche

Persévérant, je me dit "allez hop, on se renseigne pour voir d'où ca vient!". Sur ce, je m'intéresse aux code sections. Sans attendre, je sors mon LordPE favori, regarde un peu les sections, et voila ce que je trouve (sorry, mon post va commencer à faire long!) :
->Section Header Table
1. item:
Name: .text
VirtualSize: 0x00001000
VirtualAddress: 0x00001000
SizeOfRawData: 0x000001CD PointerToRawData: 0x00000400
PointerToRelocations: 0x00000000
PointerToLinenumbers: 0x00000000
NumberOfRelocations: 0x0000
NumberOfLinenumbers: 0x0000
Characteristics: 0x80000020
(CODE, WRITE)
2. item:
Name: .rdata
VirtualSize: 0x00001000
VirtualAddress: 0x00002000
SizeOfRawData: 0x00000114
PointerToRawData: 0x00000600
PointerToRelocations: 0x00000000
PointerToLinenumbers: 0x00000000
NumberOfRelocations: 0x0000
NumberOfLinenumbers: 0x0000
Characteristics: 0xC0000040
(INITIALIZED_DATA, READ, WRITE)
Et la, paf, le SizeOfRawData vaut 1CD... coïncidence non?! Ni d'une ni de deux, je modifie tout ca (de 1CD, je passe à 3CD (rajout de 200h)), me disant que pitetre que la ca marchera...
Recommence toute l'opération, les modifs toussa toussa, et la, c'est le fail, ca marche toujours pas...
J'ai essayé d'autres méthodes moins jolies (par exemple, créer une nouvelle section et mettre mon code dedans, sans trop de succès non plus)...
Donc voila, déja ceux qui sont arrivés jusqu'ici : bravo!
Si vous avez des remarques / conseils / plaintes contre ma stupidité à faire, n'hésitez pas, je vous dirais quand meme merci

Sur ce, on doit bien être en 2015, donc bonne journée

Epsilon