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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  inyeccion dll c++ ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: inyeccion dll c++ ayuda  (Leído 1,902 veces)
Borito30


Desconectado Desconectado

Mensajes: 481


Ver Perfil
inyeccion dll c++ ayuda
« en: 26 Noviembre 2016, 19:28 pm »

Hola estoy intentando hacer un programita básico para inyectar en dll pero me da algunos errores el código es el siguiente:
Código:
#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
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.916


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: inyeccion dll c++ ayuda
« Respuesta #1 en: 26 Noviembre 2016, 19:36 pm »

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 Desconectado

Mensajes: 481


Ver Perfil
Re: inyeccion dll c++ ayuda
« Respuesta #2 en: 26 Noviembre 2016, 20:08 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.916


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: inyeccion dll c++ ayuda
« Respuesta #3 en: 26 Noviembre 2016, 23:08 pm »

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 Desconectado

Mensajes: 481


Ver Perfil
Re: inyeccion dll c++ ayuda
« Respuesta #4 en: 26 Noviembre 2016, 23:53 pm »

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:
Código:
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.
Código:
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
Colaborador
***
Desconectado Desconectado

Mensajes: 958



Ver Perfil WWW
Re: inyeccion dll c++ ayuda
« Respuesta #5 en: 27 Noviembre 2016, 10:06 am »

Supongo que inyectaras versiones de 32 bits en 32 y lo mismo con 64...

En línea

Un byte a la izquierda.
Borito30


Desconectado Desconectado

Mensajes: 481


Ver Perfil
Re: inyeccion dll c++ ayuda
« Respuesta #6 en: 27 Noviembre 2016, 12:52 pm »

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)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con inyeccion sql
Nivel Web
tormenta 4 3,011 Último mensaje 30 Marzo 2005, 06:45 am
por Colymore
Ayuda con inyeccion SQL!
Nivel Web
ilicitanohack 4 2,749 Último mensaje 28 Noviembre 2007, 01:51 am
por berz3k
Inyeccion sql (mysql) Pasa x alto la inyeccion
Nivel Web
Littl3 3 5,122 Último mensaje 5 Marzo 2009, 22:56 pm
por pedrox@
Ayuda sql inyeccion
Nivel Web
bhisorx 2 2,018 Último mensaje 20 Septiembre 2009, 01:07 am
por WHK
Ayuda inyeccion sql
Nivel Web
mened12 1 1,592 Último mensaje 8 Septiembre 2010, 00:12 am
por OzX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines