elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 03:01  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: Shaddy, karmany)
| | |-+  Problemilla con un trial.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Problemilla con un trial.  (Leído 5,085 veces)
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Problemilla con un trial.
« en: 27 Agosto 2010, 13:58 »

En primer lugar un saludo a tod@s.

Comentaros  que llevo tiempo siguiendo las interesantes aportaciones de este foro. Aunque me considero en estos temas un opositor a aprendiz, sin demasiado tiempo para dedicarle al estudio. El periodo de vacaciones del verano pasado continué mis estudios practicando con el desempaquetado  de un programa.  Estas vacaciones me había propuesto vencer sus limitaciones, pero  llevo 4 días encallado. Hecha mi presentación voy a describir mi problema.

Una vez  desempacado el trial decido estudiar sus limitaciones.

El programa permite uso full durante el período de 90 días. Pasada la fecha solo posibilita el uso de un reducido número de funciones.

Inicialmente cuando se carga aparece una NAG informativa que nos indica la fecha máxima del uso en modo full. Es decir, la comparación de fechas ya se ha realizado. Al aceptar la NAG informativa aparece otra ventana preguntando que base de datos queremos cargar. Aparecen un par de bases de ejemplo una vacía y otra con datos, son archivos con extensión  .fdb  (base de datos firebird, …)
Mi teoría es que compara la fecha del archivo .fdb o alguna  clave de registro, con la fecha del  sistema.

He intentado con:

GetSystemTime
SystemTimeToFileTime
GetSystemTimeAsFileTime
FileTimeToLocalFileTime

FileTimeToDosDateTime:   Con esta API para al escoger el .fdb, pero a partir de ahí me marea y me pasa por alto la comparación.

Ahí tenéis el programa y su dump:  http://www.megaupload.com/?d=Y25QMRFI

Espero podáis echarme una mano antes que se acaben mis vacaciones, gracias por anticipado.
En línea
Mintaka

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Problemilla con un trial.
« Respuesta #1 en: 27 Agosto 2010, 18:05 »

Hola:
A mí personalmente, me gusta hallar la call que provoca la nagscreen y lo consigo mediante el método llamado "a lo retro".Este método consiste en colocar un breakpoint en el Olly (BP DestroyWindow) antes de cerrar esa nag.Cuando la cierras Olly detiene la ejecución justo cuando entra en el procedimiento de borrar la nag.Seguidamente de doy a ALT+F9 y me deja parado una instrucción después de la call para sacar la nag cojonera.A partir de ahí hay ir observando hacia atrás, en el código, y colocar breakpoints en los lugares sospechosos que te llevan a la esa call maldita.Reiniciar Olly e ir observando que sucede a partir de esos BP's y si es preciso retroceder más en el código para descubrir donde descuenta los días.A veces es tan simple, como ver una resta a 5A (90 decimal).
De todos modos, existen bastantes escritos sobre las nags por aquí:

*http://ricardonarvaja.info/WEB/CURSO NUEVO/TEORIAS NUMERADAS/*:

816-Quitando nagscreen en vb.zip

838-COMO_ELIMINAR_NAGS_EN_PROGRAMAS_DELPHI.rar

834-Registrando Secutity Task Manager por ZiKaTRiZ.rar

323-Desempacado y quitando la nag de Soldat v1.21 (ASPr v1.2).rar

932-Parcheando y quitando NagS a un EXE por CaR19.rar

1012-Teoria sobre como eliminar un NAG con nada mas mirrar la pila.rar

177-COMO HACER UN LOADER SENCILLO QUE PULSE BOTONES PARA ELIMINAR NAGS.rar

115-OLLY_Contra_NAG_Parte_III.zip

200-Como realizar un injerto para eliminar una nag simulando que se presiona el boton .rar

100-OLLY_Contra_NAG_Parte_II.rar

095-OLLY Contra Las NAG Parte I por Arapumk.rar

*http://ricardonarvaja.info/WEB/OTROS/AKIRA TODO/*:

35.Estudio completo de Nag Screen.rar

Suerte,

Mintaka

PD:A ver si se despierta el amigo Tena y te da sus consejos.
En línea

Si lloras por no ver el Sol tus lágrimas no te dejarán ver las estrellas.(Tagore)
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #2 en: 31 Agosto 2010, 22:21 »

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.

En línea
peke2305

Desconectado Desconectado

Mensajes: 255


La religión es el opio del pueblo.


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #3 en: 1 Septiembre 2010, 03:53 »

que tal compaéros

pues yo no se mucho (casi nada) de esto pero me interesa mucho el ver que con el olly se pueda hacer en base a break points que algun programa (trial) se pueda ejecutar como full

es posible?? :huh:
En línea

Lo que sabemos es una gota de agua, lo que ignoramos es el océano
(Isaac Newton)
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #4 en: 1 Septiembre 2010, 07:35 »

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!


En línea
Mintaka

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Problemilla con un trial.
« Respuesta #5 en: 1 Septiembre 2010, 22:03 »

.......
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.[/size]


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

Animo que estás más cerca.
En línea

Si lloras por no ver el Sol tus lágrimas no te dejarán ver las estrellas.(Tagore)
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #6 en: 2 Septiembre 2010, 15:45 »


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.
En línea
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #7 en: 3 Septiembre 2010, 18:41 »

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.
En línea
MCKSys Argentina


Desconectado Desconectado

Mensajes: 1.222


Diviérte crackeando, que para eso estamos!


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #8 en: 3 Septiembre 2010, 19:58 »

En que esta hecho el EXE??
En línea

---------------------
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #9 en: 3 Septiembre 2010, 20:50 »

En que esta hecho el EXE??

Estaba empaquetado con Yoda's Protector


y desempaquetado  Borland C++ for Win32 1999

Gracias.
« Última modificación: 3 Septiembre 2010, 20:56 por nemus » En línea
MCKSys Argentina


Desconectado Desconectado

Mensajes: 1.222


Diviérte crackeando, que para eso estamos!


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #10 en: 4 Septiembre 2010, 16:14 »

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!
En línea

---------------------
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
LSL

Desconectado Desconectado

Mensajes: 239

Cls


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #11 en: 4 Septiembre 2010, 17:00 »

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
009B445A  |.  66:C745 B4 38>MOV WORD PTR [EBP-4C],38
009B4460  |.  BA 9367E300   MOV EDX,00E36793                         ;  ASCII " 2009 Free"
009B4465  |.  8D45 F0       LEA EAX,DWORD PTR [EBP-10]
009B4468  |.  E8 3B633E00   CALL 00D9A7A8
009B446D  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B4470  |.  8D55 F0       LEA EDX,DWORD PTR [EBP-10]
009B4473  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B4476  |.  E8 0D653E00   CALL 00D9A988
009B447B  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B447E  |.  8D45 F0       LEA EAX,DWORD PTR [EBP-10]
009B4481  |.  BA 02000000   MOV EDX,2
009B4486  |.  E8 B9643E00   CALL 00D9A944
009B448B  |.  FF75 0C       PUSH DWORD PTR [EBP+C]                   ; /Arg1
009B448E  |.  E8 DDFAFFFF   CALL @TSiglopro@GetPermetreAvaluacio$qv  ; \@TSiglopro@GetPermetreAvaluacio$qv
009B4493  |.  59            POP ECX
009B4494  |.  84C0          TEST AL,AL
009B4496  |.  74 75         JE SHORT 009B450D
009B4498  |.  66:C745 B4 44>MOV WORD PTR [EBP-4C],44
009B449E  |.  68 A267E300   PUSH 00E367A2                            ;  ASCII "(Evaluation Mode)"
009B44A3  |.  8D45 EC       LEA EAX,DWORD PTR [EBP-14]
009B44A6  |.  E8 0D08A5FF   CALL 00404CB8
009B44AB  |.  50            PUSH EAX                                 ; |Arg1
009B44AC  |.  FF45 C0       INC DWORD PTR [EBP-40]                   ; |
009B44AF  |.  BA A067E300   MOV EDX,00E367A0                         ; |
009B44B4  |.  8B0D F02FEF00 MOV ECX,DWORD PTR [EF2FF0]               ; |ramat.@TIdioma@AppIdioma
009B44BA  |.  8B01          MOV EAX,DWORD PTR [ECX]                  ; |
009B44BC  |.  B9 F80B0000   MOV ECX,0BF8                             ; |
009B44C1  |.  E8 36A42100   CALL @TIdioma@GetText$qqrpxcit1          ; \@TIdioma@GetText$qqrpxcit1
009B44C6  |.  8D55 EC       LEA EDX,DWORD PTR [EBP-14]
009B44C9  |.  52            PUSH EDX
009B44CA  |.  8D45 E8       LEA EAX,DWORD PTR [EBP-18]
009B44CD  |.  E8 E607A5FF   CALL 00404CB8
009B44D2  |.  8BC8          MOV ECX,EAX
009B44D4  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B44D7  |.  B8 9E67E300   MOV EAX,00E3679E
009B44DC  |.  5A            POP EDX
009B44DD  |.  E8 366C3E00   CALL 00D9B118
009B44E2  |.  8D55 E8       LEA EDX,DWORD PTR [EBP-18]
009B44E5  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B44E8  |.  E8 9B643E00   CALL 00D9A988
009B44ED  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B44F0  |.  8D45 E8       LEA EAX,DWORD PTR [EBP-18]
009B44F3  |.  BA 02000000   MOV EDX,2
009B44F8  |.  E8 47643E00   CALL 00D9A944
009B44FD  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B4500  |.  8D45 EC       LEA EAX,DWORD PTR [EBP-14]
009B4503  |.  BA 02000000   MOV EDX,2
009B4508  |.  E8 37643E00   CALL 00D9A944
009B450D  |>  66:C745 B4 50>MOV WORD PTR [EBP-4C],50
009B4513  |.  8D55 FC       LEA EDX,DWORD PTR [EBP-4]
009B4516  |.  8B45 08       MOV EAX,DWORD PTR [EBP+8]
009B4519  |.  E8 56643E00   CALL 00D9A974
009B451E  |.  8B45 08       MOV EAX,DWORD PTR [EBP+8]
009B4521  |.  66:C745 B4 5C>MOV WORD PTR [EBP-4C],5C
009B4527  |.  50            PUSH EAX
009B4528  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B452B  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B452E  |.  BA 02000000   MOV EDX,2
009B4533  |.  E8 0C643E00   CALL 00D9A944
009B4538  |.  58            POP EAX
009B4539  |.  66:C745 B4 50>MOV WORD PTR [EBP-4C],50
009B453F  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B4542  |.  8B55 A4       MOV EDX,DWORD PTR [EBP-5C]
009B4545  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
009B454C  |.  E9 76020000   JMP 009B47C7
009B4551  |>  8B4D 0C       MOV ECX,DWORD PTR [EBP+C]
009B4554  |.  83B9 AC000000>CMP DWORD PTR [ECX+AC],0
009B455B  |.  75 44         JNZ SHORT 009B45A1
009B455D  |.  66:C745 B4 68>MOV WORD PTR [EBP-4C],68
009B4563  |.  8D55 FC       LEA EDX,DWORD PTR [EBP-4]
009B4566  |.  8B45 08       MOV EAX,DWORD PTR [EBP+8]
009B4569  |.  E8 06643E00   CALL 00D9A974
009B456E  |.  8B45 08       MOV EAX,DWORD PTR [EBP+8]
009B4571  |.  66:C745 B4 74>MOV WORD PTR [EBP-4C],74
009B4577  |.  50            PUSH EAX
009B4578  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B457B  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B457E  |.  BA 02000000   MOV EDX,2
009B4583  |.  E8 BC633E00   CALL 00D9A944
009B4588  |.  58            POP EAX
009B4589  |.  66:C745 B4 68>MOV WORD PTR [EBP-4C],68
009B458F  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B4592  |.  8B55 A4       MOV EDX,DWORD PTR [EBP-5C]
009B4595  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
009B459C  |.  E9 26020000   JMP 009B47C7
009B45A1  |>  8B4D 0C       MOV ECX,DWORD PTR [EBP+C]
009B45A4  |.  F681 AC000000>TEST BYTE PTR [ECX+AC],10
009B45AB  |.  74 36         JE SHORT 009B45E3
009B45AD  |.  66:C745 B4 80>MOV WORD PTR [EBP-4C],80
009B45B3  |.  BA B467E300   MOV EDX,00E367B4                         ;  ASCII " Consultant"
009B45B8  |.  8D45 E4       LEA EAX,DWORD PTR [EBP-1C]
009B45BB  |.  E8 E8613E00   CALL 00D9A7A8
009B45C0  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B45C3  |.  8D55 E4       LEA EDX,DWORD PTR [EBP-1C]
009B45C6  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B45C9  |.  E8 BA633E00   CALL 00D9A988
009B45CE  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B45D1  |.  8D45 E4       LEA EAX,DWORD PTR [EBP-1C]
009B45D4  |.  BA 02000000   MOV EDX,2
009B45D9  |.  E8 66633E00   CALL 00D9A944
009B45DE  |.  E9 74010000   JMP 009B4757
009B45E3  |>  8B4D 0C       MOV ECX,DWORD PTR [EBP+C]
009B45E6  |.  F681 AC000000>TEST BYTE PTR [ECX+AC],8
009B45ED  |.  74 36         JE SHORT 009B4625
009B45EF  |.  66:C745 B4 8C>MOV WORD PTR [EBP-4C],8C
009B45F5  |.  BA C067E300   MOV EDX,00E367C0                         ;  ASCII " Enterprise"
009B45FA  |.  8D45 E0       LEA EAX,DWORD PTR [EBP-20]
009B45FD  |.  E8 A6613E00   CALL 00D9A7A8
009B4602  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B4605  |.  8D55 E0       LEA EDX,DWORD PTR [EBP-20]
009B4608  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B460B  |.  E8 78633E00   CALL 00D9A988
009B4610  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B4613  |.  8D45 E0       LEA EAX,DWORD PTR [EBP-20]
009B4616  |.  BA 02000000   MOV EDX,2
009B461B  |.  E8 24633E00   CALL 00D9A944
009B4620  |.  E9 32010000   JMP 009B4757
009B4625  |>  8B4D 0C       MOV ECX,DWORD PTR [EBP+C]
009B4628  |.  F681 AC000000>TEST BYTE PTR [ECX+AC],4
009B462F  |.  74 36         JE SHORT 009B4667
009B4631  |.  66:C745 B4 98>MOV WORD PTR [EBP-4C],98
009B4637  |.  BA CC67E300   MOV EDX,00E367CC                         ;  ASCII " Studio"
009B463C  |.  8D45 DC       LEA EAX,DWORD PTR [EBP-24]
009B463F  |.  E8 64613E00   CALL 00D9A7A8
009B4644  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B4647  |.  8D55 DC       LEA EDX,DWORD PTR [EBP-24]
009B464A  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B464D  |.  E8 36633E00   CALL 00D9A988
009B4652  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B4655  |.  8D45 DC       LEA EAX,DWORD PTR [EBP-24]
009B4658  |.  BA 02000000   MOV EDX,2
009B465D  |.  E8 E2623E00   CALL 00D9A944
009B4662  |.  E9 F0000000   JMP 009B4757
009B4667  |>  8B4D 0C       MOV ECX,DWORD PTR [EBP+C]
009B466A  |.  F681 AC000000>TEST BYTE PTR [ECX+AC],2
009B4671  |.  74 36         JE SHORT 009B46A9
009B4673  |.  66:C745 B4 A4>MOV WORD PTR [EBP-4C],0A4
009B4679  |.  BA D467E300   MOV EDX,00E367D4                         ;  ASCII " Professional"
009B467E  |.  8D45 D8       LEA EAX,DWORD PTR [EBP-28]
009B4681  |.  E8 22613E00   CALL 00D9A7A8
009B4686  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B4689  |.  8D55 D8       LEA EDX,DWORD PTR [EBP-28]
009B468C  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B468F  |.  E8 F4623E00   CALL 00D9A988
009B4694  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B4697  |.  8D45 D8       LEA EAX,DWORD PTR [EBP-28]
009B469A  |.  BA 02000000   MOV EDX,2
009B469F  |.  E8 A0623E00   CALL 00D9A944
009B46A4  |.  E9 AE000000   JMP 009B4757
009B46A9  |>  8B4D 0C       MOV ECX,DWORD PTR [EBP+C]
009B46AC  |.  F681 AC000000>TEST BYTE PTR [ECX+AC],1
009B46B3  |.  74 33         JE SHORT 009B46E8
009B46B5  |.  66:C745 B4 B0>MOV WORD PTR [EBP-4C],0B0
009B46BB  |.  BA E267E300   MOV EDX,00E367E2                         ;  ASCII " Lite"
009B46C0  |.  8D45 D4       LEA EAX,DWORD PTR [EBP-2C]
009B46C3  |.  E8 E0603E00   CALL 00D9A7A8
009B46C8  |.  FF45 C0       INC DWORD PTR [EBP-40]
009B46CB  |.  8D55 D4       LEA EDX,DWORD PTR [EBP-2C]
009B46CE  |.  8D45 FC       LEA EAX,DWORD PTR [EBP-4]
009B46D1  |.  E8 B2623E00   CALL 00D9A988
009B46D6  |.  FF4D C0       DEC DWORD PTR [EBP-40]
009B46D9  |.  8D45 D4       LEA EAX,DWORD PTR [EBP-2C]
009B46DC  |.  BA 02000000   MOV EDX,2
009B46E1  |.  E8 5E623E00   CALL 00D9A944
009B46E6  |.  EB 6F         JMP SHORT 009B4757

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.
« Última modificación: 4 Septiembre 2010, 17:19 por LSL » En línea

Saludos.

LSL.
Mintaka

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Problemilla con un trial.
« Respuesta #12 en: 4 Septiembre 2010, 17:19 »


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.

Te mandé un MP nemus.

Mintaka
En línea

Si lloras por no ver el Sol tus lágrimas no te dejarán ver las estrellas.(Tagore)
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #13 en: 4 Septiembre 2010, 22:05 »

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.
En línea
nemus

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problemilla con un trial.
« Respuesta #14 en: 16 Septiembre 2010, 15:28 »

Vuelta al estudio, a partir de hoy me toca trabajar  las tardes-noche,  durmiendo algo por las noches  :xD. 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:


Citar
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.
En línea
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Trial en vb6 native code autoextraible « 1 2 »
Ingeniería Inversa
silvau 23 4,266 Último mensaje 24 Diciembre 2010, 01:37
por silvau
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines