DLL cuando se inicia un archivo EXE inyectar

Topic created · 1 Mensajes · 1210 Visitas
  • Estimado visitante, usted se pregunta seguro de lo que debería estar aquí?

    Es muy sencillo: la posibilidad de [inserte cualquier programa] al inicio de un archivo DLL de inyección / para mantener la carga, en este tutorial, el ejemplo de Metin (más popular de Weil es)

    Breve prefacio:
    Yo no tenía ganas de probar la dirección completa de nuevo, no estoy muy seguro de si todos los exe que he subido coincide con ... si no, por favor póngase en contacto con una queja serverdown@padmak.de
    Y ahora: ¡diviértase!

    Requisitos:

    • OllyDBG (I Nehms en la versión 2)
    • Un exe para instalar (el más reciente DE ejecutable Metin sin HackShield)
    • Un archivo DLL de prueba

    Código de la DLL:

    01
    # include stdafx.h
    02
    # include
    03
    # include
    04a
    # include
    05a
    con espacio de nombres std;
    06
    / / Prototipos:
    07a
    vacío RedirectIOToConsole ( void );
    08a
    extern "C" BOOL WINAPI DllMain ( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
    09a
    / / Variables:
    10a
    estática const WORD MAX_CONSOLE_LINES = 500;
    11
    BOOL WINAPI DllMain ( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    12 de
    interruptor (fdwReason) {
    13
    casos DLL_PROCESS_ATTACH:
    14a
    RedirectIOToConsole ();
    15a
    printf ( "Una explicación sencilla de la Padmak de padmak/ \ n " );
    16a
    descanso ;
    17mo
    caso DLL_PROCESS_DETACH:
    18a
    / / proceso de desprenderse de
    19a
    descanso ;
    20mo
    caso DLL_THREAD_ATTACH:
    21a
    / / adjuntar a la rosca
    22a
    descanso ;
    23o
    caso DLL_THREAD_DETACH:
    24a
    / / separar a partir de hilos
    25a
    descanso ;
    26a
    }
    27a
    vuelta TRUE; / / exitosa
    28a
    }
    29a
    vacío RedirectIOToConsole ( void ) {
    30a
    int hConHandle;
    31a
    larga lStdHandle;
    32a
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    33a
    ARCHIVO * fp;
    34a
    / / asignar una consola para esta aplicación
    35a
    AllocConsole ();
    36a
    / / establecer el búfer de pantalla a ser lo suficientemente grande como para dejarnos desplazar el texto
    37a
    GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE) y coninfo);
    38a
    coninfo.dwSize.Y = MAX_CONSOLE_LINES;
    39a
    SetConsoleScreenBufferSize (GetStdHandle (STD_OUTPUT_HANDLE) coninfo.dwSize);
    40a
    / / Redirige stdout sin búfer a la consola
    41a
    lStdHandle = ( largo ) GetStdHandle (STD_OUTPUT_HANDLE);
    42a
    hConHandle _open_osfhandle = (lStdHandle, _O_TEXT);
    43a
    fp = _fdopen (hConHandle, "w" );
    44a
    * stdout = * fp;
    45a
    setvbuf (stdout, NULL, _IONBF, 0);
    46a
    / / Redirige stdin sin búfer a la consola
    47a
    lStdHandle = ( largo ) GetStdHandle (STD_INPUT_HANDLE);
    48a
    hConHandle _open_osfhandle = (lStdHandle, _O_TEXT);
    49a
    fp = _fdopen (hConHandle, "r" );
    50a
    * stdin = * fp;
    51a
    setvbuf (stdin, NULL, _IONBF, 0);
    52a
    / / redireccionar stderr sin búfer a la consola
    53a
    lStdHandle = ( largo ) GetStdHandle (STD_ERROR_HANDLE);
    54a
    hConHandle _open_osfhandle = (lStdHandle, _O_TEXT);
    55a
    fp = _fdopen (hConHandle, "w" );
    56a
    * stderr = * fp;
    57a
    setvbuf (stderr, NULL, _IONBF, 0);
    58a
    / / hacer cout, wcout, cin, wcin, wcerr, cerr, y obstruir wclog
    59a
    / / punto de consolar, así
    60a
    ios :: sync_with_stdio ();
    61a
    }

    • Cerebro

    Por lo tanto, hay que ir!

    • Iniciar el ejecutable (que ahora estoy saliendo de la Metin exe)
    • La siguiente imagen:

    ESTA AQUI

    • Estamos tan lejos ... Ahora se pone divertido
      Estamos situados en el punto de entrada del grado de exe que se ejecuta al inicio del exe
      Mirando ahora a la primera dirección de la función LoadLibraryA de Kernel32.dll de:

    Haga clic aquí para ver la foto

    • Nuestro resultado:
      call DWORD PTR DS: [ 73F36C ]

    • ¿Qué hacemos ahora? Exactamente la función EntryPoint del grifo
      (Para volver allí para llegar allí, CTRL + G y 00641BD3 o introduzca en el teclado una vez - y una vez que pulse el botón +)

    • Estamos buscando un lugar donde el código no es una (de preferencia al final del archivo)

    • Desplácese hacia abajo en su conjunto, el bit de alta hasta que todos estos "DB 00" ir a código (startets a mí desde 0073E45A )
      Así que necesitamos ahora

    • Volvemos a la función del PE (Ctrl + G -> 00641BD3 )

    • Ahora tenemos una declaración con 5 bytes, podemos reemplazar nuestro salto
      tomo: 00641CAE E8 B1500000 CALL 00646D64 ¡IMPORTANTE! "CALL 00646D64 guardar ", entonces por supuesto que necesitamos para funcionar

    • El espacio en la fila que he publicado este grado ( 00641CAE )

    • El llamado por JMP 0073E45A sustituir (dirección de DB 00)

    • Siga por la JMP, haga clic en Enter

    • Siéntese el siguiente código: (la mejor línea de copiado por línea)
      LLAMAR 00646D64
      PUSHAD
      PUSH 11111111
      call DWORD PTR DS: [ 73F36C ]
      CMP eax, 0
      JE 00 millones
      POPAD
      JMP 00641CB3

    Explicación:
    CALL 00646D64 - la llamada anterior se reemplaza, sin la grasa Kann
    ! PUSHAD - Guarda todas las paradas, importante
    PUSH 11111111 - una dirección al azar que no se cambia!
    CALL DWORD PTR DS: [ 73F36C ] - El llamado a LoadLibraryA desde antes de
    CMP EAX, 0 - Dado que el valor de retorno es NULL si un fallo es estrellarse el cliente si el archivo DLL no se pudo cargar
    (ver aquí )
    POR 00 millones - accidente Si el cliente si el archivo DLL no se ha cargado (JE = Salta si igual)
    POPAD - salvado de PUSHAD registro recupera
    JMP 00641CB3 - El nuevo salto (Sólo una línea bajo la JMP anterior)

    • ¿Qué pasa ahora con PUSH 11111111 ? Por supuesto que queremos impulsar nuestro nombre de la DLL
      que aparezca 0073E47A (justo debajo de JMP 00641CB3 ) y presione CTRL + E
      se abre un pequeño cuadro de diálogo donde la edición de bytes
      , simplemente tomamos nuestro nombre DLL (en mi tut_dll.dll) y Escriba en la parte superior caja de edición (en ASCII) + presione OK

    • La dirección donde comienza la cadena ( 0073E47A copia) y ahora
      PUSH 11111111 por
      PUSH 0073E47A reemplazo
      caso de que el lado derecho, luego aprieta "ASCII" tut_dll.dll aparecer ""
      Si es así -> para todos!

    -. Copia en último ni el archivo DLL en el directorio del archivo EXE y guardar el archivo EXE de Olly
    Simplemente haga clic derecho en cualquier lugar de la ventana -> Editar -> Seleccionar todo -> haga clic derecho en la ventana -> Editar -> Copiar a archivo ejecutable -> botón derecho del ratón en el nuevo Ventana -> Guardar archivo ... -> Yo lo guarde como un metin2client_injector.exe de partida

    Olly cerca, pero sin embargo, si hay algunos errores en la misma de otro modo habrían tenido que empezar de nuevo!

    Si todo funcionó correctamente, ahora es un buen poco de negro la ventana
    (La función es, en efecto RedirectIOToConsole de Google, para los archivos DLL de depuración, pero increíblemente útil!)
    Espero que esto era algo comprensible: D
    Si no es pedir, simplemente

    no se asumen responsabilidad alguna por los residuos que se construye con ella!

    si te sirvio deja el gracias ..

    Fuente:
    AreaGamers