Bueno, al final lo que estaba haciendo no me iba bien del todo ya que en unas funciones de la dll funcionaba y en otras crasheaba creo que porque como solo copio las funciones pues al ejecutarse supongo que buscaba alguna cosa de la dll y booom.
Lo estoy intentando pasar todo para usarlo con lo que pusiste y de momento para cargar la dll tengo esto:
Código PHP:
void __fastcall TFormMain::OnEntryPoint(DWORD Address)
{
// Inyecta la dll
AnsiString dll = "DLLHack.dll";
HANDLE hThread = 0;
DWORD ExitCode = 0;
LPTHREAD_START_ROUTINE hLib;
// Localizo memoria en el espacio de direcciones de la víctima
void* Buffer = VirtualAllocEx((HANDLE)Depurador->GetHProcess(), NULL, dll.Length()+1, MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
if(Buffer){
if(Depurador->WriteMemory((unsigned long)Buffer, dll.c_str(), dll.Length()+1)){
hLib = (LPTHREAD_START_ROUTINE)Depurador->GetAddressAPIByName("Kernel32.dll", "LoadLibraryA");
if(hLib){
hThread =:: CreateRemoteThread(Depurador->GetHProcess(), NULL, 0, hLib, Buffer, 0, 0);
if(hThread){
WaitForSingleObject(hThread, INFINITE ); // Espero a que se cree el Thread
GetExitCodeThread(hThread, &ExitCode); // Termino el Thread
CloseHandle(hThread); // Cierro el Handle hThread
}
}
}
// libero la memoria localizada...
VirtualFreeEx((HANDLE)Depurador->GetHProcess(), Buffer, 0, MEM_RELEASE); // Libero memoria
}
}
Como corre dentro de un depurador, tengo metodos para obtener la direccion de las apis dentro del proceso y otras cosas mas.
El problema que tengo es que se queda congelado en el WaitForSingleObject aunque si lo miro con el Cheat Engine puedo ver como se ha creado el hilo. ¿que puedo hacer para solucionar eso?