elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Qué he hecho mal: no está crackeado del todo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Qué he hecho mal: no está crackeado del todo  (Leído 8,031 veces)
baldito

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #10 en: 11 Abril 2010, 23:29 pm »

No entiendo por qué no vale sólo con el editor de recursos.

Cuando tenga tiempo ( que tengo mucho que estudiar esta semana en la uni :-( ) lo pruebo como dices.

Tengo éste soft registrado, lo podría comparar con el turbodiff, con él mismo pero estando sin registrar para ver qué camino toma cada uno? ó solo sirve el turbodiff para compararlo con uno crackeado, como he visto en algunos tutos?

Gracias LSL   ;-) .
En línea

LSL

Desconectado Desconectado

Mensajes: 239

Cls


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #11 en: 12 Abril 2010, 02:11 am »

de nada,  :D

con el editor de recursos, en este caso solo evitas el tema de la licencia, pero los programadores pueden tomar otras medidas adicionales de su propia cosecha, en base a la existencia o no de algun valor concreto en algun fichero o de registro, etc.

Turbodiff es una herramienta desarrollada como un plugin de IDA. Descubre y analiza las diferencias entre las funciones de dos archivos binarios. Por ejemplo un archivo original y uno crackeado, o dos archivos de diferentes versiones.

Lo que quieres comparar es el comportamiento de cada instruccion al correrlo en la version registrada y en la no registrada, para ello puedes salvar en un archivo el traceo de uno y otro, y luego compararlos. Lo puedes hacer con el Ollydbg, en el botón “…” nos muestra el “run trace” es decir, aquí quedan logueadas las instrucciones ejecutadas cuando se tracea. Para esto debemos “abrir el run trace” esto se hace en el menú DEBUG > Open or Clear Run Trace, y para guardar el log en un archivo txt, pinchas en el botón "...", en esa ventana click derecho y seleccionas "Log to file", le pones un nombre.txt y abrir, ahora corres el programa con control+F12, cuando decidas cortar el log del  traceo, vuelves al menú DEBUG > Close Run Trace, y en "..." click derecho Close Log file.

una vez obtienes los dos traceos por separado, los comparas con alguna herramienta para comparar contenidos de archivos, y estudias las diferencias.

En línea

Saludos.

LSL.
baldito

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #12 en: 12 Abril 2010, 20:51 pm »

Muy bueno LSL  ;-) , pero hay una cosa que he tenido que modificar para que no me apareciera una nag diciéndome que el ejecutable había sido modificado:

OnExeModified=IceLicenseLicenseFull

Y donde has puesto que tienes dudas no lo he movido y funciona bien.

Pero me gustaría saber cómo has llegado tan rápido hasta alli, a parte de que seas un máquina  ::)

Saludos
En línea

LSL

Desconectado Desconectado

Mensajes: 239

Cls


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #13 en: 13 Abril 2010, 09:57 am »

pues a mi no me sale la nag, con OnExeModified=Nil
puede que la nag se genere tambien dependiendo de otros factores que existan en cada instalación.

¿que como he llegado alli?, pues en este caso fue muy facil ...

con el RDG Packer o Peid, nos dice que está hecho en Delphi.

como es Delphi, con el DeDe ó con E2A2 podemos ver donde comienzan las direcciones de los eventos de los
formularios, tambien vemos que hay un formulario principal con el nombre TfrmMain (en programación de
delphi se le suele poner el nombre Main al formulario principal que es con el que se inicia el programa),
asi que vamos a empezar a tracear en el evento FormShow del formulario Main, que es cuando se muestra en
pantalla.

La direccion donde comienza el evento FormShow del TfrmMain, en este caso es en 0062F364

Abrimos el programa con Olly, pulsamos Control+G para ir a la direccion 0062F364, alli ponemos un bp con
F2, para que se detenga en dicho lugar cuando lo ejecutemos con Run F9



además vamos a mirar el código que hay por ahí; mas abajo vemos que hay un mensaje en inglés que
traducido nos dice "Base de datos para los valores materiales no se establece.", lo cual no nos ha
mostrado ni siquiera anteriormente,al correr la presunta versión sin registrar, y para llegar a dicho
mensaje ó no pasar por dicho lugar hay un par de comparaciones que deciden el resultado de sendos saltos
condicionales, por lo que seria interesane echarles un ojo, ya que con la primera comparación, si salta
se envita realizar la segunda que es la que te puede llevar al mensaje de error al cargar la base de
datos, por lo que intuyo que al producirse el primer salto se evita la zona donde se carga la base de
datos y por eso ya no se muestra ni siquiera el mensaje de advertencia, asi que le ponemos unos BP en
las comparaciones previas y en los saltos para ver que valores compara y según el resultado la decisión
que toma para saltar a un destino distinto según el caso.



en el momento de la comparación del valor que hay en AL con el valor 2, vemos que AL=00 por lo que con el
JNZ se produce el salto que queremos evitar,

¿donde toma AL el valor 00, pues lo mas seguro en el último CALL previo, que nos lleva a la dirección
0059883C, donde vemos que se mueve a EAX el valor que existe en la dirección de memoria DS :[011377F9]



Entonces sabemos que si conseguimos que en la dirección de memoria 011377F9 en el momento previo a la
comparación que se introduzca el valor 2, el programa cargará la base de datos.

Despues de reiniciar un par de veces el programa y detenerse con el Breakpoint puesto en dicho evento
comprobamos que la dirección de memoria siempre es la misma, asi que reiniciamos de nuevo y vamos a
detenernos en la entrada del formulario, es el momento de poner un BP Memory On Write, en el primer Byte
de la direccion de memoria 011377F9, al que nos trasladamos pinchando en la zona del Dump y Control+G,
después damos a Run F9, y comprobamos que el Olly se detiene una primera vez en 005A2D00 para mover el
valor 00 a dicho lugar de memoria,



pero vamos a dar de nuevo F9 para continuar y comprobar si hay mas veces que se sobreescriba en dicho
lugar antes de llegar al codigo de comparación, lo cual si ocurre una segunda vez, por lo que elijo
modificar el valor en la segunda vez que mueve el valor 00 a dicho lugar de destino, y lo cambiamos por
02 que es el bueno, ya que en el primer movimiento lo perderiamos machacado por el segundo.



Ya solo queda salvar los cambios en el ejecutable, y probar el resultado.
« Última modificación: 15 Abril 2010, 05:14 am por LSL » En línea

Saludos.

LSL.
baldito

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #14 en: 14 Abril 2010, 08:24 am »

Muy bien, lo voy a estudiar con detenimineto y empezar de cero para entenderlo mejor. Si hay algo que no entienda te lo haré saber.

Muchas gracias por tus aportes.
En línea

LSL

Desconectado Desconectado

Mensajes: 239

Cls


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #15 en: 15 Abril 2010, 04:51 am »

de nada  :)
« Última modificación: 15 Abril 2010, 05:01 am por LSL » En línea

Saludos.

LSL.
LSL

Desconectado Desconectado

Mensajes: 239

Cls


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #16 en: 15 Abril 2010, 04:58 am »

Seria interesante que mirases también dichos datos con la versión registrada, a ver que valores guarda en dichas direcciones y en la de [011377F8] que equivale a [EAX+388] que se me ha quedado la duda de para qué y cuando se utiliza posteriormente.

Saludos.
« Última modificación: 15 Abril 2010, 08:46 am por LSL » En línea

Saludos.

LSL.
baldito

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #17 en: 15 Abril 2010, 21:24 pm »

ok. Le echaré un vistazo
En línea

baldito

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #18 en: 20 Abril 2010, 19:06 pm »

 ;-)
« Última modificación: 8 Mayo 2010, 13:17 pm por baldito » En línea

LSL

Desconectado Desconectado

Mensajes: 239

Cls


Ver Perfil
Re: Qué he hecho mal: no está crackeado del todo
« Respuesta #19 en: 20 Abril 2010, 23:30 pm »

Citar
En los programas en los que he conseguido hacerlos funcionar, lo que he hecho ha sido únicamente cambiar el salto condicional, en vez de entra en el call previo y cambiar el valor por "2" para que después la comparación sea la correcta. ¿Por qué tú has profundizado más para saber de dónde trae el valor?

a veces hay que profundizar en la raiz del valor para no tener que hacer o controlar muchas modificaciones, imaginate un programa en que para cada operación que va a realizar en otras partes del codigo compruebe este mismo valor y tome la decision de saltar o no, tendriamos que buscar y forzar muchos saltos, y si encontramos ese punto identico para todas las comprobaciones relacionada, nos ahorramos mucho trabajo.

Por ejemplo en tu programa cuando estas en el inicio del call donde se debe mover el valor 02 al registro EAX, en la ventana de información del desensamblado te informa que ese call se llama desde 2 lugares distintos, mira la imagen de abajo.



Entonces o cambias los 2 saltos que existiran despues de las 2 llamadas, o aqui fuerzas para que siempre mueva el valor correcto, y asi nos aseguramos que se llame desde donde se llame siempre va a dar el valor correcto, y con ellos nos aseguramos que las demas decisiones posteriores serán las correctas.
.............
En cuanto a la direccion de memoria de mi ordenador [011377F8] equivale en el tuyo a la de [00DE77F8], cuando pares con un breakpoint en 0062F3EA, en el Dump de la memoria tendras en 00DE77F9 el valor 02, y mira en ese momento que valor tienes en 00DE77F8, que tambien puede ser decisivo en otras partes del programa.



« Última modificación: 20 Abril 2010, 23:33 pm por LSL » En línea

Saludos.

LSL.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
en que tipo de programa esta hecho avdi
Programación General
jcgbe 0 2,081 Último mensaje 5 Julio 2011, 01:45 am
por jcgbe
Todo lo que has hecho en Facebook en 2011
Noticias
wolfbcn 0 1,705 Último mensaje 1 Enero 2012, 18:44 pm
por wolfbcn
Linux no está hecho para indecisos... U.U
GNU/Linux
WifliX 5 2,481 Último mensaje 21 Agosto 2012, 21:57 pm
por WifliX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines