El programa en cuestión es el maxiloto.
He dado muchas vueltas al código y he descubierto lo siguiente:
El programa te da un numero de activación de 32 dígitos, los 24 primeros los saca leyendo el numero de serie del disco duro y los ocho últimos son fijos
El serial valido esta compuesto de 24 dígitos. El programa los descompone en grupos de ocho dígitos. Realiza un Xor de cada uno de los tres grupos de ocho dígitos con cada grupo de ocho dígitos del numero de 32 dígitos, menos los últimos ocho.
Hay una zona del código donde después de hacer el Xor mencionado anteriormente se realizan tres llamadas a una función.
Esta función lo que hace es modificar el código ejecutable del propio programa utilizando el serial valido y el numero de activación. Modifica tres zonas de memoria.
Al final hace una comprobación del primer byte de la primera zona de memoria y si es correcto te registra. He conseguido registrarme cambiando este salto pero las opciones que se supone funcionan al estar registrado no lo hacen correctamente ya que el código que intenta acceder al ejecutar estas opciones es el que ha modificado utilizando el numero de activación y el serial valido.
Alguien me puede dar alguna pista de cómo atacar el programa.
http://www.maximaloto.com/archivos/maxiloto.exe
Gracias por adelantado
El numero de serie consta de 24 digitos y los separa en tres de 8. Mete el numero que quieras y para el programa por esta zona de codigo.
00402013 . BE 080F4300 MOV ESI,<JMP.&kernel32.GetVolumeInformat>
00402018 . 68 23204000 PUSH MAXILOTO.00402023
0040201D . FF25 CD404300 JMP DWORD PTR DS:[4340CD]
00402023 . A1 83B54300 MOV EAX,DWORD PTR DS:[43B583]
00402028 . 50 PUSH EAX
00402029 . 8F05 83B54300 POP DWORD PTR DS:[43B583]
0040202F . 8B1D 1E4B4300 MOV EBX,DWORD PTR DS:[434B1E]
00402035 . 33C3 XOR EAX,EBX
00402037 . 331D 83B54300 XOR EBX,DWORD PTR DS:[43B583]
0040203D . 81F3 78563412 XOR EBX,12345678
00402043 . 8B35 224B4300 MOV ESI,DWORD PTR DS:[434B22]
00402049 . 3335 83B54300 XOR ESI,DWORD PTR DS:[43B583]
0040204F . 3105 6FB54300 XOR DWORD PTR DS:[43B56F],EAX ; XOR de el 1º numeros de serie y key
00402055 . 311D 73B54300 XOR DWORD PTR DS:[43B573],EBX ; XOR de el 2º numeros de serie y key
0040205B . 3135 77B54300 XOR DWORD PTR DS:[43B577],ESI ; XOR de el 3º numeros de serie y key
00402061 . B9 F8F74000 MOV ECX,MAXILOTO.0040F7F8
00402066 . 81E9 00104000 SUB ECX,MAXILOTO.<ModuleEntryPoint>
0040206C . 68 FE4A4300 PUSH MAXILOTO.00434AFE
00402071 . 6A 40 PUSH 40
00402073 . 51 PUSH ECX
00402074 . 68 00104000 PUSH MAXILOTO.<ModuleEntryPoint>
00402079 . E8 C6EE0200 CALL <JMP.&kernel32.VirtualProtect>
0040207E . FF75 F8 PUSH DWORD PTR SS:[EBP-8]
00402081 . FF75 FC PUSH DWORD PTR SS:[EBP-4]
00402084 . E8 6EE50200 CALL MAXILOTO.004305F7 ;primera de las tres llamadas para modificar primera zona de memoria
00402089 . FF75 F0 PUSH DWORD PTR SS:[EBP-10]
0040208C . FF75 F4 PUSH DWORD PTR SS:[EBP-C]
0040208F . E8 63E50200 CALL MAXILOTO.004305F7 ;segunda de las tres llamadas para modificar segunda zona de memoria
00402094 . FF75 E8 PUSH DWORD PTR SS:[EBP-18]
00402097 . FF75 EC PUSH DWORD PTR SS:[EBP-14]
0040209A . E8 58E50200 CALL MAXILOTO.004305F7 ;tercera de las tres llamadas para modificar tercera zona de memoria
...................................................
004020D7 > B8 AD5A4000 MOV EAX,MAXILOTO.00405AAD
004020DC . 8138 4D415849 CMP DWORD PTR DS:[EAX],4958414D ;comparacion con primer byte de primera zona de memoria modificada anteriormente que te registra
Despues por ejemplo si intentas imprimir salta a las zonas de memoria modificadas anteriormente y el programa se pierde ya que no encuentra las instrucciones que busca.
¿Alguien me puede ayudar?
Saludos
creo que yo puedo ayudarte. Ponte en contacto conmigo kiko_kiko_7@hotmail.com
¿consiguieron algo? yo lo estoy mirando y he llegado hasta el mismo sitio y lo unico que se me ocurre es usar brute force pero es algo complejo porque usa base 16 y el codigo de activacion tiene que ser 0x18 de largo con lo cual me llevaria siglos sacar el serial.
@aguml: Viste la fecha del post?