DLL cuando se inicia un archivo EXE inyectar
-
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 partidaOlly 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, simplementeno se asumen responsabilidad alguna por los residuos que se construye con ella!
si te sirvio deja el gracias ..
Fuente:
AreaGamers