Título: Parchear la IAT para interceptar GPA Publicado por: 85 en 27 Febrero 2013, 04:56 am Hola, quería mostrar algo básico que puede aportar algunos conceptos. Más que nada, gente que está en sus comienzos con la programación y puede interesarse en algunos detalles técnicos.
NIVEL: Beginner No consideren esto de nivel avanzado. Lo primero: IAT = IMPORT ADDRESS TABLE http://sandsprite.com/CodeStuff/Understanding_imports.html http://www.karmany.net/index.php/ingenieria-inversa/19-ingenieria-inversa-novatos/146-pe-header-que-es-la-iat-import-address-table http://cboard.cprogramming.com/cplusplus-programming/99240-import-address-table-iat.html La iat es un lugar que puede accederse fácilmente con un desensamblador y se pueden observar todos los símbolos que el ejecutable importa de ciertos módulos. Hay una forma de hacer que el ejecutable no contenga imports, pero fuera de esa técnica los ejecutables la utilizan. Generalmente se dice que los EXE usan la IAT y las DLL las EAT, véase EAT = EXPORT ADDRESS TABLA , es para exportar símbolos. Más información http://www.rohitab.com/discuss/topic/33541-assembling-an-executable-with-no-imports/ http://www.etalking.com.ar/showthread.php?400-llamar-funciones-winapi32-sin-imports Volviendo al tema, veamos lo que uno puede hacer fácilmente, con un desensamblador: (http://img543.imageshack.us/img543/3835/gpa1.png) (http://imageshack.us/photo/my-images/543/gpa1.png/) (http://img688.imageshack.us/img688/5069/gpa2.png) (http://imageshack.us/photo/my-images/688/gpa2.png/) (http://img802.imageshack.us/img802/1690/gpa3.png) (http://imageshack.us/photo/my-images/802/gpa3.png/) (http://img255.imageshack.us/img255/157/gpa4.png) (http://imageshack.us/photo/my-images/255/gpa4.png/) Obteniendo la dirección específica en la IAT se puede proceder a crear el parche con el cual se logra interceptar GetProcAddress. Se trata sólo de cambiar el valor de un puntero, poniéndole la dirección de nuestra función "de gancho" o hook, para que sea llamada en lugar de la original. Código:
Dejo el proyectito para descargar http://www.mediafire.com/?2sowg12a6vora4n Hasta Luego Título: Re: Parchear la IAT para interceptar GPA Publicado por: x64core en 27 Febrero 2013, 07:27 am Hola,
Código: 400000+2004=IAT un metodo que fue ya publicado más de 1000 veces no crees que seria al menos publicar algo decente? Código: __asm { Título: Re: Parchear la IAT para interceptar GPA Publicado por: 85 en 27 Febrero 2013, 07:40 am mi publicación es decente, el indecente sos vos amigo.
que tiene que ver que la IAT no está siempre en esa dirección? para algo la busqué en el PE EXPLORER !! se trata de usar el desensamblador no de hacer algo automático. Si se trata de este programa específicamente!. Ni leer sabés, nice bepi y si, tal parece que se ha publicado 1001 vez Título: Re: Parchear la IAT para interceptar GPA Publicado por: x64core en 27 Febrero 2013, 07:46 am mi publicación es decente, el indecente sos vos amigo. que tiene que ver que la IAT no está siempre en esa dirección? para algo la busqué en el PE EXPLORER !! se trata de usar el desensamblador no de hacer algo automático. Si se trata de este programa específicamente!. Ni leer sabés, nice bepi y si, tal parece que se ha publicado 1001 vez que tiene que ver que la IAT no está siempre en esa dirección? Lucis como que no tenes idea de lo que vos mismo publicas, bueno no me extrañaria, ya que al parecer solo sabes usar un desesamblador y tener el estilo de un niño programador. Y eso quiere decir que cada vez que quiero hookear la IAT tendre que usar un desesamblador y todo lio que has publicado? Estamos en el año 2013 si no te has dado cuenta. Título: Re: Parchear la IAT para interceptar GPA Publicado por: 85 en 27 Febrero 2013, 07:52 am para que voy a adjuntar el OLLY DBG ? necesito hacer eso?
puedo abrilo con un editor PE sólamente. EJ: LORD PE Seguro no conocés nada, ni el OLLY, ni el LORD PE, windbg? quién habló de hookear APIs? PFF El título te lo dice amigo: Pachear la IAT, no es hooking en general, el hooking es algo secundario en este topic, el tema era parchear la IAT. seguro estás aprendiendo API hooking y me lo querés demostrar XD JAJA x64 se pone, nice bepi ::) Título: Re: Parchear la IAT para interceptar GPA Publicado por: x64core en 27 Febrero 2013, 07:56 am para que voy a adjuntar el OLLY DBG ? necesito hacer eso? Este chico es tan divertido, solo para que no continues espameando el foro, mandame algo decente por MP.puedo abrilo con un editor PE sólamente. EJ: LORD PE Seguro no conocés nada, ni el OLLY, ni el LORD PE, windbg? quién habló de hookear APIs? PFF El título te lo dice amigo: Pachear la IAT, no es hooking en general, el hooking es algo secundario en este topic, el tema era parchear la IAT. seguro estás aprendiendo API hooking y me lo querés demostrar XD JAJA x64 se pone, nice bepi ::) Título: Re: Parchear la IAT para interceptar GPA Publicado por: 85 en 27 Febrero 2013, 08:31 am Para el rico bepi de x64core que dice que usar el ensamblador en línea no es portable, y si pero qué me importa? si el objetivo es parchear la IAT......
si quiero lo hago todo con ensamblador en línea we Era algo demostrativo nada más... veamos como quedaría: Código: /* __asm { POR Código: typedef FARPROC (WINAPI* GetProcAddress_t) ( HMODULE hModule, LPCSTR lpProcName ); Título: Re: Parchear la IAT para interceptar GPA Publicado por: x64core en 27 Febrero 2013, 08:37 am Para el rico bepi de x64core que dice que usar el ensamblador en línea no es portable, y si pero qué me importa? si el objetivo es parchear la IAT...... Felicidades, ya pudiste acceder al contenido de un puntero sin usar ensamblador al menos usando tu estilo de casting ;-)si quiero lo hago todo con ensamblador en línea we Era algo demostrativo nada más... veamos como quedaría: Código: /* __asm { POR Código: typedef FARPROC (WINAPI* GetProcAddress_t) ( HMODULE hModule, LPCSTR lpProcName ); Título: Re: Parchear la IAT para interceptar GPA Publicado por: MCKSys Argentina en 27 Febrero 2013, 09:05 am Sin ánimos de ofender, tengo pregunta: Cuál es el objetivo de parchear la IAT del proceso que estas corriendo?
En todo caso, no sería mejor parchear la API? Digo, porque por ej.. una DLL cargada por el ejecutable no va a usar la IAT del EXE, va a usar su propia IAT. Por esto, no le veo la utilidad al parcheo de la IAT. Podrías explicar la finalidad del parche? |