|
Mostrar Mensajes
|
Páginas: 1 [2] 3
|
11
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 21 Septiembre 2010, 13:13 pm
|
Elegante, elegante! Con solo modificar 5 lineas, has conseguido en esta versión lo que necesite tropecientos JMP en la versión anterior para ver algo de luz. Y como no, con los JMPs llegaron las excepciones (Ctrl+F9) , muy chapucero pero por las pruebas que realicé parecía funcional. La oscuridad la controle como explique anteriormente controlando la escritura de la clave MSNetOLE5. No dejando que el programa encendiera su bit. Con tu enfoque y la nueva versión me he enloquecido debido al Hardware BP saltarin que me ha salido. Para darme una satisfacción he instalado un XP en la maquina virtual, instalando la nueva versión del programa. Con XP y nueva instalación el saltarin se ha tranquilizado. Supongo que alguna otra protección habré activado para que me suceda esto en Vista. Realizada las modificaciones que me has enseñado, el programa funciona a la perfección y sin excepciones (Ctrl+F9) Si no es mucha molestia me gustaría me explicases como llegaste a descubrir el apartado: buscado porqué deshabilita ciertas opciones, traceando he llegado hasta la siguiente función, donde se encuentra la madre del cordero, aunque este sea un programa para cerdilandia. 009BB8F4 >/$ 55 PUSH EBP 009BB8F5 |. 8BEC MOV EBP,ESP 009BB8F7 |. 8B45 08 MOV EAX,DWORD PTR [EBP+8] 009BB8FA |. 8378 08 01 CMP DWORD PTR [EAX+8],1 009BB8FE |. 75 04 JNZ SHORT 009BB904 009BB900 |. B0 01 MOV AL,1 009BB902 |. 5D POP EBP ... si AL sale con 1 oculta ciertas opciones. (es un lujo para la vista tenerlo todo habilitado). ------------------------------------------------------------------ Comparando, he visto que existen algunas partes importantes ocultas: *Fichero --- Opciones Configuración: +- Configuración Validación de datos (mostrado) Ordenador de Mano (oculto) Seguimiento Actividad (mostrado) Filtros (oculto) *Informes --- Centro de Informes: Debajo del botón abrir faltan varios botones “ Diseño, Nuevo y Nuevo Planning” ------------------------------------------------------------------- ¿Para mostrar las opciones ocultas seria elegante nopear los siguientes saltos? 00A66E51 |. 74 66 JE SHORT ramat.00A66EB9 00A66E53 |. 6A 00 PUSH 0 00A66E55 |. 6A 00 PUSH 0 00A66E57 |. 6A 16 PUSH 16 00A66E59 |. 66:C785 44FFF>MOV WORD PTR SS:[EBP-BC],8C 00A66E62 |. 68 9321E800 PUSH ramat.00E82193 ; ASCII "Ordinador Ma" ... 00A66F97 |. /74 66 JE SHORT ramat.00A66FFF ... 00A67077 |. /0F84 CC000000 JE ramat.00A67149 ... 00A676B2 |. /74 66 JE SHORT ramat.00A6771A ... 00A67726 |. /74 66 JE SHORT ramat.00A6778E ... Por cierto, tomad precauciones con el saltarin (sigo en su búsquedal). LSL: gracias por tu tiempo y enseñanza.
|
|
|
12
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 20 Septiembre 2010, 16:12 pm
|
quiero entender que cada vez que reinicias y paras en el BP de la dirección 009B444D, en la ventana de información te dice que [ECX+AC] apunta a la DS:[021A1304]=00000000 Cada vez que reinicio y paro en la dirección 009B444D del desensamblador [ECX+AC] apunta a una dirección diferente.
Ejemplo:
(arranco, cargo el programa en olly y para en BP 009B444D) [ECX+AC]: apunta a DS:[02ADFF34]=00000000 ramat.@TSiglopro@GetTitolExtes$qv+0CD
En la dirección apuntada de memoria[02ADFF34], marco los 4 primeros bytes(dword):"00000000", botón derecho del ratón y en el menú selecciono Breakpoint---Hardware, on write ---Dword
Verificación del posicionamiento del breakpoint Hardware, on write: Debug --- Hardware Breakpoints, allí aparece Base:"02ADFF34", Size:"4", Stop on:"Write". Es decir, la posición deseada, sus 4 bytes y en modo de paro solo cuando la memoria sea escrita.
Reinicio la carga en olly con Ctrl+F2, para en Entry Point, sigo con Run(F9) y para otra vez en en el BP 009B444D [ECX+AC]: apunta a DS:03016DD0=00000000 ramat.@TSiglopro@GetTitolExtes$qv+0CD
Así sucesivamente, cambia la memoria apuntada cada vez que reinicio la carga del programa.
Por consiguiente, si cambia la dirección de memoria asignada, el BP Hardware no hace su función ya que apunta a una dirección no usada.
Deduzco que se me ha activado alguna protección especial al cargar una base de datos de la versión anterior. La copia pesa 1,5 mb, la podeis descargar de: http://www.megaupload.com/?d=AKL3RRT3
Para cargar una copia de seguridad de la base de datos "extensión.fbk ": Archivo --- Restaurar copiar de seguridad
La recuperación de la copia de seguridad crea una base de datos "extensión.fdb" en el directorio:
XP: C:\Documents and Settings\All Users\Datos de programa\Ag****\P*******\2009\Databases
VISTA:C:\Users\All Users\Ag****\P*******\2009\Databases
Tomad vuestras precauciones con el programa, copias de registro, punto de restauración, control de archivos nuevos o modificados, ... Pienso que debe crear o modificar algún archivo con el cual debe comparar algo. Una vez cargada la nueva base de datos es funcional pero en modo gratuito. Hay que reiniciar el programa para ver como cambia a modo Free. El tiempo de prueba se ha agotado y se ha activado la versión free. Desapareciendo entre ellas muchas funciones como por ejemplo:
Archivo --- Crear copiar de seguridad Archivo --- Restaurar copiar de seguridad Desaparecen varios accessos de la interface del programa como: "Economia", "Handled", ...
No he encontrado la vuelta atrás todavía, pero llegará.
Saludos.
|
|
|
13
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 19 Septiembre 2010, 12:32 pm
|
LSL: Ante nada agradecerte el esfuerzo en guiarme entre la penumbra
Sigamos:Hola nemus, en la dirección de memoria donde te apunta [ECX+AC], en mi ordenador es [02326DD0] le pones un BP Hardware, on write Dword. Mi problema es que no para en el BP Hardware, on write Dword, ya que si inicialmente la dirección de memoria apuntada en [ECX+AC], en mi ordenador es [021A1304]. 009B444D |. 83B9 AC000000>CMP DWORD PTR DS:[ECX+AC],0 ---------------------------------------------------------------------------- DS:[021A1304]=00000000 ramat.@TSiglopro@GetTitolExtes$qv+0CD
Pero al reiniciar el programa (Ctrl+F2), no para en Bp Hardware, debido a que en [ECX+AC], su dirección de memoria apuntada es diferente [021A1304]009B444D |. 83B9 AC000000>CMP DWORD PTR DS:[ECX+AC],0 ----------------------------------------------------------------------------- DS:[021A1304]=00000000 ramat.@TSiglopro@GetTitolExtes$qv+0CD
Supongo que debido a los innumerables ensayos, habré activado alguna protección. He restaurado el registro de windows, incluso he restaurado el estado. Pero sigue cambiandome la dirección apuntada.
Seguiré mirando, a ver si doy con ello.
Saludos.
|
|
|
14
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 16 Septiembre 2010, 15:28 pm
|
Vuelta al estudio, a partir de hoy me toca trabajar las tardes-noche, durmiendo algo por las noches . Vamos ver si aprovecho estos días.
Anduve rastreando la posición de memoria [ECX+AC], en la versión nueva que ha posteado LSL.
Tambien decir que si alguien anduvo trasteando con la versión que colgué, la situación es diferente debido a que son dos valores a seguir, los de los apuntadores [EDX+98] y [ECX+A8] . Para no liarnos voy a seguir con la nueva versión ya que el objetivo de trabajar con la vieja versión fue la comprensión del desempacado Yodas Protector.
Con los datos facilitados por LSL:aqui os pongo enlace de descarga de la ultima versión free, para que no os de problemas de fechas de instalación, etc.; además esta versión no tiene packer y esta compilada en Borland C++ 1999 (y pesa 23,67 MB para la descarga) http://www.mediafire.com/?do3ts90rhdd0yod, el periodo de prueba dice es de 60 dias, desde su instalación, con el limite de que solo se puede utiizar hasta 15/02/11. miren este código: en el valor que se hay en [ECX+AC] tenemos el indicativo o puntero de la versión, siendo 0 la de evaluación, 1 Lite, 2 Profesional, 4 Studio, 8 Enterprise, 10 Consultant 009B444D |. 83B9 AC000000>CMP DWORD PTR [ECX+AC],0 ; el valor en dicha direccion identifica la versión a mostrar 009B4454 |. 0F85 F7000000 JNZ 009B4551 ; salta para versiones superiores a la de evaluacion La cuestión es encontrar en el primer sitio que a la direccion e [ECX+AC] de referencia se le pasa el valor 0 para pasarle el valor de la versión que nos interese tener, y con esto se acaba el asunto de los 60 del periodo de evaluación, pero nos queda el escoyo de saltarnos la fecha del 15/02/11 para seguir utilizando el programa a partir de dicha fecha. He intentado seguir los apuntadores a ese valor de memoria, pero varia la dirección de memoria apuntada, es decir que no me sirve poner un breakpoint(BP) on Memory en el byte correspondiente, tampoco me sirve poner un hardware BP. ¿Algún consejo ?
Gracias.
|
|
|
15
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 4 Septiembre 2010, 22:05 pm
|
Si está en BCC puedes usar Dede para ver código y así descubrir dónde está el tema. De última, puedes hacer un .map y cargarlo en Olly. Mejora mucho la Vision del proggie Saludos! Probé en su día reemplazar las etiquetas con el .map, pero no mejoro demasiado.
Gracias ¿Otra idea? Te mandé un MP nemus.
Mintaka
Perdona no me había enterado del MP.
¿Estas seguro que el archivo que me has enviado es el modificado? No se salta la NAG inicial, no carga bases de datos fuera de fecha (activándose el bit de la clave de registro MSNetOLE5), y cuando lo arranco fuera de periodo solo funcionan las funciones free. Es decir, hace lo que tiene que hacer el programa cuando pasa de fecha, seguir funcionando con las funciones free.
De todas las maneras muy agradecido por el intento, y mirate si me enviaste el archivo correcto que debe ser eso.
Salut!aqui os pongo enlace de descarga de la ultima versión free, para que no os de problemas de fechas de instalación, etc.; además esta versión no tiene packer y esta compilada en Borland C++ 1999 (y pesa 23,67 MB para la descarga) http://www.mediafire.com/?do3ts90rhdd0yod, el periodo de prueba dice es de 60 dias, desde su instalación, con el limite de que solo se puede utiizar hasta 15/02/11. miren este código: en el valor que se hay en [ECX+AC] tenemos el indicativo o puntero de la versión, siendo 0 la de evaluación, 1 Lite, 2 Profesional, 4 Studio, 8 Enterprise, 10 Consultant 009B444D |. 83B9 AC000000>CMP DWORD PTR [ECX+AC],0 ; el valor en dicha direccion identifica la versión a mostrar 009B4454 |. 0F85 F7000000 JNZ 009B4551 ; salta para versiones superiores a la de evaluacion La cuestión es encontrar en el primer sitio que a la direccion e [ECX+AC] de referencia se le pasa el valor 0 para pasarle el valor de la versión que nos interese tener, y con esto se acaba el asunto de los 60 del periodo de evaluación, pero nos queda el escoyo de saltarnos la fecha del 15/02/11 para seguir utilizando el programa a partir de dicha fecha. En la versión 2007 esta la misma sección:00A28234 |. 83BA 98000000 >CMP DWORD PTR DS:[EDX+98],0 00A2823B |. 75 75 JNZ SHORT ramat.00A282B2 00A2823D |. 66:C745 B0 200>MOV WORD PTR SS:[EBP-50],20 00A28243 |. BA 26E6DE00 MOV EDX,ramat.00DEE626 ; ASCII " 2007 Free" 00A28248 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 00A2824B |. E8 70612A00 CALL ramat.00CCE3C0 00A28250 |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A28253 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 00A28256 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A28259 |. E8 AE632A00 CALL ramat.00CCE60C 00A2825E |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28261 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 00A28264 |. BA 02000000 MOV EDX,2 00A28269 |. E8 5A632A00 CALL ramat.00CCE5C8 00A2826E |. 66:C745 B0 2C0>MOV WORD PTR SS:[EBP-50],2C 00A28274 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 00A28277 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00A2827A |. E8 79632A00 CALL ramat.00CCE5F8 00A2827F |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00A28282 |. 66:C745 B0 380>MOV WORD PTR SS:[EBP-50],38 00A28288 |. 50 PUSH EAX 00A28289 |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A2828C |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A2828F |. BA 02000000 MOV EDX,2 00A28294 |. E8 2F632A00 CALL ramat.00CCE5C8 00A28299 |. 58 POP EAX 00A2829A |. 66:C745 B0 2C0>MOV WORD PTR SS:[EBP-50],2C 00A282A0 |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A282A3 |. 8B55 A0 MOV EDX,DWORD PTR SS:[EBP-60] 00A282A6 |. 64:8915 000000>MOV DWORD PTR FS:[0],EDX 00A282AD |. E9 34030000 JMP ramat.00A285E6 00A282B2 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 00A282B5 |. 83B9 98000000 >CMP DWORD PTR DS:[ECX+98],5 00A282BC |. 0F85 8C000000 JNZ ramat.00A2834E 00A282C2 |. 66:C745 B0 440>MOV WORD PTR SS:[EBP-50],44 00A282C8 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 00A282CB |. E8 D4BC9DFF CALL ramat.00403FA4 00A282D0 |. 50 PUSH EAX 00A282D1 |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A282D4 |. BA 31E6DE00 MOV EDX,ramat.00DEE631 ; ASCII " Betatester" 00A282D9 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 00A282DC |. E8 DF602A00 CALL ramat.00CCE3C0 00A282E1 |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A282E4 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 00A282E7 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A282EA |. 59 POP ECX 00A282EB |. E8 30632A00 CALL ramat.00CCE620 00A282F0 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 00A282F3 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00A282F6 |. E8 FD622A00 CALL ramat.00CCE5F8 00A282FB |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00A282FE |. 66:C745 B0 500>MOV WORD PTR SS:[EBP-50],50 00A28304 |. 50 PUSH EAX 00A28305 |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28308 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 00A2830B |. BA 02000000 MOV EDX,2 00A28310 |. E8 B3622A00 CALL ramat.00CCE5C8 00A28315 |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28318 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 00A2831B |. BA 02000000 MOV EDX,2 00A28320 |. E8 A3622A00 CALL ramat.00CCE5C8 00A28325 |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28328 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A2832B |. BA 02000000 MOV EDX,2 00A28330 |. E8 93622A00 CALL ramat.00CCE5C8 00A28335 |. 58 POP EAX 00A28336 |. 66:C745 B0 440>MOV WORD PTR SS:[EBP-50],44 00A2833C |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A2833F |. 8B55 A0 MOV EDX,DWORD PTR SS:[EBP-60] 00A28342 |. 64:8915 000000>MOV DWORD PTR FS:[0],EDX 00A28349 |. E9 98020000 JMP ramat.00A285E6 00A2834E |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 00A28351 |. 83B9 A8000000 >CMP DWORD PTR DS:[ECX+A8],0 00A28358 |. 75 44 JNZ SHORT ramat.00A2839E 00A2835A |. 66:C745 B0 5C0>MOV WORD PTR SS:[EBP-50],5C 00A28360 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 00A28363 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00A28366 |. E8 8D622A00 CALL ramat.00CCE5F8 00A2836B |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00A2836E |. 66:C745 B0 680>MOV WORD PTR SS:[EBP-50],68 00A28374 |. 50 PUSH EAX 00A28375 |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28378 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A2837B |. BA 02000000 MOV EDX,2 00A28380 |. E8 43622A00 CALL ramat.00CCE5C8 00A28385 |. 58 POP EAX 00A28386 |. 66:C745 B0 5C0>MOV WORD PTR SS:[EBP-50],5C 00A2838C |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A2838F |. 8B55 A0 MOV EDX,DWORD PTR SS:[EBP-60] 00A28392 |. 64:8915 000000>MOV DWORD PTR FS:[0],EDX 00A28399 |. E9 48020000 JMP ramat.00A285E6 00A2839E |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 00A283A1 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],8 00A283A8 |. 74 36 JE SHORT ramat.00A283E0 00A283AA |. 66:C745 B0 740>MOV WORD PTR SS:[EBP-50],74 00A283B0 |. BA 3DE6DE00 MOV EDX,ramat.00DEE63D ; ASCII " Enterprise" 00A283B5 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 00A283B8 |. E8 03602A00 CALL ramat.00CCE3C0 00A283BD |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A283C0 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 00A283C3 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A283C6 |. E8 41622A00 CALL ramat.00CCE60C 00A283CB |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A283CE |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 00A283D1 |. BA 02000000 MOV EDX,2 00A283D6 |. E8 ED612A00 CALL ramat.00CCE5C8 00A283DB |. E9 96010000 JMP ramat.00A28576 00A283E0 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 00A283E3 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],4 00A283EA |. 74 36 JE SHORT ramat.00A28422 00A283EC |. 66:C745 B0 800>MOV WORD PTR SS:[EBP-50],80 00A283F2 |. BA 49E6DE00 MOV EDX,ramat.00DEE649 ; ASCII " Studio" 00A283F7 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 00A283FA |. E8 C15F2A00 CALL ramat.00CCE3C0 00A283FF |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A28402 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] 00A28405 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A28408 |. E8 FF612A00 CALL ramat.00CCE60C 00A2840D |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28410 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 00A28413 |. BA 02000000 MOV EDX,2 00A28418 |. E8 AB612A00 CALL ramat.00CCE5C8 00A2841D |. E9 54010000 JMP ramat.00A28576 00A28422 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 00A28425 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],2 00A2842C |. 74 36 JE SHORT ramat.00A28464 00A2842E |. 66:C745 B0 8C0>MOV WORD PTR SS:[EBP-50],8C 00A28434 |. BA 51E6DE00 MOV EDX,ramat.00DEE651 ; ASCII " Professional" 00A28439 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] 00A2843C |. E8 7F5F2A00 CALL ramat.00CCE3C0 00A28441 |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A28444 |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] 00A28447 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A2844A |. E8 BD612A00 CALL ramat.00CCE60C 00A2844F |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28452 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] 00A28455 |. BA 02000000 MOV EDX,2 00A2845A |. E8 69612A00 CALL ramat.00CCE5C8 00A2845F |. E9 12010000 JMP ramat.00A28576 00A28464 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 00A28467 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],1 00A2846E |. 74 36 JE SHORT ramat.00A284A6 00A28470 |. 66:C745 B0 980>MOV WORD PTR SS:[EBP-50],98 00A28476 |. BA 5FE6DE00 MOV EDX,ramat.00DEE65F ; ASCII " Lite" 00A2847B |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20] 00A2847E |. E8 3D5F2A00 CALL ramat.00CCE3C0 00A28483 |. FF45 BC INC DWORD PTR SS:[EBP-44] 00A28486 |. 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20] 00A28489 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00A2848C |. E8 7B612A00 CALL ramat.00CCE60C 00A28491 |. FF4D BC DEC DWORD PTR SS:[EBP-44] 00A28494 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20] 00A28497 |. BA 02000000 MOV EDX,2 00A2849C |. E8 27612A00 CALL ramat.00CCE5C8 00A284A1 |. E9 D0000000 JMP ramat.00A28576 00A284A6 |> 8D4D A0 LEA ECX,DWORD PTR SS:[EBP-60] 00A284A9 |. 51 PUSH ECX 00A284AA |. 6A 00 PUSH 0 00A284AC |. 6A 00 PUSH 0 00A284AE |. 6A 00 PUSH 0 00A284B0 |. 6A 01 PUSH 1 00A284B2 |. 68 988F4000 PUSH ramat.00408F98 ; Entry address Me pongo a mirarlo por ahí.
Así da gusto aprender. Thanks por colaborar en mi causa.
|
|
|
17
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 3 Septiembre 2010, 18:41 pm
|
Me estoy volviendo loco! Pensaba que estaba cerca y la cosa se ha complicado. Al invertir un salto me ha bloqueado nuevamente el programa, y no se que registro me ha modificado. He restaurado el registro y he vuelto al estado anterior. Si instaláis el programa con la fecha actual sale una nag indicando que el programa esta fuera de fechas y se cierra. En cambio se deja instalar con fecha aproximada a junio/2009. Entonces permite 90 días full. Mi objetivo era conseguir que el programa estuviera siempre en período de prueba. Estoy sin ideas. Domingo noche empiezo a trabajar, y adéu a las vacaciones. Una ayudita no estaría mal, venga no me hagáis suplicar mas. :-) Thanks.
|
|
|
18
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 2 Septiembre 2010, 15:45 pm
|
Bueno.¿Qué tal si averiguas en que parte del código intenta cambiar ese valor a 1?. Y sabiéndolo, ¿porqué no cambiar ese valor 1 que quiere ponerle, por un cero?.
He intentado bajarme el programa y me dice que: El archivo al que está intentando acceder está temporalmente desactivado
La Nag inicial y la parte de escritura de la clave del registro esta arreglado. El programa arranca sin la nag informativa y solo me pregunta que archivo de datos quiero cargar. Cuando el archivo de datos .fdb elegido tenia fecha posterior a la permitida entonces es cuando escribía el 1 en la susodicha clave de registro. Al jumpear el momento de escritura en la clave, el programa detecta la fecha incorrecta pero no puede escribir en el registro el valor 1, por tanto el programa permite el uso full dentro del período permitido con un archivo de datos con fecha fuera de los limites permitido. Sigue quedando la limitación por fecha, si esta limitación la hubiera solucionado en primera posición, el resto de limitaciones no aparecerían. Estoy en el estudio de los métodos de como oculta la fecha. Por cierto, a mi si que me funciona la descarga del archivo que contiene el programa y el dump desempacado. Si tienes tiempo y ganas echale un vistazo, mientras lo intentaré acabar. Saludos.
|
|
|
19
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 1 Septiembre 2010, 07:35 am
|
Hola peke2305,
En este caso en concreto el programa tiene parte gratuito y otra parte a prueba temporal de 90 días. Se instala con todas las funciones disponibles y una vez superado el período de evaluación dejan de funcionar las funciones de evaluación y solo permanecen activas las funciones gratuitas.
Si un programa no trae todas las funciones, entonces no hay nada que hacer en ingeniería inversa, ya que no podemos activar unas funciones que no están en el programa. En ese caso estaríamos hablando de programar en Olly las funciones que faltan en lenguaje ensamblador(ASM), tarea fuera de toda lógica teniendo en cuenta el numero de lenguajes de alto nivel que disponemos para programar.
Espero que mi explicación no te confunda mas. Sino seguro que los maestros lo enfocaran mejor.
Sigo todavía en juego. Por ahora he topado con un salto que evita entrar en el CALL que modifica el registro de sistema comentado en el post anterior, me he acercado a la zona con el API RegSetValueExA. Pero sigo a oscuras en el tema de la comparación de fechas. Alguna sugerencia, please!
|
|
|
20
|
Programación / Ingeniería Inversa / Re: Problemilla con un trial.
|
en: 31 Agosto 2010, 22:21 pm
|
Primero dar las gracias a Mintaka por su interés en ayudarme.
Una vez finalizado el repaso a los tutoriales sobre la destrucción de NAGs , la conclusión es que me ha ayudado a confirmar mas mi sospecha.
El ocultar (jumpear) la NAG inicial, confirma que la fecha de final de periodo que en ella aparece no es significativa, solo informativa. Es decir, al jumpear la NAG el programa ya no compara la de fecha para mostrarla y por lo tanto la fecha que aparecía en ella solo se comparaba para mostrarla de manera informativa. Esto verifica que la fecha de NAG informativa no interviene en la validación de fechas .
En cambio, la segunda NAG que aparece en la cual nos ofrece la posibilidad de escoger la base de datos (archivo .fdb) a cargar, es la que en alguno de sus CALLs previos se encarga de comparar la fecha con alguna clave de registro, o con la fecha del sistema.
He intentado con: RegQueryValueExA RegCreateKeyExA: A través de esta API he descubierto que pasados los 90 días modifica una clave situada en “HKEY_CURRENT_USER\Software\Microsoft\MSInfo” esta clave durante el periodo full contienen el valor 0, y finalizado el periodo lo cambia a 1. Una vez modificado el valor el programa oculta el acceso a parte las funciones del modo full del programa. Dejando al programa solo con las funciones free. RegSetValueExA RegOpenKeyExA RegClosedKeyExA
Sigo perdido, pero luchando!
Preparado para nuevas sugerencias solo me quedan 5 días de vacaciones.
Una ayudita! Thanks.
|
|
|
|
|
|
|