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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Buscando una funcion de la IAT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Buscando una funcion de la IAT  (Leído 1,560 veces)
mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
[C] Buscando una funcion de la IAT
« en: 23 Enero 2013, 16:36 pm »

Pues traigo un programa que busca X funcion en X libreria en su propia Import Address Table. No hay mucha explicacion. Esta bastante chapucero solo queria que pudieran ver un codigo sencillo que haga esto ya que yo no encontre nada estos dias.

Código
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7.        const char libreria[]="KERNEL32.dll";
  8.        const char funcion[]="ExitProcess";
  9.        DWORD image_base=(DWORD)GetModuleHandleA(0);
  10.        PIMAGE_DOS_HEADER DOS;
  11.        PIMAGE_NT_HEADERS NT;
  12.        PIMAGE_IMPORT_DESCRIPTOR IT;
  13.        PIMAGE_IMPORT_BY_NAME *IMPORTED_FUNCTIONS;
  14.        PIMAGE_THUNK_DATA Funcion;
  15.        DWORD *IMPORTED_DLL_NAME;
  16.        DWORD *IMPORTED_FUNCTION_NAME;
  17.        unsigned int i=0;
  18.  
  19.        DOS=(PIMAGE_DOS_HEADER)image_base;
  20.        NT=(PIMAGE_NT_HEADERS)(DOS->e_lfanew + image_base);
  21.        IT=(PIMAGE_IMPORT_DESCRIPTOR)(NT->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress + image_base);
  22.        IMPORTED_DLL_NAME=(DWORD *)(IT->Name + image_base);
  23.  
  24.        while( (IT->Name) != 0 )
  25.        {
  26.                IMPORTED_DLL_NAME=(DWORD *)(IT->Name + image_base);
  27.                if(!strcmp((char *)IMPORTED_DLL_NAME, libreria))
  28.                {
  29.                        printf("%s\n", (char *)IMPORTED_DLL_NAME);
  30.                        break;
  31.                }
  32.                IT++;
  33.        }
  34.  
  35.        IMPORTED_FUNCTIONS=(PIMAGE_IMPORT_BY_NAME *)(IT->Characteristics + image_base);
  36.  
  37.        for(i=0;;i++)
  38.        {
  39.                IMPORTED_FUNCTION_NAME=(DWORD *)((*IMPORTED_FUNCTIONS)->Name + image_base);
  40.                if(((*IMPORTED_FUNCTIONS)!=0) && (!strcmp((char *)IMPORTED_FUNCTION_NAME, funcion)))
  41.                {
  42.                        printf("\t%s\n", (char *)IMPORTED_FUNCTION_NAME);
  43.                        break;
  44.                }
  45.                IMPORTED_FUNCTIONS++;
  46.        }
  47.  
  48.        Funcion=(PIMAGE_THUNK_DATA)(IT->FirstThunk + image_base);
  49.        Funcion+=i;
  50.        printf("\t\tDireccion funcion: %p \t Addr en IT: %p\n", *Funcion, Funcion);
  51.        getchar();
  52.        return 0;
  53. }
  54.  

Sa1uDoS


En línea

ApOkAlizE

Desconectado Desconectado

Mensajes: 150


¿sabes lo que vales? ¡consigue lo que te mereces!


Ver Perfil
Re: [C] Buscando una funcion de la IAT
« Respuesta #1 en: 25 Enero 2013, 13:17 pm »

¡Gracias por la colaboración mr.blood!


En línea

Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
manejo de argumentos en funcion dentro de funcion ???
PHP
SpiderNet 2 3,590 Último mensaje 30 Septiembre 2008, 03:01 am
por SpiderNet
Función System() exec() passthru() Buscando codigo
PHP
Dem0ny 4 3,268 Último mensaje 4 Enero 2010, 22:58 pm
por Dem0ny
Función que retorna el valor de retorno de otra función
Programación C/C++
naderST 7 5,125 Último mensaje 7 Diciembre 2011, 23:45 pm
por naderST
Evaluar Una Funcion dentro de otra funcion Python
Scripting
cristiantorres 1 10,721 Último mensaje 14 Abril 2012, 06:20 am
por cristiantorres
[javascript] llamar a funcion que se recibe por parametro de la funcion
Desarrollo Web
Graphixx 0 6,060 Último mensaje 24 Abril 2012, 19:36 pm
por Graphixx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines