PDA

Ver la versión completa : Ayuda con un programa obsoleto.



Vortex
05-06-2012, 20:35
Hola amigos, estoy intentando registrar un programa hecho en Delphi pero me esta dando problemas, a ver si podéis echarme una mano.

El programa en custión es el MaxiLoto v20.04, es un programa que ya no se vende, su web esta cerrada (maximaloto.com) por lo que resulta imposible comprarlo o adquirir una licencia, de hecho intenté ponerme en contacto con ellos y me dijeron que ya no lo iban a vender, por eso me he animado a crackearlo, bueno al menos a intentarlo.

Ya que su web no esta operativa la última versión no esta disponible (v20.20) la única que se puede descargar de internet es la v20.04,
maxiloto.uptodown.com

Mis logros hasta el momento son estos:

CPU Disasm
Address Hex dump Command Comments
004018CE |. B9 39114100 MOV ECX,00411139 ; Entry point
004018D3 |. 81E9 00104000 SUB ECX,<ModuleEntryPoint>
004018D9 |. 68 8D9F4600 PUSH OFFSET 00469F8D ; /pOldProtect = maxiloto.469F8D -> PAGE_EXECUTE_READ
004018DE |. 53 PUSH EBX ; |NewProtect => [469F8D] = PAGE_EXECUTE_READ
004018DF |. 51 PUSH ECX ; |Size => 65849.
004018E0 |. 68 00104000 PUSH <ModuleEntryPoint> ; |Address = 00401000
004018E5 |. E8 DCA30500 CALL <JMP.&kernel32.VirtualProtect> ; \KERNEL32.VirtualProtect
004018EA |. B8 E2AB4000 MOV EAX,0040ABE2
004018EF |. 8138 4D415849 CMP DWORD PTR DS:[EAX],4958414D ;
004018F5 74 53 JE SHORT 0040194A ; SI SALTA, EL PROGRAMA SE EJECUTA COMO REGISTRADO
004018F7 |. C705 6B9F4600 MOV DWORD PTR DS:[469F6B],1

En esta parte si toma ese salto el programa se ejecuta como si estuviese activado, pero si intentas entrar en 2 de las opciones el programa da error y se cierra.


CPU Disasm
Address Hex dump Command Comments
0041F62B |. 833D 6B9F4600 CMP DWORD PTR DS:[469F6B],0
0041F632 75 0F JNE SHORT 0041F643 <--- CAMBIAR SALTO PARA EVITAR MSG 'GESTION SORTEOS'
0041F634 |. C605 5C324600 MOV BYTE PTR DS:[46325C],1
0041F63B |. FF75 08 PUSH DWORD PTR SS:[ARG.1]
0041F63E |. E8 C019FFFF CALL 00411003
0041F643 |> C705 9B334600 MOV DWORD PTR DS:[46339B],0

Si cambias ese salto esa opción vuelve a funcionar y no tira error.


CPU Disasm
Address Hex dump Command Comments
004023EA 803D 35354600 CMP BYTE PTR DS:[463535],0
004023F1 75 1E JNE SHORT 00402411 ;
004023F3 |. 6A 00 PUSH 0 ; InitParam = 0
004023F5 |. 68 B8CF4000 PUSH 0040CFB8 ; DialogProc = maxiloto.40CFB8
004023FA |. 6A 00 PUSH 0 ; hParent = NULL
004023FC |. 68 75270000 PUSH 2775 ; TemplateName = 2775
00402401 |. FF35 0A9F4600 PUSH DWORD PTR DS:[469F0A] ; hInst = 00400000 ('maxiloto')
00402407 |. E8 A0970500 CALL <JMP.&user32.DialogBoxParamA> ; Jump to user32.DialogBoxParamA <-- AQUI DEVUELVE UN ERROR DE EXCEPCION
0040240C |. E9 DC000000 JMP 004024ED

Pero si intentas entrar en la opción 'Visor de columnas' va a parar a esta parte del código y al entrar en la Call devuelve un error de excepcion no continuable y hasta aquí he llegado, he intentado tracear la call pero me pierdo.

Si alguno de vosotros se le ocurre algo le agradecería que me echase una manita. ;)

Gracias por vuestro tiempo.
Salu2

hystd
05-06-2012, 21:56
¿Qué es lo que hay en la dirección 0040ABE2 después de ejecutar la instrucción MOV EAX,0040ABE2? (de tu primer trozo de código que has puesto). Tal vez no te interese cambiar la instrucción de salto JE por JNE... sino mantener el salto y forzar para que en esa zona de memoria esté lo que tiene que estar, para que el CMP haga que se ejecute el salto.

Con estos datos poco se puede hacer. Necesitaría tracear personalmente :p

Un saludo.

Vortex
05-06-2012, 22:18
Hola hystd, desde la dirección 40ABE2 hasta la 41113 (creo) el programa almacena una serie de datos que va extrayendo del numero de licencia, pero no estoy seguro de esto, cuando ejecutas el programa y clicas el botón activar te aparece un número de licencia que genera a partir de un numero de serie del PC y crea el archivo maxiloto.dat con el número de activación que tu le hayas metido, osea que en principio se traga cualquier número de 24 dígitos y lo guarda en ese archivo, pero claro, al ejecutarlo de nuevo lo comprueba y si no es el correcto se ejecuta con opciones desactivadas.

Te agradecería que le echases un vistazo porque no ya no se por donde seguir, es obvio que algo se me escapa.

Salu2

Vortex
06-06-2012, 11:35
Bueno ahí va mas info....

En esta zona es donde compara el serial introducido:

CPU Disasm
Address Hex dump Command Comments
00401778 |> \BB 44384600 MOV EBX,OFFSET 00463844
0040177D |. BA 3D574600 MOV EDX,OFFSET 0046573D ; ASCII "99999999"
00401782 |. 81C3 31010000 ADD EBX,131
00401788 |. 33C0 XOR EAX,EAX
0040178A |> 8A0C03 /MOV CL,BYTE PTR DS:[EAX+EBX]
0040178D |. 880C02 |MOV BYTE PTR DS:[EAX+EDX],CL
00401790 |. 40 |INC EAX
00401791 |. 83F8 08 |CMP EAX,8
00401794 |.^ 75 F4 \JNE SHORT 0040178A
00401796 |. 40 INC EAX
00401797 |. C60402 00 MOV BYTE PTR DS:[EAX+EDX],0
0040179B |. 68 3D574600 PUSH OFFSET 0046573D ; /Arg1 = ASCII "99999999"
004017A0 |. E8 B3A50500 CALL 0045BD58 ; \maxiloto.0045BD58
004017A5 |. A3 C19F4600 MOV DWORD PTR DS:[469FC1],EAX
004017AA |. BB 44384600 MOV EBX,OFFSET 00463844
004017AF |. BA 3D574600 MOV EDX,OFFSET 0046573D ; ASCII "99999999"
004017B4 |. 81C3 31010000 ADD EBX,131
004017BA |. 83C3 08 ADD EBX,8
004017BD |. 33C0 XOR EAX,EAX
004017BF |> 8A0C03 /MOV CL,BYTE PTR DS:[EAX+EBX]
004017C2 |. 880C02 |MOV BYTE PTR DS:[EAX+EDX],CL
004017C5 |. 40 |INC EAX
004017C6 |. 83F8 08 |CMP EAX,8
004017C9 |.^ 75 F4 \JNE SHORT 004017BF
004017CB |. 40 INC EAX
004017CC |. C60402 00 MOV BYTE PTR DS:[EAX+EDX],0
004017D0 |. 68 3D574600 PUSH OFFSET 0046573D ; /Arg1 = ASCII "99999999"
004017D5 |. E8 7EA50500 CALL 0045BD58 ; \maxiloto.0045BD58
004017DA |. A3 C59F4600 MOV DWORD PTR DS:[469FC5],EAX
004017DF |. BB 44384600 MOV EBX,OFFSET 00463844
004017E4 |. BA 3D574600 MOV EDX,OFFSET 0046573D ; ASCII "99999999"
004017E9 |. 81C3 31010000 ADD EBX,131
004017EF |. 83C3 10 ADD EBX,10
004017F2 |. 33C0 XOR EAX,EAX
004017F4 |> 8A0C03 /MOV CL,BYTE PTR DS:[EAX+EBX]
004017F7 |. 880C02 |MOV BYTE PTR DS:[EAX+EDX],CL
004017FA |. 40 |INC EAX
004017FB |. 83F8 08 |CMP EAX,8
004017FE |.^ 75 F4 \JNE SHORT 004017F4
00401800 |. 40 INC EAX
00401801 |. C60402 00 MOV BYTE PTR DS:[EAX+EDX],0
00401805 |. 68 3D574600 PUSH OFFSET 0046573D ; /Arg1 = ASCII "99999999"
0040180A |. E8 49A50500 CALL 0045BD58 ; \maxiloto.0045BD58
0040180F |. A3 C99F4600 MOV DWORD PTR DS:[469FC9],EAX
00401814 |. 60 PUSHAD
00401815 |. 68 48204600 PUSH OFFSET 00462048 ; /Arg1 = ASCII "2004A000"
0040181A |. E8 39A50500 CALL 0045BD58 ; \maxiloto.0045BD58

Vortex
06-06-2012, 17:04
Y por aquí donde va generando los datos en 40ABE2

CPU Disasm
Address Hex dump Command Comments
0045B24A /$ 55 PUSH EBP ; maxiloto.0045B24A(guessed Arg1,Arg2)
0045B24B |. 8BEC MOV EBP,ESP
0045B24D |. 8B7D 08 MOV EDI,DWORD PTR SS:[ARG.1]
0045B250 |> 57 /PUSH EDI
0045B251 |. 8B1F |MOV EBX,DWORD PTR DS:[EDI]
0045B253 |. 8B4F 04 |MOV ECX,DWORD PTR DS:[EDI+4]
0045B256 |. BA B979379E |MOV EDX,9E3779B9
0045B25B |. 8BC2 |MOV EAX,EDX
0045B25D |. C1E0 05 |SHL EAX,5
0045B260 |. BF 20000000 |MOV EDI,20
0045B265 |> 57 |/PUSH EDI
0045B266 |. 8BFB ||MOV EDI,EBX
0045B268 |. C1E7 04 ||SHL EDI,4
0045B26B |. 2BCF ||SUB ECX,EDI
0045B26D |. 8B3D C99F4600 ||MOV EDI,DWORD PTR DS:[469FC9] ; ASCII "+C/I"
0045B273 |. 33FB ||XOR EDI,EBX
0045B275 |. 2BCF ||SUB ECX,EDI
0045B277 |. 8BFB ||MOV EDI,EBX
0045B279 |. C1EF 05 ||SHR EDI,5
0045B27C |. 33F8 ||XOR EDI,EAX
0045B27E |. 2BCF ||SUB ECX,EDI
0045B280 |. 2B0D CD9F4600 ||SUB ECX,DWORD PTR DS:[469FCD]
0045B286 |. 8BF9 ||MOV EDI,ECX
0045B288 |. C1E7 04 ||SHL EDI,4
0045B28B |. 2BDF ||SUB EBX,EDI
0045B28D |. 8B3D C19F4600 ||MOV EDI,DWORD PTR DS:[469FC1]
0045B293 |. 33F9 ||XOR EDI,ECX
0045B295 |. 2BDF ||SUB EBX,EDI
0045B297 |. 8BF9 ||MOV EDI,ECX
0045B299 |. C1EF 05 ||SHR EDI,5
0045B29C |. 33F8 ||XOR EDI,EAX
0045B29E |. 2BDF ||SUB EBX,EDI
0045B2A0 |. 2B1D C59F4600 ||SUB EBX,DWORD PTR DS:[469FC5]
0045B2A6 |. 2BC2 ||SUB EAX,EDX
0045B2A8 |. 5F ||POP EDI
0045B2A9 |. 4F ||DEC EDI
0045B2AA |.^ 75 B9 |\JNE SHORT 0045B265
0045B2AC |. 5F |POP EDI
0045B2AD |. 891F |MOV DWORD PTR DS:[EDI],EBX
0045B2AF |. 894F 04 |MOV DWORD PTR DS:[EDI+4],ECX
0045B2B2 |. 8B45 0C |MOV EAX,DWORD PTR SS:[ARG.2]
0045B2B5 |. 83E8 10 |SUB EAX,10
0045B2B8 |. 3BC7 |CMP EAX,EDI
0045B2BA |. 76 05 |JBE SHORT 0045B2C1
0045B2BC |. 83C7 08 |ADD EDI,8
0045B2BF |.^ EB 8F \JMP SHORT 0045B250
0045B2C1 |> C9 LEAVE
0045B2C2 \. C2 0800 RETN 8

aguml
18-06-2012, 19:53
tengo dos noticias para ti, una buena y una mala. La buena es que la web ya esta activa, la mala es que el programa, si no tienes aunque sea un codigo de activacion valido, es incrackeable hoy por hoy, usa TEA o similar para desencriptar codigo ejecutable y si estas registrado y quieres ejecutar ciertas opciones crashea ya que depende de los 128 bits del serial y al no encriptar en el ejecutable sino que ya viene encriptado, pues sin el codigo de activacion correcto es imposible saber el contenido de los bloques encriptados. Ya puedes comprar tu licencia y si lo haces me gustaria seguir en contacto contigo y que me pases el instalador que uses, el serial, y el codigo de activacion para asi poder crear un parcheado que corra en todas las maquinas, si no lo compras, pues te tocara esperar a que alguien lo compre y colabore. Hice un tutorial de todo lo que averigue por si quieres verlo y asi te queda mas claro todo.

Vortex
21-06-2012, 12:30
Gracias amigo me gustaría ver ese tutorial que dices.