Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: baldito en 4 Abril 2010, 19:22 pm



Título: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito en 4 Abril 2010, 19:22 pm
 ;-)


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: MCKSys Argentina en 4 Abril 2010, 20:10 pm
A ver si te podemos dar una mano....

Modificado

El instalador tiene 1 Gb!!!!!!!!!... :o

Quizás verlo, me tome más tiempo del que pensé...  :xD


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito en 4 Abril 2010, 21:39 pm
Hola,

De dónde sacas 1Gb? El instalador original ocupa 2MB

Tengo el programa original pero tiene licencia de sitio, es decir, que si quiero instalarlo en otro  tengo que adquirir otra licencia, te lo comento por si hay alguna manera de saber qué ha cambiado en el original y trasladarlo al que no está registrado ó tracear los 2 y ver qué direcciones sigue cada uno, aunque esto último es muy tedioso. Por cierto lo tengo instalado en un XP porque no funciona en windows7.

Gracias por la molestia; yo lo voy a seguir intentando pero ahora con el IDA.

Hasta la vista.


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: MCKSys Argentina en 4 Abril 2010, 22:48 pm
Eso es lo que me dice Radipshare...


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: tena en 4 Abril 2010, 22:55 pm
Eso es lo que me dice Radipshare...

Que tomaste en pascuas maxis?  ;D

http://rapidshare.com/files/371966863/Propiedades_materiales.rar | 1031 KB

1031 KB
[/b][/glow]
:laugh:

slds  :silbar:


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: MCKSys Argentina en 5 Abril 2010, 01:02 am
XD. Sep. Le pifié.....


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito en 10 Abril 2010, 20:52 pm
Gracias MCKSys,

En la página de ARTeam encontré este tutorial: http://rapidshare.com/files/374359982/Ionworx_IceLicense_A_Closer_Look_Inside_v20_by_Anorganix.rar

Que es tal como lo heh hecho yo. Pero una vez crackeado el programa, éste usa una base de datospero no puedo acceder a ella.
No sé si es que se he olvidado algo o es por otra cosa que no tiene que ver con el cracking.


2) Una pregunta: ¿Puedo usar el Turbodiff para comparar un programa registrado (que no crackeado) con uno que no lo está?

Un saludo gente


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: tena en 11 Abril 2010, 00:45 am
Podria subir las imagenes a ImageHacks o alguno de imagenes?

Otra cosa, no lo e visto, pero si por habilitar el boton es, entonces podrias poner un bp en EnableWindows, y ver el tema por ahi...


slds


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito en 11 Abril 2010, 11:02 am
Gracias Tena,
 el problema no es activar el botón; los botones deshabilitados son de desplazamiento en una lista; pero sin no existe la lista no hay nada por donde desplazarse; por eso están inactivos. Otra cosa distinta es que se visualizara la lista pero no me dejara desplazarme dentro de ella, entonces si que tu idea sería muy buena.

Por cierto, el programa es muy simple; lo digo porque a veces da pereza instalar algo que no te sirve; pero este se tarda 5 segundos en instalarlo y lo mismo en desinstalarlo, ya que solo genera 2 archivos, el ejecutable y la base de datos.
Un saludo



Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: LSL en 11 Abril 2010, 20:34 pm
venga va,

1º con un editor de recursos lo dejas así:

(http://r.i.elhacker.net/cache?url=http://img689.imageshack.us/img689/1567/icelicense.jpg)

2º con el olly, modificas por el valor 2, para que puedas moverte por la base de datos y salvas los cambios:

(http://r.i.elhacker.net/cache?url=http://img94.imageshack.us/img94/6394/20100411201614.png)


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito 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   ;-) .


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: LSL 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.



Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito 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


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: LSL 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

(http://r.i.elhacker.net/cache?url=http://img17.imageshack.us/img17/3019/20100413042038.png)

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.

(http://r.i.elhacker.net/cache?url=http://img13.imageshack.us/img13/3545/20100414025812.png)

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]

(http://r.i.elhacker.net/cache?url=http://img517.imageshack.us/img517/1467/20100414032617.png)

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,

(http://r.i.elhacker.net/cache?url=http://img220.imageshack.us/img220/3883/20100415044248.png)

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.

(http://r.i.elhacker.net/cache?url=http://img7.imageshack.us/img7/377/20100414050631.png)

Ya solo queda salvar los cambios en el ejecutable, y probar el resultado.


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito 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.


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: LSL en 15 Abril 2010, 04:51 am
de nada  :)


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: LSL 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.


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito en 15 Abril 2010, 21:24 pm
ok. Le echaré un vistazo


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: baldito en 20 Abril 2010, 19:06 pm
 ;-)


Título: Re: Qué he hecho mal: no está crackeado del todo
Publicado por: LSL 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.

(http://r.i.elhacker.net/cache?url=http://img88.imageshack.us/img88/5717/20100420222928.png)

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.