Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: edwingt en 16 Julio 2009, 19:05 pm



Título: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 16 Julio 2009, 19:05 pm
Hola a todos, primero quiero felicitar a todos los involucrados en este foro, realmente se mira la cantidad de esfuerzo y trabajo que hay aqui para poner todos estos recurso a nuestra disposición.

Tengo un programa que compre que utiliza una mochila Aladdin Hardlock, pero no quiero tener que poner la mochila cada vez que lo utilizo. Asi que voy iniciar el proceso para liberar el programa de la mochila.

No se x donde empezar con esto, y este es el lugar donde estoy parado:

 1. Se un poco de assembler pero hay algunas cosas que tengo que recordar.
 2. No tengo nada de xperiencia en ingenieria inversa.
 3. Estuve siguiendo unos tutoriales de mochilas hasp, pero me quedo en el aire con conceptos como encontrar el OEP (no se como encontrarlo), y arreglar la IAT que no se que es.

Por donde empiezo?, espero su ayuda y gracias.


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: karmany en 17 Julio 2009, 07:32 am
Bueno si tienes la mochila, puedes intentar desempacarlo.

Si no sabes ingeniería inversa te explico de forma muy generalizada:
-OEP: Original Punto de Entrada. Cuando ejecutas un programa que no haya sido empacado, protegido, comprimido etc... sino solamente compilado y escrito en un determinado lenguaje de programación, la primera instrucción que se ejecuta es el OEP. CUando un programa está comprimido, cifrado etc... como es tu caso, su primera instrucción es el EP (no OEP) primero tiene que descomprimirse y cuando se haya descomprimido... ejecutará el OEP.

-Reparar la IAT significa reconstruir la tabla de importaciones(Import Address Table), esto es, saber TODAS las funciones que son utilizadas por tu programa e "introducirlas" en tu ejecutable para que cuando llame a una función (ej. MessageBox) sepa en qué dirección está.

La idea es que introduzcas la mochila en tu ordenador, abras el programa con un debugger (OllyDbg...), lo ejecutes, encuentres el OEP y pares el debugger en ese momento. Después te quedará reconstruir la IAT.

Te dejo un tute mío, a ver si te sirve de orientación:
Hasp HL por karmany (http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/701-800/797-Desempacar%20HASP%20HL%202.16%20_%20Hilo%20por%20karmany.rar)


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 18 Julio 2009, 17:25 pm
Gracias Karmani.
Entonces lo primero que tengo que hacer es encontrar el OEP. Segun el RDG Packer Detector el programa fue compilado en Borland Delphi 6 o 7, estuve buscando en el foro y google cómo encontrar el OEP pero no encuentro nada.
Si alguien sabe donde puedo encontrar esta información o darme un punto de inicio, lo agradecería un montón. De momento seguiré buscando e iré publicando aquí cualquier avance que pueda ser de utilidad para otros posteriormente.


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 4 Agosto 2009, 19:09 pm
Para darle seguimiento a lo que he estado haciendo en estos dias con este hasp.

Utilice el link que dejo karmani OEP Finder
http://www.tuts4you.com/download.php?view.396
para que me indicara el OEP

Uso el OEP Finder para encontrar un OEP, Luego intento utilizar una herRamienta llamada Import Rec para encontrar la IAT, sin embargo cuando ingreso la primera direccion que me muestra el OEP Finder, el Import Rec me dice que no puede encontrar la IAT con ese OEP.

Si utilizo el siguiente OEP que me da el OEP Finder resulta que el Import Recencuentra la IAT, pero me muestra 9 entradas invalidas y nada valido.

Por otro lado tambien intenté dejar la dirección que me muestra Import Rec al abrirlo. Lo que sucede cuando hago esto es que, si encuentra una IAT, y al ver entradas me muestra llamadas a varias librerias pero no me muestra ninguna entrada válida.

En resumen lo que me pasa es lo siguiente:

1. Usando el OEP de OEP Finder -> Import Rec no encuentra la IAT
2. Usando el segundo y demas OEP del OEP Finder -> Import Rec encuentra IAT, pero solo entradas invalidas.
3. Usando el OEP que muestra Import rec al inicio -> Encuentra la IAT, pero solo salen entradas válidas.

Si alguien tiene alguna sugerencia lo agradeceria en cantidad.


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: karmany en 4 Agosto 2009, 21:03 pm
Una tontería pero en el OEP en el programa Import RE tienes que poner la RVA (Relative Virtual Address) no la VA. Supongo que lo has hecho así, pero por si acaso.
Si no sabes cambiar la VA a RVA te dejo mi programa que lo hace automáticamente:
http://foro.elhacker.net/ingenieria_inversa/file_location_calculator_v032_por_karmany-t262979.0.html

Otra cosa... para que OEP finder encuentre el OEP correcto tienes que insertar el hasp, si no fallará.

Si sabes llegar al OEP correcto y reparas la IAT (lee mi tute que te dejé, te ayudará) ya casi lo tienes...

ImportRE suele fallar bastante, pero eso no es problema. Lo normal que solemos hacer es llegar al OEP y buscar en OllyDbg una API y dumpear ese valor en la ventana de dump de OllyDbg. Ahí pones la vista de Address(long->address) y verificas las API y ves el comienzo de la IAT y el final... y así ayudas a Import RE y puedes ver si está todo correcto... no sé si me vas a entender...
ImportRE es muy buen programa...


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 7 Agosto 2009, 21:13 pm
Creo que estoy perdido de nuevo, el programa con la mochila no se comporta como en las guias que tengo, al menos eso es lo que me parece, talvez la mochila es muy nueva y se comporta diferente.

Lo que veo raro es lo siguiente:

Encontrar OEP, ok creo:
1. He encontrado el OEP, con la técnica de break on access de Olly en la sección code, y lo he confirmado con el OEP Finder y la dumpeo.

Encontrar la IAT
Lo intento de 2 maneras.

2A. Econtrar la IAT con olly
Luego de esto intento encontrar el inicio de la IAT con Olly, poniendo un break en el siguiente call (CALL PCX1000.00408088) despues del OEP, ese call me lleva a la direccion (00408088  /$  50  PUSH EAX;  PCX1000.008B0EB8) le doy "follow in dump"-> selection y en la ventana de dump doy long->Address y me aparece (00408088  E8006A50) addres, value, pero comment vacío. Hasta aqui no se cómo saber en que sección estoy.
Aunque no se en que sección estoy le doy Ctrl+R para buscar las referencias y me aparece esto:
References in PCX1000:CODE to 00408088..00408088, item 0
 Address=008B1C27
 Disassembly=CALL PCX1000.00408088

Solo una llamada, que fue con la que iniciamos. De aqui no se que hacer para encontrar la IAT.

2B. Encontrar la IAT con Imp Rec
Abro mi programa
Ahora abro ImpRec, y busco el proceso, me sale automaticamente mi OEP (con el RVA). -> IAT Auto Search->Get Imports -> Show Invalid
y no aparece ninguna entrada inválida, solo aparecen 573 entradas que son válidas.

Estaré haciendo  algo mal? estoy atorado, cualquier guia a partir de este punto será muy util.
Gracias por la colaboración


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 10 Agosto 2009, 18:18 pm
He estado revisando algunas cosas en el programa que quiero liberar de la mochila.
Tengo la hipotesis de que a pesar de que el programa usa la mochila, este no está cifrado. Es esto posible?

El RDG packer detector me saca esto.

(http://img6.imageshack.us/img6/4733/dibujoccrzaw.jpg)

Que piensan?


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: karmany en 10 Agosto 2009, 18:28 pm
1º) La IAT con OllyDBG no lo estás haciendo bien o no entiendo cómo lo estás haciendo porque:
00408088  push eax;  PCX1000.008B0EB8
no es un salto a ninguna función, salta al mismo exe, entonces no puede ser...

2º) Con IRec: "no aparece ninguna entrada inválida, solo aparecen 573 entradas que son válidas"...
-De eso se trata... ¿por qué no pruebas cuando tengas todas válidas a pulsar en "Fix Dump" y seleccionas tu dumpeado?


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 10 Agosto 2009, 23:34 pm
1º) La IAT con OllyDBG no lo estás haciendo bien o no entiendo cómo lo estás haciendo porque:
00408088  push eax;  PCX1000.008B0EB8
no es un salto a ninguna función, salta al mismo exe, entonces no puede ser...

Entonces la conclución de esto es que si el call me lleva al mismo exe PCX1000.XXX no estoy en una libreria referenciada.

2º) Con IRec: "no aparece ninguna entrada inválida, solo aparecen 573 entradas que son válidas"...
-De eso se trata... ¿por qué no pruebas cuando tengas todas válidas a pulsar en "Fix Dump" y seleccionas tu dumpeado?

Esto intente hacerlo pero al darle fix dump y ejecutar el archivo, no se ejecuta. Solo sale un mensaje de error.


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: edwingt en 10 Agosto 2009, 23:49 pm
Bueno,
Probe de nuevo el proceso de hacer el fix dump en el imprec. Y efectivamente si me genera bien el exe (talvez cuando lo hice anteriormente me equivoque en algo). Lo que me pasa ahora es que si ejecuto ese exe y quito la llave siempre aparece que hace falta la mochila.

Seguire probando y reportando mis avencas.
Gracias Karmany, que ha sido el unico en ayudarme en este tema.


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: LSL en 25 Agosto 2009, 05:04 am
edwingt, por todo los pasos que explicas durante tu travesia, no parece que estes lidiando con un programa comprimido y la mochila aladdin hardlock, primero el rdg packer no te dice nada al respecto, despues cuando lo abres con el olly, de tener un OEP fuera de lugar, ó comprimido te saldria un mensaje como el siguiente ?
---------------------------
Entry Point Alert
---------------------------
Module 'programa' has entry point outside the code (as specified in the PE header). Maybe this file is self-extracting or self-modifying. Please keep it in mind when setting breakpoints!
---------------------------
Aceptar   
---------------------------

Otro dato caracteristico de la protección Aladdin, en la ventana de Memory Map del ollydbg (Alt+m), mas abajo de la sección .text "code" del programa, existe otra sección con el nombre .protect

si la respuesta a todas estas cuestiones es no, entonces tu programa no esta protegido con dicha compresión caracteristica del Aladdin Hardlock, por lo que solo tienes que debuguear el programa hasta el mensaje de falta de mochila, y mirar a traves de que comparación ó comparaciones, salta y llega hasta dicho mensaje.

como tienes la mochila, una vez tengas localizada la zona del mensaje, solo tienes que comparar el camino que recorre con la mochila, antes de la llamada al mensaje, que evita mostrar dicho mensaje (toma nota de los saltos que se cumplen y los que no); y luego reinicias el olly sin la mochila, ve forzando o evitando los saltos para que continue por el camino bueno.


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: sonnyw en 25 Agosto 2009, 21:41 pm
edwingt

No te denanimes al parecer esto es de tener un ptero de paciencia y leeeeeerrrrrrr un chingo y claro con la ayuda de los de este foro ..

A mi tambien me interesa nadamas que como yo no tengo ningun  dongle por eso no he comenzado a moverle ahorita estoy tratande de hacer uno que esta en PELOCK 2.04 y puesa ando como tu moviendo tierra mar y cielo ...


vamos ... que si se puede ... solo que se toma su tiempo. ;D


Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: MCKSys Argentina en 25 Agosto 2009, 21:51 pm
"Si corre, puede ser crackeado" (algo asi decia el famoso +ORC)

Saludos!



Título: Re: Donde empiezo para liberar un programa de la mochila Aladdin Hardlock
Publicado por: Ninja27 en 3 Octubre 2009, 09:06 am
Hola gente...hacia rato que no pasaba por aca, toy algo fuera de foco, nada que no se solucione con un poco de practica.

edwingt : te comento que no tengo mucha experiencia en mochilas, pero conozco el dinasty max bastante, tengo algo de experiencia en debuggers y compiladores, me gustaria que me tengas en cuenta para darte una mano, por ahi otro punto de vista ayuda.

nos vemos gente y no bajes los brazos L30AR.


Título: Re: Como puendo liberar un programa de su mochila
Publicado por: abelinyo21 en 3 Febrero 2014, 14:52 pm
Hola, me gustaría saber si alguien me puede ayudar.
Tengo un programa de diseño de cocinas y e perdido la mochila y sin ella no puedo hacerlo funcionar. Mi pregunta era si puedo liberarlo i poder utilizarlo ¿?

Muchas gracias!