Buenos días.
Estaba siguiendo este tutorial
http://foro.elhacker.net/hacking_avanzado/paper_inyecciones_dll-t159111.0.html , pero no me funciona.
Compilador: Microsoft Visual Studio 2013 RC
Plataforma: Windows 8
Tengo el código que inyecta en el proceso la DLL:
CreateRemoteThread#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
int main()
{
DWORD pid;
HANDLE proc;
char buf[MAX_PATH] = "";
char laDll[] = "C:\\laDll.dll";
LPVOID RemoteString;
LPVOID nLoadLibrary;
char Entrada[255];
printf("Ejemplo CreateRemoteThread by MazarD\nhttp://www.mazard.info\n"); printf("Introduce el PID del programa (puedes verlos en el taskmanager): "); fgets(Entrada
, 255, stdin
); pid
= (DWORD
)atoi(Entrada
); proc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
//Aquí usamos directamente GetModuleHandle en lugar de loadlibrary ya que kernel32 la cargan todos los ejecutables
//Con esto tenemos un puntero a LoadLibraryA
nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
//Reservamos memoria en el proceso abierto
RemoteString
= (LPVOID
)VirtualAllocEx
(proc
, NULL
, strlen(laDll
), MEM_COMMIT
| MEM_RESERVE
, PAGE_READWRITE
); //Escribimos la ruta de la dll en la memoria reservada del proceso remoto
WriteProcessMemory
(proc
, (LPVOID
)RemoteString
, laDll
, strlen(laDll
), NULL
); //Lanzamos el hilo remoto en loadlibrary pasandole la dirección de la cadena
CreateRemoteThread(proc, NULL, NULL, (LPTHREAD_START_ROUTINE)nLoadLibrary, (LPVOID)RemoteString, NULL, NULL);
CloseHandle(proc);
return true;
}
Y el programa compila perfectamente.
Esta es la DLL (generará laDll.dll):
dllmain.cpp// dllmain.cpp : Define el punto de entrada de la aplicación DLL.
#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
FILE *arch;
fopen_s(&arch, "C:\\mehecargado.txt", "w");
}
else
{
FILE *arch;
fopen_s(&arch, "C:\\NOmehecargado.txt", "w");
}
return TRUE;
}
También compila sin problema alguno.
He creado laDll.cpp y laDll.h, pero no definido funciones a exportar, por lo que los archivos están vacíos, ya que ni siquiera tengo funciones.
Ejecuto el programa, pongo el PID y no sucede nada... ¿Qué puede pasar?
Gracias por la ayuda que me podáis dar, en la carrera no me explican nada de esto, y me interesan mucho los temas de seguridad.