Autor
|
Tema: inyeccion dll c++ ayuda (Leído 3,979 veces)
|
Borito30
Desconectado
Mensajes: 481
|
Hola estoy intentando hacer un programita básico para inyectar en dll pero me da algunos errores el código es el siguiente: #include "stdafx.h" #include <stdio.h> #include <windows.h> #include <Tlhelp32.h>
void error(char *err);
HANDLE myProc = NULL;
int main(int argc, char *argv[]) { HANDLE processList = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pInfo; BOOL st = TRUE; pInfo.dwSize = sizeof(PROCESSENTRY32); Process32First(processList, &pInfo); int myPid = 0; do { if (strcmp(pInfo.szExeFile, "test.exe") == 0) { myPid = pInfo.th32ProcessID; break; } Process32Next(processList, &pInfo); } while (st != FALSE);
// Abrir el proceso printf("[+] Opening process %i\n", myPid); myProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, myPid); if (myProc == NULL) error("[-] Error abriendo proceso.\n"); else printf("[+] Proceso abierto.\n");
// Reservar memoria para el argumento (ruta de la DLL) char thData[] = "dll.dll"; LPVOID dirToArg = VirtualAllocEx(myProc, NULL, strlen(thData), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (dirToArg == NULL) error("[-] Error reservando memoria para argumento.\n"); else printf("[+] Memoria reservada para argumento (%i bytes).\n", strlen(thData)); // Escribir la ruta de la DLL en la memoria reservada SIZE_T written = 0; if (WriteProcessMemory(myProc, dirToArg, (LPVOID)&thData, strlen(thData), &written) == 0) error("[-] Error escribiendo memoria.\n"); else printf("[+] Memoria escrita (arg %i bytes).\n", written);
// Lanzar un hilo con LoadLibrary HANDLE rThread = CreateRemoteThread(myProc, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("Kernel32.dll"), "LoadLibraryA"), dirToArg, 0, NULL); if (rThread == NULL) error("[-] Error creando el hilo.\n"); else printf("[+] Hilo creado.\n");
CloseHandle(myProc); }
void error(char *err) { if (myProc != NULL) CloseHandle(myProc); printf("%s", err); exit(0); } Lo que estoy intentando es hacer un inyector que inyecte una dll y aqui donde esta la chica que busque por el proceso dado su nombre. Si alguien tiene un ejemplo mejor. En este caso lo extraí de otro sitio y por lo que parece el que lo hizo no sabía ni lo que hacia. Entonces si tienen un ejemplo sencillito para entenderlo en python es facil pero en c++ no consigo hacer ninguno en condiciones. Fuente: https://blog.ka0labs.net/post/8/
|
|
« Última modificación: 6 Febrero 2017, 13:40 pm por Ragaza »
|
En línea
|
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
|
|
|
MCKSys Argentina
|
Mirándolo muy por encima parece que hace lo correcto. En qué parte te da error?
Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Borito30
Desconectado
Mensajes: 481
|
Mirándolo muy por encima parece que hace lo correcto. En qué parte te da error?
Saludos!
Estos son: Pienso que será porque me faltará alguna librería. Creo. Perdona que no sabía poner la imagen!
|
|
« Última modificación: 26 Noviembre 2016, 20:19 pm por omar-espanol »
|
En línea
|
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
|
|
|
MCKSys Argentina
|
Y porqué no los corrijes? Sólo son errores de argumentos en las APIs. El mismo IDE te dice qué vá en cada lugar.
Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Borito30
Desconectado
Mensajes: 481
|
solucionado pero ahora tengo un problema cuando inyecto el proceso se buguea y se cierra.
Y porqué no los corrijes? Sólo son errores de argumentos en las APIs. El mismo IDE te dice qué vá en cada lugar.
Saludos!
El problema esta al lanzar el hilo supongo que algo habra mal. en load library , tambien cambiando el proceso por handle pero no parece haberlo solucionado, algo de aqui: LPCWSTR a; std::string s = "Kernel32.dll"; a = (LPCWSTR)s.c_str(); HANDLE rThread = CreateRemoteThread(myProc, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary(a), "LoadLibraryA"), dirToArg, 0, NULL); Se supone que en el handle deberia cerrar el hilo. No? Aun así tambien da lo mismo. CloseHandle(myProc); --> CloseHandle(rThread); Habria alguna manera de indicarle que recorriera o inyectara en todos mis procesos de mi usuario? de usuario no de sistema. MOD:Imagen adaptada a lo permitido. No hacer doble post. Usa el botón modificar.
|
|
« Última modificación: 27 Noviembre 2016, 23:40 pm por omar-espanol »
|
En línea
|
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
|
|
|
fary
|
Supongo que inyectaras versiones de 32 bits en 32 y lo mismo con 64...
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
Borito30
Desconectado
Mensajes: 481
|
perdon por el duplicado.
|
|
« Última modificación: 27 Noviembre 2016, 15:12 pm por omar-espanol »
|
En línea
|
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con inyeccion sql
Nivel Web
|
tormenta
|
4
|
4,222
|
30 Marzo 2005, 06:45 am
por Colymore
|
|
|
Ayuda con inyeccion SQL!
Nivel Web
|
ilicitanohack
|
4
|
3,676
|
28 Noviembre 2007, 01:51 am
por berz3k
|
|
|
Inyeccion sql (mysql) Pasa x alto la inyeccion
Nivel Web
|
Littl3
|
3
|
6,611
|
5 Marzo 2009, 22:56 pm
por pedrox@
|
|
|
Ayuda sql inyeccion
Nivel Web
|
bhisorx
|
2
|
2,689
|
20 Septiembre 2009, 01:07 am
por WHK
|
|
|
Ayuda inyeccion sql
Nivel Web
|
mened12
|
1
|
2,334
|
8 Septiembre 2010, 00:12 am
por OzX
|
|