well i just found out after an hour of debugging that code::blocks is gay for creating dll files. since it uses gcc instead of a native msvc compiler it adds or forgets to add a bunch of crap.
gonna have to remake my dll in msvc later.
on another note heres another version of a dll injector i made up. instead of searching for a window name it searches for a process name instead.
Code
#include <Windows.h>
#include <TlHelp32.h>
#include <stdio.h>
#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
char FileToInject[] = "GameHack.dll";
char ProcessName[] = "Game.exe";
char dllPath[255] = "C:\\Users\\abduct\\Dekstop\\HACKS\\Test\\";
typedef HINSTANCE (*fpLoadLibrary)(char*);
BOOL InjectDLL(DWORD ProcessID);
int main()
{
DWORD processId = 0;
PROCESSENTRY32 pe32 = {sizeof(PROCESSENTRY32)};
HANDLE hProcSnap;
while(!processId)
{
system("cls");
printf("Searching for: %s\n", ProcessName );
printf("Make sure your game is running\n");
hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(Process32First(hProcSnap, &pe32))
{
do
{
if(!strcmp(pe32.szExeFile, ProcessName))
{
processId = pe32.th32ProcessID;
break;
}
}while(Process32Next(hProcSnap, &pe32));
}
Sleep(1000);
}
while(!InjectDLL(processId))
{
system("cls");
printf("DLL Failed To Inject\n");
Sleep(1000);
}
printf("DLL Injected successfully\n");
printf("Closing Injector in 5 seconds");
CloseHandle(hProcSnap);
Sleep(5000);
return 0;
}
BOOL InjectDLL(DWORD ProcessID)
{
HANDLE hProc;
LPVOID paramAddr;
HINSTANCE hDLL = LoadLibraryA("KERNEL32");
fpLoadLibrary LoadLibraryAddr = (fpLoadLibrary)GetProcAddress(hDLL, "LoadLibraryA");
hProc = OpenProcess(CREATE_THREAD_ACCESS, FALSE, ProcessID);
strcat(dllPath, FileToInject);
paramAddr = VirtualAllocEx(hProc, 0, strlen(dllPath) + 1, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
BOOL memoryWritten = WriteProcessMemory(hProc, paramAddr, dllPath, strlen(dllPath) +1, NULL);
CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryAddr, paramAddr, 0, 0);
CloseHandle(hProc);
return memoryWritten;
}