Buenas !!
Estoy trasteando con un programa, version demo que tiene estas limitaciones:
- Te deja usarlo 90 min
- No te deja guardar lo que diseñas
He estado mirando como funciona el registro de este programa y sigue estos parametros:
Te envian una clave, la instalas en el ordenador, se te abre una ventana y tienes que meter un nombre de usuario y contraseña, y se desbloquea.
Lo he abierto con olly a ver que veia, pero no veo nada, mejor dicho veo muchas cosas. Tengo el olly abierto con el programa funcionando a ver cuando me salen los 90 minutos.
Alguna sugerencia para lo de guardar ¿?
Tengo algunas posibilidades, puede qyue ninguna sea cierta porque no se como funciona exactamente el keyfile.
1 - Al instalar el keyfile automaticamente se te desbloquea todo.
2 - Cada vez que incias el programa comprueba que existe el archivo keyfile y que esta registrado y te habilita las opciones.
Gracias por vuestro tiempo y un saludo !!
Hola!
Puedes probar con CreateFile. Asi verás qué hace cuando abre el archivo key.
Saludos!
La verdad esque estoy bastante verde con estos temas
Sigo mirando en Olly. No usa createfile, estoy mirando las API que usa y tampoco se muy bien que buscar.
Alguna idea ?
Mientras estoy mirando sus apis, que hace cada una etc
Ire comentando mis avances !
P.D: He pensado en comprar la licencia para poder comparar, pero cuesta mas de 1200€, asi que descartado, intentare conseguir alguna version anterior que este registrada aver si veo algo mas claro.
Gracias y un saludo !
Ctrl+G y escribi CreateFile [ENTER]
y luego pones el Bp con F2, das run y si no cae es porque no la usa jeje
Otra es esperar los 90 minutos y pausar el Olly, Alt+F9 y luego aceptas el mensaje, y caeera en oly. Aunque aqui debes esperar hora y media :(
slds
Tiene que comprobar el fichero, así que debería de usar CreateFile(antes de arrancar). Aunque quizá almacene un flag en el registro. También puedes probar con SetTimer, no es difícil trucar un SetTimer para no esperar los 90 minutos. Y sino desde el inicio y con paciencia, no es elegante ni rápido pero cuando estás sin ideas no suele fallar.
No usa CreateFile, por eso pienso que quizas una vez registrado ya no vuelve a comprobar el archivo de claves, con SetTimer como se muestra el tiempo ? es decir como tengo que encontrar los 90 min de prueba, en min, en segundos ... ?
Estoy buscando tambien los GetTimeLocal y GetSystemTime
Conseguir no lo conseguire, pero como cada cosa que me encuentro busco a ver que hace y como funciona aprender por lo menos aprendo
Gracias por la ayuda !
Probaste con AMBAS versiones de CreateFile ??? ANSI y UNICODE??
Cita de: MCKSys Argentina en 7 Mayo 2010, 01:14 AM
Probaste con AMBAS versiones de CreateFile ??? ANSI y UNICODE??
Podrias buscar la constante en milisegundos de 90minutos, osea 5400000 pero en hexa, osea 005265C0.
slds
Cita de: gil13 en 6 Mayo 2010, 23:48 PM
con SetTimer como se muestra el tiempo ? es decir como tengo que encontrar los 90 min de prueba, en min, en segundos ... ?
Estoy buscando tambien los GetTimeLocal y GetSystemTime
A SetTimer le pasas el tiempo en milisegundos, mira la msdn...
No creo que use las otras, pues sería por polling(espera activa) o algo similar?, esto está muy mal visto entre programadores no? y pues como que es un poco más complicado de implementar
Buenas, os cuento como va
Llego al SetTimer, localizo el tiempo, lo cambio a 2 min, (120s, 120000ms --> 1D4C0) Cuando me salta al ventana paro el olly, alt+F9 y me salta esto.
00512CF5 |. 48 DEC EAX ; Switch (cases 1..7)
00512CF6 83F8 06 CMP EAX,6
00512CF9 |. 0F87 8B000000 JA Capture.00512D8A
00512CFF |. FF2485 EC2D510>JMP DWORD PTR DS:[EAX*4+512DEC]
00512D06 |> 8D7424 10 LEA ESI,DWORD PTR SS:[ESP+10] ; Case 1 of switch 00512CF5
00512D0A |. C74424 08 8CD7>MOV DWORD PTR SS:[ESP+8],Capture.00BFD78>
00512D12 |. E8 99360000 CALL Capture.005163B0
00512D17 |. 8D7424 1C LEA ESI,DWORD PTR SS:[ESP+1C]
00512D1B |. E8 90360000 CALL Capture.005163B0
00512D20 |. B8 01000000 MOV EAX,1
00512D25 |. 5E POP ESI
00512D26 |. C3 RETN
00512D27 |> 8D7424 10 LEA ESI,DWORD PTR SS:[ESP+10] ; Case 2 of switch 00512CF5
00512D2B |. C74424 08 8CD7>MOV DWORD PTR SS:[ESP+8],Capture.00BFD78>
00512D33 |. E8 78360000 CALL Capture.005163B0
00512D38 |. 8D7424 1C LEA ESI,DWORD PTR SS:[ESP+1C]
00512D3C |. E8 6F360000 CALL Capture.005163B0
00512D41 |. B8 02000000 MOV EAX,2
00512D46 |. 5E POP ESI
00512D47 |. C3 RETN
00512D48 |> 8D7424 10 LEA ESI,DWORD PTR SS:[ESP+10] ; Case 6 of switch 00512CF5
00512D4C |. C74424 08 8CD7>MOV DWORD PTR SS:[ESP+8],Capture.00BFD78>
00512D54 |. E8 57360000 CALL Capture.005163B0
00512D59 |. 8D7424 1C LEA ESI,DWORD PTR SS:[ESP+1C]
00512D5D |. E8 4E360000 CALL Capture.005163B0
00512D62 |. B8 04000000 MOV EAX,4
00512D67 |. 5E POP ESI
00512D68 |. C3 RETN
00512D69 |> 8D7424 10 LEA ESI,DWORD PTR SS:[ESP+10] ; Case 7 of switch 00512CF5
00512D6D |. C74424 08 8CD7>MOV DWORD PTR SS:[ESP+8],Capture.00BFD78>
00512D75 |. E8 36360000 CALL Capture.005163B0
00512D7A |. 8D7424 1C LEA ESI,DWORD PTR SS:[ESP+1C]
00512D7E |. E8 2D360000 CALL Capture.005163B0
00512D83 |. B8 08000000 MOV EAX,8
00512D88 |. 5E POP ESI
00512D89 |. C3 RETN
00512D8A |> 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10] ; Default case of switch 00512CF5
00512D8E |. 8B35 BCA2B500 MOV ESI,DWORD PTR DS:[<&KERNEL32.Interlo>; kernel32.InterlockedDecrement
00512D94 |. C74424 08 8CD7>MOV DWORD PTR SS:[ESP+8],Capture.00BFD78>
00512D9C |. 85C0 TEST EAX,EAX
Seguire contando que ocurre.
Gracias y un saludo.
A ver, creo que está mal enfocado, sí, vale, el programa se cierra a los 90 minutos pero también tiene otra limitación, la de guardar. O sea que ahí no encontrarás nada salvo que no se te cierre a los 90 minutos.
La comprobación de si está registrado, se hace antes del SetTimer es donde tienes que mirar, es un poco la búsqueda hacia atrás del SetTimer, no haces nada siguiendo el hook del timer, salvo que no se te cierre.
Es como, para que lo entiendas, los CrackMes más sencillos que son un salto y un MessageBox, tú miras después del MessageBox o antes? después ya se está cerrando el programa... así que poco puedes hacer
Buenas !
Si, eso lo tenia claro que tiene que ser antes, yo creo que incluso antes de que se cargue la interfaz del programa busca si esta o no registrado (sale un pantalla de carga antes de iniciar la interfaz).
Luego cuando tenga un poco de timpo volvere a cargarlo y probare a ver que encuentro.
En realidad lo de que se te cierre a los 90 min tampoco es mucho problema, el verdadero problema es que no te deje guardar.
Gracias por vuestro tiempo y seguire contanto lo que miro !!
buenas de nuevo, he sacado 10 minutillos, comento:
He encontrado un CreateFile en ANSI y 11 en Unicode, la que me ha parecido mas interesante ha sido la de ANSI, esto me dice:
00A6BC56 |. 50 PUSH EAX ; /hTemplateFile => NULL
00A6BC57 |. 50 PUSH EAX ; |Attributes => 0
00A6BC58 |. 6A 03 PUSH 3 ; |Mode = OPEN_EXISTING
00A6BC5A |. 50 PUSH EAX ; |pSecurity => NULL
00A6BC5B |. 6A 03 PUSH 3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00A6BC5D |. 68 00000040 PUSH 40000000 ; |Access = GENERIC_WRITE
00A6BC62 |. 68 10B9BC00 PUSH Capture.00BCB910 ; |FileName = "CONOUT$"
00A6BC67 |. FF15 9CA3B500 CALL DWORD PTR DS:[<&KERNEL32.CreateFileA>] ; \CreateFileA
He estado curioseando en GetStHandle, en SetStHandle, con GetFileSize, ReadFile etc
Ningun GetFileSize me da un tamaño directamente.
Alguna idea ? Yo sigo curioseando.
Gracias y un saludo !!
CONOUT$ creo que es la forma de referirse en windows a la salida estándar, o sea, CONsole OUTput
GetStdHandle es para cosas parecidas
Ninguna creo que pueda servir para verificar si existe un fichero de registro.
Exactamente que hace al intentar Guardar? Te muestra un mensaje? no hace nada?
El boton de Guardar esta deshabilitado? Como es un Demo es posible que no este esa parte del codigo de guardar.
slds
Me he estado leyendo los msdn y sigo sin tener muichas cosas claras.
Lam opcion guardada viene desactivada (en gris) es la demo y la extended, lo unico que hace la clave es activar el menu guardar y descativar el limite de tiempo.
Luego sigo probando !!
Gracias y un saludo !
Aha, entonces podrias tratar por ese lado.. Fijate con un editor de recurso el id del menu guardar, y luego lo buscas en olly...
Probe ya y veia las capertas de lso bitmaps, cursores e iconos, y una carpeta que pone 24 con este codigo
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Hasta donde yo se esto regula con que privilegios se abrira el ejecutable, con el usuario que haya inciado sesion.
El uiAccess desconocia para que funcionaba asi que mire y sirve para indicar si al aplicacion tiene que estar en una ubicacion segura del sistema de windows
Un saludo !
P.D: Uso ResHack