Tomsen1410
Mitglied
Hey,
Ich habe nämlich im Internet ein Tutorial für einen DLL Injector gefunden, doch jetzt stellen sich mir ein paar fragen:
1. Was genau ist eigentlich ein Handle? Ein Pointer? (Ich habe auch schon etwas damit programmiert)
2. Was ist der Datentyp HINSTANCE, HANDLE, HWND, PROCESSENTRY32 und fpLoadLibrary ?
3. Was macht denn die Funktion "VirtualAllocEx", "CreateToolhelp32Snapshot", "Process32Next" und "Process32First"?
4. Was macht denn "typedef HINSTANCE (*fpLoadLibrary)(char*);
" ( ich weiß was typedef macht, aber das verstehe ich nicht)
Zur Hilfe hier noch der Script des Injectors:
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
using namespace std;
bool InjectDLL(DWORD ProcessID);
char FileToInject[] = "YtAssaultCubeDLL.dll";
char ProcessName[] = "ac_client.exe";
typedef HINSTANCE (*fpLoadLibrary)(char*);
int main()
{
DWORD processId = NULL;
PROCESSENTRY32 pe32 = {sizeof(PROCESSENTRY32)};
HANDLE hProcSnap;
while(!processId)
{
system("CLS");
cout << "Searching for " << ProcessName <<"..." <<endl;
cout << "Make sure your game is running" <<endl;
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");
cout << "DLL failed to inject" << endl;
Sleep(1000);
}
cout << "DLL Injected successfuly!" << endl << endl;
cout << "Closing Injector in 5 seconds" << endl;
CloseHandle(hProcSnap);
Sleep(5000);
return 0;
}
bool InjectDLL(DWORD ProcessID)
{
HANDLE hProc;
LPVOID paramAddr;
HINSTANCE hDll = LoadLibrary("KERNEL32");
fpLoadLibrary LoadLibraryAddr = (fpLoadLibrary)GetProcAddress(hDll, "LoadLibraryA");
hProc = OpenProcess (PROCESS_ALL_ACCESS, false, ProcessID);
char dllPath[250] = "C:\\HACKS\\";
strcat(dllPath, FileToInject);
paramAddr = VirtualAllocEx(hProc, 0, strlen(dllPath)+1, 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;
}
Danke schonmal

Zuletzt bearbeitet von einem Moderator: