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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  dll inject by c3r0x..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: dll inject by c3r0x..  (Leído 7,907 veces)
c3r0x

Desconectado Desconectado

Mensajes: 70


http://imagizer.imageshack.us/v2/800x600q90/809/lt


Ver Perfil
dll inject by c3r0x..
« en: 5 Agosto 2007, 02:59 am »

Bueno me encontrada en mi pc sin nd q hacer y de mis anteriores code encontre uno dll inj q lo aplique a una tool q habia codeado (era especia de consola  de comandos programada por mi) al caso q decidi sacar parte del codigo y pegarlo..


Editado: pongo un screen




InjDLL.c
Código:
/*
Name: InjDll
Autor:c3r0x

*/

#include <windows.h>
#include <Tlhelp32.h>
#include <string.h>
#include <stdio.h>

#define PID 10     //definimos PID cone l valor 10

     
int Procesos ()  //funcion muestra procesos
{
    HANDLE cap;
    PROCESSENTRY32 p;
    int i;
    int pid;
    int l=1;
   
    printf("[+] Cargando Procesos..\n");
    cap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //obtenemos una captura de los procesos (cap)
    Process32First(cap,&p); //guardamos el primero proceso
    printf(" 1 proceso - %s", p.szExeFile); //lo printeamos
    do //bucle para ir recorriendo proceso a proceso
    {   
      printf ("%i proceso - %s\n ", l,p.szExeFile);
      l++;
     
       
    }while( Process32Next(cap,&p)); //terminamos hasta llegar al ultimo
   CloseHandle(cap); //cerramos el handle
   return 0; //retornamos a 0
   
}

int Buscap(char *proc)  //funcion q busca pid segun sus parametros introducidos
{
    PROCESSENTRY32 p;
    HANDLE cap;
    int pid = 0;
   
    cap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    Process32First(cap,&p); //nuestro primer proceso
    //bucle comparamos proceso a proceso y guardamos su pid en "pid"
   
       do
    {   
       if( strcmp(proc,p.szExeFile)==0)
        {
            pid = p.th32ProcessID;       
        }
    }   
    while( Process32Next(cap,&p)); //no abra q decirlo
    CloseHandle(cap); //igual mente
    return pid;
   
     }
   
int Injectar(char dll[]) //funcion q inyectar
{
    //declaramos
    HANDLE cap;
    HANDLE proc1;
    HANDLE hThread;
    PROCESSENTRY32 p;
    DWORD pid ;
    char pid2[PID];
    int i;
    HMODULE hKernel;
    LPVOID loadl;
    PVOID amem;
   
       
    int dll2 = strlen(dll) + 1;  //sacamos los bytes de la dll y lo guardamos en dll2
    printf("Introduce el Pid: ");
    gets(pid2); //guardamos entrada del teclado
    pid = (DWORD)atoi(pid2); // lo pasamos como int y lo convertimos a DWORD guardandolo en pid

     
    if((proc1=OpenProcess(PROCESS_ALL_ACCESS, false, pid))== NULL) //abrimos el proceso, si no..
    {
      printf("Error: No se Pudo Abrir el Proceso o no Existe!\n");
  return 1;
    }
   
     //abrimos el proceso
    if((hKernel=GetModuleHandle("kernel32.dll"))== NULL) //obtenemos el handle de la libreria si no..
    {
      printf("Error: No se Pudo Allar el Handle");
      return 1;
    }
   
     
    if((loadl = (LPVOID)GetProcAddress(hKernel, "LoadLibraryA"))== NULL) //obtenemos la dir de la funcion LoadLibraryA en el kernel32.dll
    {
      printf("Error: No se Pudo Obtener la Direccion de LoadLibraryA ");
      return 1;
    }
   
     //reservamos memoria  de la dll  en el proceso remoto
   
    if((amem = (LPVOID)VirtualAllocEx(proc1,NULL, dll2, MEM_COMMIT,PAGE_READWRITE))== NULL)
    {
      printf("Error: No se Pudo Reservar Memoria en el Proceso");
      return 1;
    }                                       
   
    //escribimos en memoria ( donde reservamos)
    WriteProcessMemory(proc1,(LPVOID)amem,dll,dll2,NULL);
    //ejecutamos donde habiamos escrito en memoria
    hThread=CreateRemoteThread(proc1,NULL,0,(LPTHREAD_START_ROUTINE)loadl,(LPVOID) amem,0,NULL);
    CloseHandle(proc1);
    return 0;
}
   


int main (int argc, char** argv)
 {
         
         int pid;
       
   
   
    if(argc < 2) //si los argumentos son mayores a 2
{
      printf("\n--------InjDll by c3r0x---------\n");
      printf("InjDll -p Listar Procesos \n");
      printf("InjDll -pid <proceso> Buscar Pid");
          printf("InjDll -inj <dll> Dll\n\n");
          printf("Ejemplo: InjDll -i  midll.dll\n");
          printf("Ejemplo: IndDll -pid explorer.exe\n");
         
return 0;

}
     if(!strcmp(argv[1],"-p")) //si comparamos y es iguao (-p) entonces
     {
        Procesos();
        return 0;
     }
          if(!strcmp(argv[1],"-pid"))
     {
        pid= (DWORD)Buscap(argv[2]);
     
                 if( pid<9999)
     {
         
        printf("[+]Proceso = %s  \n",argv[2]);
         
        printf("[+]PID = %d\n",pid);
       
     }
        return 0;
     }
     
         if(!strcmp(argv[1],"-i"))
     {
        printf("\n--------InjDll by c3r0x---------\n");
        printf("[+]Procesando informacion...\n");
        printf("Dll a Inyectar =  %s\n\n",argv[2]);
        Injectar(argv[2]);
       
        return 0;
     }

       
     
       
       
        return 0;
     }

libreria mi dll.c

Código:
#include <windows.h>



BOOL APIENTRY DllMain (HINSTANCE hmodule,     //hmodule recibe la direccion base donde esta cargada la dll
                       DWORD reason,          //bueno la reason para eso usamos swtich para poner en alguna de las 4
                       LPVOID reserved    )  //
{
    switch (reason)  //la razon son 4 vamos una a una
    {     
      case DLL_PROCESS_ATTACH: //se llama cuando la dll esta cargada en el proceso
             MessageBoxA(NULL, "Pasa viejo toche", "Pasa viejo toche", MB_OK); //cuando estemos cargados ejecutamos MessageBox depliega mensaje
        break;

      case DLL_PROCESS_DETACH: // lo contrario  a lo de arriba ( no importante)
        break;

      case DLL_THREAD_ATTACH:  //su nombre lo dice cuando estamos cargado (dll) y se alla creado un thread ejecutamos lo q pongamos
        break;

      case DLL_THREAD_DETACH: //lo contrario de arriba ( no importante)
        break;
    }
    return TRUE;
}

luego pongo la tool completa, ya q la estoy actualizando con el code inject es un poco mas compleja

No es nd pero espero q les sirva ;)

salu2


En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: dll inject by c3r0x..
« Respuesta #1 en: 5 Agosto 2007, 17:42 pm »

Inyectando con createremotethread es tan típico que lo detectan casi todos los firewalls y antivirus, pero de todos modos felicidades por el código está completo ahí mostrando su lista de procesos, el menú bonito y tal.

Saludos.


En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: dll inject by c3r0x..
« Respuesta #2 en: 1 Julio 2012, 23:08 pm »

intentando compilakr me sale

dllinject.c: In function `Injectar':
dllinject.c:83: `false' undeclared (first use in this function)
dllinject.c:83: (Each undeclared identifier is reported only once
dllinject.c:83: for each function it appears in.)
En línea

Anvil

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: dll inject by c3r0x..
« Respuesta #3 en: 2 Julio 2012, 01:07 am »

No sé mucho de esto pero ¿para que sirve la inyección dll?
En línea

\\::_--__!!ss"1122
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: dll inject by c3r0x..
« Respuesta #4 en: 2 Julio 2012, 01:12 am »

No sé mucho de esto pero ¿para que sirve la inyección dll?
Gran pregunta, esperamos respuestas.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
david_BS

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Re: dll inject by c3r0x..
« Respuesta #5 en: 2 Julio 2012, 01:30 am »

Gran pregunta, esperamos respuestas.

vieron lo que es un proceso?, ustedes saben que los procesos cargan DLL's de las cuales dependen para realizar algunas cosas. pueden ser DLL's del sistema o particulares. inyectar una DLL es cargar una DLL en un proceso, pero el tema es que hay muchas formas de cargarla. si les interesa busquen por el foro acerca de "métodos de inyección de DLL" o algo así. esto se hace porque desde una dll se tiene acceso a toda la memoria del proceso, ya que la dll misma pasa a ser parte del proceso (un módulo)
En línea

Anvil

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: dll inject by c3r0x..
« Respuesta #6 en: 2 Julio 2012, 07:43 am »

Pero una vez que inyectas la DLL ¿cómo sacas la información? no me queda muy claro ... :D
En línea

\\::_--__!!ss"1122
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: dll inject by c3r0x..
« Respuesta #7 en: 2 Julio 2012, 09:37 am »

@Anvil & @Dr.Hacker++ → Básicamente para inyectar código de tu interés en un hilo de otro proceso ... es decir, lo que vos correrías en tu proceso, lo hacés que corra en un proceso que ya está, pero en un hilo (básicamente forzás a que el proceso de tu interés llame a LoadLibraryA() en un hilo, y largás lo tuyo en el DllMain de la dll que carga esa función  ) ...  en principios puede servir para muchas cosas, como ocultarse.

Saludos.
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: dll inject by c3r0x..
« Respuesta #8 en: 2 Julio 2012, 11:52 am »

@Anvil & @Dr.Hacker++ → Básicamente para inyectar código de tu interés en un hilo de otro proceso ... es decir, lo que vos correrías en tu proceso, lo hacés que corra en un proceso que ya está, pero en un hilo (básicamente forzás a que el proceso de tu interés llame a LoadLibraryA() en un hilo, y largás lo tuyo en el DllMain de la dll que carga esa función  ) ...  en principios puede servir para muchas cosas, como ocultarse.

Saludos.
en realidad se crea un hilo en un proceso distinto desde donde se llamo la funcion no inyecta codigo en un hilo
En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: dll inject by c3r0x..
« Respuesta #9 en: 2 Julio 2012, 15:19 pm »

en realidad se crea un hilo en un proceso distinto desde donde se llamo la funcion no inyecta codigo en un hilo

Te felicito por tratar de explicarme algo que ya hacía a los 14 ... el código se explica por si sólo (o con un empujón de la msdn), y te comento que no es la primera vez en mi vida que veo threading (ni laburos con procesos, IPC, locking, etc ..) ni tampoco funciones como VirtualProtectEx(), CreateRemoteThread(), LoadLibrary(), GetModuleHandle() , blablabla ...

Fue una forma un tanto más "ligera" o "metafórica" de explicarlo, soy consciente de que hay ENORME CreateRemoteThread() ahí en ese código
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Escaner de vulnerabilidades PHP/XSS/SQL Inject « 1 2 3 »
Nivel Web
Rojodos 29 21,136 Último mensaje 1 Agosto 2006, 21:08 pm
por Pablo75
Pregunta Mssql inject.
Nivel Web
PHAMTOM 1 2,149 Último mensaje 8 Mayo 2010, 02:49 am
por WHK
SQL-Inject Proyecto
Nivel Web
buger430 2 3,435 Último mensaje 3 Noviembre 2010, 21:29 pm
por buger430
[Aporte chico] VB Inject KM from UM
Análisis y Diseño de Malware
Miseryk 0 2,569 Último mensaje 11 Julio 2011, 21:31 pm
por Miseryk
Alcanse con blind mssql inject , (comando shellcmd).
Nivel Web
ThePinkPanther 4 4,042 Último mensaje 4 Abril 2013, 21:35 pm
por ThePinkPanther
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines