aver acompañandote a crear el valor 1, espero analizes , no solo parches, pues es una historia parchar y es otra historia resolver todo
Esto esta Escrito con Fines Educacionales
Saludos Apuromafo
te ayudare como si fuera mi objetivo:
aver veamos la imagen de prueba para que lo veas:
comenzemos:
1) descargado ollydbg +el programa objetivo
al abrir vemos
Entrypoint:0043DBAB >/$ 55 PUSH EBP
y su estructura pareciera Visual C++ 6.0
2) buscando las string las mas interesantes es:"registration code"
tendriamos entonces:
0040AEBF . 85C9 TEST ECX,ECX
0040AEC1 . 75 0E JNZ SHORT victima.0040AED1
0040AEC3 . 6A 30 PUSH 30
0040AEC5 . 68 04474600 PUSH victima.00464704 ; ASCII "vict imaConverter"
0040AECA . 68 E0454600 PUSH victima.004645E0 ; ASCII "Please enter registration name."
0040AECF . EB 3B JMP SHORT victima.0040AF0C
0040AED1 > 8B1B MOV EBX,DWORD PTR DS:[EBX]
0040AED3 . 8D4E 64 LEA ECX,DWORD PTR DS:[ESI+64]
0040AED6 . 51 PUSH ECX
0040AED7 . 53 PUSH EBX
0040AED8 . E8 33F20100 CALL victima.0042A110
0040AEDD . 83C4 08 ADD ESP,8
0040AEE0 . 85C0 TEST EAX,EAX
0040AEE2 . 74 1C JE SHORT victima.0040AF00
0040AEE4 . 6A 40 PUSH 40
0040AEE6 . 68 04474600 PUSH victima.00464704 ; ASCII "vict imaConverter"
0040AEEB . 68 00464600 PUSH victima.00464600 ; ASCII "Register successfully. Thank you for your support."
0040AEF0 . 8BCE MOV ECX,ESI
0040AEF2 . E8 E6730400 CALL victima.004522DD
0040AEF7 . 8BCE MOV ECX,ESI
0040AEF9 . E8 70930400 CALL victima.0045426E
0040AEFE . EB 13 JMP SHORT victima.0040AF13
0040AF00 > 6A 10 PUSH 10
0040AF02 . 68 04474600 PUSH victima.00464704 ; ASCII "x Converter"
0040AF07 . 68 34464600 PUSH victima.00464634 ; ASCII "Invalid registration code. Please COPY the whole registration code and then PASTE to "Registration Code" input box.
If you have any questions with your registration code, please contact <x@x.com>."
0040AF0C > 8BCE MOV ECX,ESI
0040AF0E . E8 CA730400 CALL victima.004522DD
0040AF13 > C74424 14 FFFF>MOV DWORD PTR SS:[ESP+14],-1
0040AF1B . E8 AB2F0500 CALL victima.0045DECB
0040AF20 . 8B48 04 MOV ECX,DWORD PTR DS:[EAX+4]
0040AF23 . E8 67880400 CALL victima.0045378F
0040AF28 . 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C]
ahora comenzamos a depurar y coloco un bp en 0040AEBC , tenemos entonces en eax, el largo del serial
al llegar al call
en esta rutina compara el largo con 40hexadecimal
0042A118 |. 56 PUSH ESI ; /String
0042A119 |. FF15 B0324600 CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA
0042A11F |. 83F8 40 CMP EAX,40
en este caso coloco como serial:
probando1234567890probando1234567890probando1234567890probando12
y luego de preparar el buffer, del largo de cada string comienza a hacer la rutina real del algoritmo
->aca comienza
0042A190 /$ 81EC B4000000 SUB ESP,0B4
0042A196 |. 8B8424 B800000>MOV EAX,DWORD PTR SS:[ESP+B8]
0042A19D |. 53 PUSH EBX
0042A19E |. 55 PUSH EBP
0042A19F |. 56 PUSH ESI
0042A1A0 |. 8B70 04 MOV ESI,DWORD PTR DS:[EAX+4]
0042A1A3 |. 8B50 1C MOV EDX,DWORD PTR DS:[EAX+1C]
0042A1A6 |. 8BCE MOV ECX,ESI
0042A1A8 |. 895424 14 MOV DWORD PTR SS:[ESP+14],EDX
0042A1AC |. 33CA XOR ECX,EDX
0042A1AE |. 57 PUSH EDI
0042A1AF |. 8B78 18 MOV EDI,DWORD PTR DS:[EAX+18]
0042A1B2 |. 81E1 B73AAE7B AND ECX,7BAE3AB7
0042A1B8 |. 8BD1 MOV EDX,ECX
0042A1BA |. 8B68 10 MOV EBP,DWORD PTR DS:[EAX+10]
0042A1BD |. 33D6 XOR EDX,ESI
0042A1BF |. 8B70 0C MOV ESI,DWORD PTR DS:[EAX+C]
0042A1C2 |. 895424 2C MOV DWORD PTR SS:[ESP+2C],EDX
0042A1C6 |. 8BD6 MOV EDX,ESI
0042A1C8 |. 33D7 XOR EDX,EDI
0042A1CA |. 897C24 1C MOV DWORD PTR SS:[ESP+1C],EDI
0042A1CE |. 81E2 402C4648 AND EDX,48462C40
0042A1D4 |. 8BDA MOV EBX,EDX
0042A1D6 |. 33DE XOR EBX,ESI
0042A1D8 |. 8B70 08 MOV ESI,DWORD PTR DS:[EAX+8]
0042A1DB |. 897424 10 MOV DWORD PTR SS:[ESP+10],ESI
0042A1DF |. 33F5 XOR ESI,EBP
0042A1E1 |. 81E6 7F5FFA63 AND ESI,63FA5F7F
0042A1E7 |. 81F3 1C956E15 XOR EBX,156E951C
0042A1ED |. 8BFE MOV EDI,ESI
0042A1EF |. 33FD XOR EDI,EBP
0042A1F1 |. 8B68 14 MOV EBP,DWORD PTR DS:[EAX+14]
0042A1F4 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0042A1F6 |. 897C24 28 MOV DWORD PTR SS:[ESP+28],EDI
0042A1FA |. 8BF8 MOV EDI,EAX
0042A1FC |. 896C24 20 MOV DWORD PTR SS:[ESP+20],EBP
0042A200 |. 33FD XOR EDI,EBP
0042A202 |. 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
0042A206 |. 8B4424 20 MOV EAX,DWORD PTR SS:[ESP+20]
0042A20A |. 81E7 B39AA317 AND EDI,17A39AB3
0042A210 |. 8BEF MOV EBP,EDI
0042A212 |. 33E8 XOR EBP,EAX
0042A214 |. 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]
0042A218 |. 33C8 XOR ECX,EAX
0042A21A |. 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
0042A21E |. 33F0 XOR ESI,EAX
0042A220 |. 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C]
0042A224 |. 89B424 BC00000>MOV DWORD PTR SS:[ESP+BC],ESI
0042A22B |. 8B7424 14 MOV ESI,DWORD PTR SS:[ESP+14]
0042A22F |. 33D0 XOR EDX,EAX
0042A231 |. 8BC3 MOV EAX,EBX
0042A233 |. 334424 2C XOR EAX,DWORD PTR SS:[ESP+2C]
0042A237 |. 33FE XOR EDI,ESI
0042A239 |. 8B7424 28 MOV ESI,DWORD PTR SS:[ESP+28]
0042A23D |. 81F5 AEC64592 XOR EBP,9245C6AE
0042A243 |. 81F6 80C58A65 XOR ESI,658AC580
0042A249 |. 3D 40655C3A CMP EAX,3A5C6540
0042A24E |. 75 6E JNZ SHORT victima.0042A2BE
0042A250 |. 33FE XOR EDI,ESI
0042A252 |. 81FF CF238165 CMP EDI,658123CF
0042A258 |. 75 64 JNZ SHORT victima.0042A2BE
0042A25A |. 33D3 XOR EDX,EBX
0042A25C |. 81FA E5624815 CMP EDX,154862E5
0042A262 |. 75 5A JNZ SHORT victima.0042A2BE
0042A264 |. B8 F1F0F0F0 MOV EAX,F0F0F0F1
0042A269 |. F7E5 MUL EBP
0042A26B |. C1EA 04 SHR EDX,4
0042A26E |. B8 4FECC44E MOV EAX,4EC4EC4F
0042A273 |. 8BFA MOV EDI,EDX
0042A275 |. F7E5 MUL EBP
0042A277 |. 0FAFFE IMUL EDI,ESI
0042A27A |. C1EA 02 SHR EDX,2
0042A27D |. 0FAFD3 IMUL EDX,EBX
0042A280 |. 03FA ADD EDI,EDX
0042A282 |. 8BD6 MOV EDX,ESI
0042A284 |. 0FAFD3 IMUL EDX,EBX
0042A287 |. 03FA ADD EDI,EDX
0042A289 |. F7D7 NOT EDI
0042A28B |. 3BF9 CMP EDI,ECX
0042A28D |. 75 2F JNZ SHORT victima.0042A2BE
0042A28F |. 8BCD MOV ECX,EBP
0042A291 |. B8 ABAAAAAA MOV EAX,AAAAAAAB
0042A296 |. 0FAFCB IMUL ECX,EBX
0042A299 |. F7E1 MUL ECX
0042A29B |. 8B8424 BC00000>MOV EAX,DWORD PTR SS:[ESP+BC]
0042A2A2 |. D1EA SHR EDX,1
0042A2A4 |. 2BEA SUB EBP,EDX
0042A2A6 |. 03EE ADD EBP,ESI
0042A2A8 |. F7D5 NOT EBP
0042A2AA |. 3BE8 CMP EBP,EAX
0042A2AC |. 75 10 JNZ SHORT victima.0042A2BE
0042A2AE |. 5F POP EDI
0042A2AF |. 5E POP ESI
0042A2B0 |. 5D POP EBP
0042A2B1 |. B8 01000000 MOV EAX,1
0042A2B6 |. 5B POP EBX
0042A2B7 |. 81C4 B4000000 ADD ESP,0B4
0042A2BD |. C3 RETN
0042A2BE 5F POP EDI
0042A2BF 5E POP ESI
0042A2C0 |. 5D POP EBP
0042A2C1 |. 33C0 XOR EAX,EAX
0042A2C3 |. 5B POP EBX
0042A2C4 |. 81C4 B4000000 ADD ESP,0B4
0042A2CA \. C3 RETN
como te daras cuenta, si no es valido llega a
0042A2C1 |. 33C0 XOR EAX,EAX
0042A2C3 |. 5B POP EBX
0042A2C4 |. 81C4 B4000000 ADD ESP,0B4
0042A2CA \. C3 RETN
y si es valido llega aqui
0042A2B1 |. B8 01000000 MOV EAX,1
0042A2B6 |. 5B POP EBX
0042A2B7 |. 81C4 B4000000 ADD ESP,0B4
0042A2BD |. C3 RETN
por lo tanto con 1 cambio y colocando un serial tipo como te comentaba
puedes tener
0042A2BE 5F POP EDI
0042A2BF 5E POP ESI
cambiar a
0042A2BE ^EB EE JMP SHORT 0042A2AE
o bien Patches, item 0
Address=0042A2BE
Size= 2.
Old=POP EDI
New=JMP SHORT 0042A2AE
Click derecho
Copy to executable => All modifications
Copy all
cerrar => yes
y el guardado correra full en teoria con un valor asi:
[HKEY_USERS\valor\Software\WAV MP3 Converter 4]
"SN"=hex:XX,XX /omitidos"
"RegUsername"="Apuromafo"
o bien como bien te comentaba, si das con el serial correcto, que seria de largo 40, aplicando los xor y cuanto algoritmo , quizas alguien de con el , si tuviera mas tiempo
saludos Apuromafo