Hallo,
ich hab ein Problem mit meinem DLL Injector Source Code.
Er kompiliert (mit CodeBlocks u. MinGW) problemlos aber er funktioniert einfach nicht, d.h er lädt die DLL nicht.
Das ist der Source:
Vielen Dank im Vorraus !
EDIT: Kann es daran liegen, dass ich Win7 64bit verwenden? Wenn ja wie kann ich ihn kompatibel machen, bzw. kann mir wenigstens jemand sagen ob er unter 32 bit funktioniert?
ich hab ein Problem mit meinem DLL Injector Source Code.
Er kompiliert (mit CodeBlocks u. MinGW) problemlos aber er funktioniert einfach nicht, d.h er lädt die DLL nicht.
Das ist der Source:
Code:
#include <windows.h>
#include <TlHelp32.h>
#include <stdio.h>
#include <iostream>
using namespace std;
BOOL DllInject(char* process, char* dll);
int GetProcessIdByName(char* prc);
int main(INT argc, char* argv[])
{
if (argc != 3)
puts("Usage: dll.exe process dll");
cout << argv[1] << endl;
DllInject(argv[1], argv[2]);
return 0;
}
BOOL DllInject(char* process, char* dll)
{
INT pid = GetProcessIdByName(process);
HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_CREATE_THREAD, false, pid);
LPVOID FreeSpace = VirtualAllocEx(hProcess, NULL, strlen(dll)+1, MEM_COMMIT, PAGE_READWRITE);
HANDLE hThread;
WriteProcessMemory(hProcess, FreeSpace, &dll, strlen(dll), NULL);
hThread = CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("KERNEL32.DLL"), "LoadLibraryA"), FreeSpace, NULL, NULL);
if (!hThread)
return false;
CloseHandle(hThread);
return true;
}
int GetProcessIdByName(char* prc)
{
PROCESSENTRY32 pe;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
Process32First(hSnapshot, &pe);
while (Process32Next(hSnapshot, &pe))
{
if (strcmp(pe.szExeFile, prc) == 0)
{
return pe.th32ProcessID;
}
}
return 0;
}
EDIT: Kann es daran liegen, dass ich Win7 64bit verwenden? Wenn ja wie kann ich ihn kompatibel machen, bzw. kann mir wenigstens jemand sagen ob er unter 32 bit funktioniert?