¿De cual de los dos programas me habalas?
??? Esta vez soy yo el que no te entiende a ti. Hablo del ejecutable art.exe que es el único que he abierto.
La verdad es que ni siquiera he tocado el tuyo, pero como leí que decías que cuando le dabas a registrar el programa se te "registraba bien", supuse que habías parcheado esta zona:
0050CAE9 |> \C645 FF 00 MOV BYTE PTR [EBP-1],>
0050CAED |. 8D45 EC LEA EAX,[EBP-14]
0050CAF0 |. 50 PUSH EAX ; /Arg1
0050CAF1 |. 33C9 XOR ECX,ECX ; |
0050CAF3 |. BA 28CC5000 MOV EDX,0050CC28 ; |ASCII "If you have paid, please enter registration code"
0050CAF8 |. B8 64CC5000 MOV EAX,0050CC64 ; |ASCII "Enter registration code"
0050CAFD |. E8 E6D0F5FF CALL 00469BE8 ; \Art.00469BE8
0050CB02 |. 837D EC 00 CMP DWORD PTR [EBP-14>
0050CB06 |. 0F84 C0000000 JE 0050CBCC
0050CB0C |. 8B45 EC MOV EAX,[EBP-14]
0050CB0F |. E8 0875EFFF CALL 0040401C
0050CB14 |. 83F8 24 CMP EAX,24
0050CB17 |. 0F85 9A000000 JNZ 0050CBB7
0050CB1D |. 8B45 EC MOV EAX,[EBP-14]
0050CB20 |. E8 BB76EFFF CALL 004041E0
0050CB25 |. 8945 F8 MOV [EBP-8],EAX
0050CB28 |. 8B45 F8 MOV EAX,[EBP-8]
0050CB2B |. E8 D0320000 CALL 0050FE00
0050CB30 |. 84C0 TEST AL,AL
0050CB32 |. 74 6C JE SHORT 0050CBA0
0050CB34 |. B2 01 MOV DL,1
0050CB36 |. A1 601C4600 MOV EAX,[461C60]
0050CB3B |. E8 E452F5FF CALL 00461E24
0050CB40 |. 8945 F0 MOV [EBP-10],EAX
0050CB43 |. BA 01000080 MOV EDX,80000001
0050CB48 |. 8B45 F0 MOV EAX,[EBP-10]
0050CB4B |. E8 0454F5FF CALL 00461F54
0050CB50 |. B1 01 MOV CL,1
0050CB52 |. BA 84CC5000 MOV EDX,0050CC84 ; ASCII "\SOFTWARE\Elcom\ART\Registration"
0050CB57 |. 8B45 F0 MOV EAX,[EBP-10]
0050CB5A |. E8 A955F5FF CALL 00462108
0050CB5F |. 8845 F7 MOV [EBP-9],AL
0050CB62 |. 8D45 E8 LEA EAX,[EBP-18]
0050CB65 |. 8B55 F8 MOV EDX,[EBP-8]
0050CB68 |. E8 E773EFFF CALL 00403F54
0050CB6D |. 8B4D E8 MOV ECX,[EBP-18]
0050CB70 |. BA B0CC5000 MOV EDX,0050CCB0 ; ASCII "Code"
0050CB75 |. 8B45 F0 MOV EAX,[EBP-10]
0050CB78 |. E8 435BF5FF CALL 004626C0
0050CB7D |. 6A 00 PUSH 0 ; /Arg1 = 00000000
0050CB7F |. 66:8B0D B8CC5000 MOV CX,[50CCB8] ; |
0050CB86 |. B2 02 MOV DL,2 ; |
0050CB88 |. B8 C4CC5000 MOV EAX,0050CCC4 ; |ASCII "Thank you for registering !"
0050CB8D |. E8 B2CBF5FF CALL 00469744 ; \Art.00469744
0050CB92 |. A1 DCA55400 MOV EAX,[54A5DC]
0050CB97 |. C600 01 MOV BYTE PTR [EAX],1
0050CB9A |. C645 FF 01 MOV BYTE PTR [EBP-1],>
0050CB9E |. EB 2C JMP SHORT 0050CBCC
0050CBA0 |> 6A 00 PUSH 0 ; /Arg1 = 00000000
0050CBA2 |. 66:8B0D B8CC5000 MOV CX,[50CCB8] ; |
¿De cual de los dos programas me habalas?
¿como sabes esto(donde lo miras)?
Lo que es el registro es inviable sacarlo:
Una clave de 36 caracteres de la que calcula el MD5 y luego la compara con muchísimas que están en el propio programa a partir de 0x4D6DAC.
[/quote]Sólo hay que profundizar en el código antes expuesto:
0050CB0F |. E8 0875EFFF CALL 0040401C
0050CB14 |. 83F8 24 CMP EAX,24
0050CB17 |. 0F85 9A000000 JNZ 0050CBB7
Aquí compara la longitud introducida con 0x24 (36 letras de toda la vida)
Luego entramos aquí:
0050CB2B |. E8 D0320000 CALL 0050FE00
(...)
0050FE2D |. 8B45 FC MOV EAX,[EBP-4]
0050FE30 |. E8 AB64FCFF CALL 004D62E0 ; calcula el MD5 del codigo introducido
0050FE35 |. 8B45 E8 MOV EAX,[EBP-18]
0050FE38 |. E8 DF41EFFF CALL 0040401C
0050FE3D |. 8945 F0 MOV [EBP-10],EAX
0050FE40 |. A1 D8A55400 MOV EAX,[54A5D8] ; esto me apunta a 0x543528
0050FE45 |. 8B00 MOV EAX,[EAX] ; y esto me lleva a 0x4D6DAC
0050FE47 |. E8 D041EFFF CALL 0040401C
0050FE4C |. 8945 EC MOV [EBP-14],EAX
0050FE4F |. C645 E7 01 MOV BYTE PTR [EBP-19],1
0050FE53 |. C745 F4 01000000 MOV DWORD PTR [EBP-C],1
0050FE5A |> 8B45 EC /MOV EAX,[EBP-14]
0050FE5D |. 50 |PUSH EAX ; /Arg2
0050FE5E |. 6A 01 |PUSH 1 ; |Arg1 = 00000001
0050FE60 |. A1 D8A55400 |MOV EAX,[54A5D8] ; |
0050FE65 |. 8B55 F4 |MOV EDX,[EBP-C] ; |
0050FE68 |. 8B5490 FC |MOV EDX,[EAX+EDX*4-4] ; |
0050FE6C |. 8B4D F0 |MOV ECX,[EBP-10] ; |
0050FE6F |. 8B45 E8 |MOV EAX,[EBP-18] ; |
0050FE72 |. E8 CDB6F8FF |CALL 0049B544 ; \Art.0049B544
0050FE77 |. 48 |DEC EAX
0050FE78 |. 75 06 |JNZ SHORT 0050FE80
0050FE7A |. C645 FB 01 |MOV BYTE PTR [EBP-5],1
0050FE7E |. EB 0C |JMP SHORT 0050FE8C
0050FE80 |> FF45 F4 |INC DWORD PTR [EBP-C]
0050FE83 |. 817D F4 65130000 |CMP DWORD PTR [EBP-C],1365 ; bucle que compara el MD5 de nuestro
0050FE8A |.^ 75 CE \JNZ SHORT 0050FE5A ; codigo con todos los validos
0050FE8C |> 33C0 XOR EAX,EAX
(...)
y esto tampoco lo entiendo:
Pero si estudias el código que has parcheado para que te muestre que estás registrado verás que se pone a 1 una bandera que es apuntada desde 0x54A5DC. Así que con buscar todas las referencias a esa dirección:
Eso aún está más claro: el programa nada más indicar que estás bien registrado pone esa bandera a 1:
0050CB88 |. B8 C4CC5000 MOV EAX,0050CCC4 ; |ASCII "Thank you for registering !"
0050CB8D |. E8 B2CBF5FF CALL 00469744 ; \Art.00469744
0050CB92 |. A1 DCA55400 MOV EAX,[54A5DC]
0050CB97 |. C600 01 MOV BYTE PTR [EAX],1
0050CB9A |. C645 FF 01 MOV BYTE PTR [EBP-1],1
aunque lo cierto es que yo ya lo había visto antes, pues al inicio del procedimiento tenemos:
0050CACC |. A1 DCA55400 MOV EAX,[54A5DC]
0050CAD1 |. 8038 00 CMP BYTE PTR [EAX],0
0050CAD4 |. 74 13 JE SHORT 0050CAE9
0050CAD6 |. C645 FF 01 MOV BYTE PTR [EBP-1],1
0050CADA |. B8 00CC5000 MOV EAX,0050CC00 ; ASCII "You have registered version!"
0050CADF |. E8 8CCDF5FF CALL 00469870
0050CAE4 |. E9 E3000000 JMP 0050CBCC
lo que evidenciaba su "pequeña" importancia.
PD: se que no te gusta hacer tutoriales
Ja ja ja. Es cierto que soy un "poco" vago.
Aunque para excusarme un poco también he de decir que tampoco dispongo de mucho tiempo.
De todas formas todo depende de a quien vaya dirigido. Si creo que no va a ser de utilidad porque nadie lo va a leer, ya ni se me pasa por la cabeza hacerlo. Pero también es cierto que tengo creado tutoriales "exclusivos" para algunas personas que se mostraban interesadas en privados.
Saludos.
Je,je,je,je... Bueno, parece que ya no me necesitas...
@PeterPunk77: Buen trabajo amigo (aunque, la verdad, no esperaba menos de ti
)
Saludos!
Muchas gracias, aunque era lo suficientemente sencillo para que tú o Tena os aburriéseis.
Saludos nuevamente (que MCKSys contestó mientras posteaba).