domingo 31 de enero de 2010

Nuevo Template xD

0 comentarios
Hoy he realizado un pequeño pero vistoso cambio al blog, se trata de un templet un poco mas agradable (espero para uds tambien lo sea :P) con un tono mas claro que el anterior, el cual he quitado solo por motivos de querer renovar, ademas hay que empezar el año con algo nuevo xD.

Salu2
Read full story

sábado 23 de enero de 2010

Windows NT-2000 Native API Reference By Gary Nebbett

0 comentarios
Un muy buen texto donde se documenta un centenar de las Apis Nativas de Windows NT ubicadas en la ntdll.dll y ntoskrnl.exe. No tiene desperdicio.

Link: http://www.mediafire.com/?kkzhz2hmnym

Salu2 y buena lectura xD
Read full story

domingo 17 de enero de 2010

[Tute] Entendiendo la Estructura de los Recursos a mano - Parte 1

0 comentarios
Hace rato que no publico nada en el blog y lo tenia medio muerto xD, pero hace poco he terminado la primera parte de un tute fabricado principalmente para CracksLatinos de un concurso pendiente.

El objetivo de este es añadir 3 recursos ubicados en unos archivos .dump, son 2 dialogos y un icono, la idea es añadirlos a mano usando un editor hexa conociendo de antemano la estructura de la seccion donde se almacenan, llamese .rsrc o como sea :P, y posteriormente hacerlos funcionar, pero este ultimo punto estará en la segunda parte del mismo que hare pronto. Espero les sea de utilidad.

Link: http://www.mediafire.com/?3jmzeo4jtgj

Salu2
Read full story

martes 6 de octubre de 2009

A Un Paso de Des-Emular :)

0 comentarios
Bueno amigos, como veran ultimamente he estado ocupado con las labores de la Universidad y pues esta semana la tengo libre, de manera que me he adentrado en las tareas que tengo pendientes sobre Ingenieria Inversa :P, una de ellas es la culminacion de un loader debugger que me permita desempacar un programa empacado con el bendito Asprotect SKE y que posee Maquina Virtual en lo que actualmente estoy trabajando.

Pues bien uno de los aspectos que me llamo un poco la atencion, sin entrar en la descripcion de la proteccion (que espero sea pronto con un tute al culminarlo :D) es la forma en que asprotect decide el rumbo que debe tomar cuando esta emulando un salto del tipo jxx. Es decir si el salto emulado se ejecuta o no.

Cabe destacar que con anterioridad se debe conocer el valor del registro EFLAGS antes de la emulacion, ya con esto lo que quiero mostrar es como a travez de una serie de instrucciones que se encuentran en el packer para emular los saltos, se puede deducir que tipo de flag se esta analizando y asi con esto saber que tipo de salto es el emulado ;).

Supongamos que en eax tenemos guardado el valor del EFLAGS recuperado con anterioridad, tenemos esto:

mov edx, 0 //Movemos a edx el indice a analizar
bt eax, edx
sbb eax, eax
and eax,1

Lo que hace es lo siguiente:

- Mueve en edx el indice del flag que queremos consultar el estado.
- Hacemos un test de bits entre el registro eax que posee el conetnido de los EFLAGS y el indice almacenado en edx, copiando asi el bit 0 de eax a el carry flag CF.
- Luego restamos eax con eax y si el CF esta activo producto de la instruccion anterior se restara 1
-Finalmente comprueba mediante and eax, 1 si el flag que consultamos esta activo o no (si=1, 0=no)

Con esto facilmente podremos deducir que flag se esta consultando el estado y asi mismo deducir que tipo de salto jxx es el emulado. Supongamos que edx=6, al aplicar las instrucciones anteriores lo que estaremos haciendo es mirar si el flag Z esta activo y asi con cada uno de los indices de los EFLAGS (C=0, P=2, A=4, Z=6, S=7, T=8, I=9, D=10, O=11).

Pero ahora para determinar si los flags estan es desactivados el packer en otra rutina distinta, toma el code mismo code anterior pero añade un xor eax, 1 al final y con esto preguntaremos si el flag en cuestion esta es desactivado o no, asi:

mov edx, 0 //Movemos a edx el indice a analizar
bt eax, edx
sbb eax, eax
and eax,1
xor eax, 1

Y con esto finalmente podremos hallar que salto esta emulando la MV con solo observar el indice de edx y ver si posee un xor eax,1 al final que practicamente invierte el resultado que se obtiene en el primer ejemplo.

Suponiendo que el valor de edx=6 y estamos trabajando mediante el primer codigo, el salto emulado es JZ o JE ya que este se ejecuta cuando ZF=1 y si estuviesemos bajo el codigo 2 el salto seria JNZ o JNE.

Tambien podremos usar este pequeño code para ocultar o enmascarar comparaciones para que no sean tan evidentes, en fin es cuestion de jugar con el asm :P.

Les recuerdo que con esto no quise mostrar el esquema de la emulacion (eso sera luego :P) sino mas bien dar a conocer como se lograba obtener que tipo de salto se va a emular mediante estas instrucciones conociendo el contendio del EFLAGS y el indice del Flag en cuestion, con el code anterior ubicado en una zona del packer.

Saludos y espero sirva de algo aunque sea en lo mas minimo.
Read full story

Otro Pequeño Tute Para Los Recien Iniciados :D

2 comentarios
Bueno este pequeño escrito que a continuacion veran, lo realice hace ya un par de meses para la seccion de Ingenieria Inversa de el foro.elhacker.net, pues bien, y porque no expandir el conocimiento por poco que sea?, ademas tambien queria darle un poco de vida al blog despues de mucho tiempo sin publicar :P, asi que decidi ponerlo tambien aqui, recomendado para los que recien empiezan en el cracking:

_________



::::::::::::: Tute Crackme NaXoS 1.1 - AmeRiK@nO :::::::::::::


Link Crackme: Aqui

Primero lo cargamos en Peid y no dice nada :P y en RDG muestra UPX:


No presentará mucho problema, por lo que podemos hacerlo a mano, o usando el mismo UPX con la opcion -d y descomprimirlo.


Una vez descompreso vemos que se trata de un Borland C++, ejecutamos el crackme y miramos a que nos enfrentaremos:


Ahi vemos que pase lo que pase tendremos que activar primero ese boton para poder hacer algo, tambien porque el crackme en si no usa la rutina en los eventos de las 2 cajas de edicion ni usa apis llamativas, por lo que solamente el registro se realizará una vez presionado el boton, y tendremos varias alternativas para activarlo, usando editores, etc, pero para hacerlo mas elegante vamos a hacer uso de la api EnableWindow... cargamos primero el unpacked en olly xD y ahora ponemos el BP en dicha api:





Luego de esto ejecutamos el crackme y vemos que no para alguna vez, asi que para no tener que injertar ni nada por el estilo miremos todos los botones que trae el crackme para ver cuando hace uso de la api:




Nos muestra ese segundo Form y aun no ha parado en la api, asi que demos click en el boton Prem!OS y ahi si para el olly:




Ahora nos vamos a ver en la pila los parametros:


Ahi vemos en ESP+4 el handle del control a activar o desactivar segun indique el flag en ESP+8, por lo tanto vayamos a la ventana Windows de Olly y pillemos el handle del boton que necesitamos:




Ahi vemos que se trata del boton en cuestion de la clase TBitBtn de Borland, y alli vemos su handle tambien, copiamos este valor, y vamos a modificar los parametros en la pila antes de la llamada a EnableWindow. Seleccionamos el DWORD de ESP+4, damos click derecho/modificar y ponemos el Handle de nuestro boton, y en ESP+8 ponemos el valor de 1 que indica Enabled:







Una vez hecho todo esto, deberia quedar asi:


Bueno ahora quitemoss el BP en la api y presionamos F9, y cerramos los forms que abrimos y vemos que aunque no lo parezca por su color, el boton ya esta activo:


Ahora si vamos a hacer lo sigueinte, para seguirle el paso a nuestro serial, primero ingresamos los datos y antes de presionar Comprobar usaremos el plugin The Kluger y pondremos un BP en el Punto H.





Entonces ahora presionamos Comprobar y vemos que para allí:






En este instante es donde movera los dos datos a sus respectivos buffers, por lo tanto si apreciamos en ESI apunta al nombre y lo movera a la direccion que apunta EDI, por lo tanto presionemos F9 2 veces y cuando vaya a mover el serial, es decir cuando aparezca justo en ESI, presionamos F8 para que lo mueva y ahora vamos a la direccion de EDI y ponemos un HBP on Acces en ese sitio:




Presionemos F9, y ya estamos justo cuando el crackme va a manipular los datos:


Salimos de esta parte y continuamos el traceo hasta aqui, sin entrar en las calls, ya que hay muchas que son tipicas de Borland (un poco de experiencia ya :P) y no son necesarias para la rutina:


Compara que la longitud del nombre sea mayor a 1. Continuemos.... y vemos aqui que compara si es mayor o igual que 6, y como lo és, veamos donde nos manda:




A otra comparacion que indica lo contrario por lo cual no se cumplirá, y si seguimos llegamos a esta otra parte:


Esta rutina es una gran parte de la rutina generadora del serial por no decir toda :P y no es muy complicada que digamos, por eso puse los comentarios para mas detalles jeje.... ahora cuando salgamos vemos esta comparacion:


Ahi compara la longitud de la cadena generada antes 07h, ahi se ve en el Dump con la longitud de nuestro nombre 09h en mi caso, y si es mayor o igual saltará, y como en este caso continuamos por una serie de rutinas que son interesantes si queremos hacer el keygen pero como no vamos a hacer un tute de 3 paginas :) vamos directo al serial, solo puse alguna info para animaros a crear el keygen. pasemos estas rutinas y continuamos hasta llegar finalmente a la comparacion:




Esta esta pequeño bucle que ira comparando caracter por caracter, entonces antes de que salga miremos que hay en [EBP+EDX-E8]:


Ahi vemos nuestro serial correcto, asi que sin alargar mas el tute, quitamos todos los BPs, lo probamos y....:



Ahi ta la mona con su bikini!!!

Resumiendo...

Name: AmeRiK@nO
Pass: aj_i]\-A4F-dwssqfw

Salu2 a todos!!!
Read full story

sábado 25 de julio de 2009

Humilde CrackMe YST 0.2 - AmeRiK@nO

0 comentarios
Hola a todos!!, hace unos dias habia solucionado un pequeño crackme, y pues me gusta sacarle manual a todo y esta no fue la excepcion, solo que me habia demorado por multiples problemas, pero hoy por fin pude hacerlo.

Un crackme recomendado para los que recien empiezan :D

Link: http://www.mediafire.com/?yifgcziindl

Salu2 y disfruten!!!
Read full story

jueves 9 de julio de 2009

No problem :)

0 comentarios
Bueno pues hace mucho que el blog esta un poco muerto y solo quiero comunicar que esto es solo por pequeños inconvenientes que he tenido que no me han dado tiempo suficiente para seguir publicando entradas en el blog, y espero sepan comprender xD, pronto estare con mas ansias de hacerlo jeje.
Read full story
 

Programación e Ingenieria Inversa © 2008 Propiedad de Amerikano