#include <iostream>
#include <windows.h>
using namespace std;
int InjectDLL(DWORD, char*);
int getDLLpath(char*);
int getPID(int*);
int getProc(HANDLE*, DWORD);
int getDLLpath(char* dll)
{
std::cout << "Pls enter the path to ur dll file\n";
cin >> dll;
return 1;
}
int getPID(int* PID)
{
cout << "Pls enter the PID to ur target process\n";
cin >> *PID;
return 1;
}
int getProc(HANDLE* handleToProc, DWORD pid)
{
*handleToProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
DWORD dwLastError = GetLastError();
if (*handleToProc == NULL)
{
std::cout << "Unable to open process\n";
return -1;
}
else {
std::cout << "Process opened\n";
return 1;
}
}
int InjectDLL(DWORD PID, char* dll){
{
HANDLE handleToProc;
LPVOID LoadLibAddr;
LPVOID baseAddr;
HANDLE remThread;
//Получить длинну dll
int dlllength = strlen(dll) + 1;
//Получаем обработку процесса
if (getProc(&handleToProc, PID) < 0)
return -1;
//Загрузить kernel32 библиотеку
LoadLibAddr = (LPVOID)GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
if (!LoadLibAddr)
return -1;
baseAddr = VirtualAllocEx(handleToProc, NULL, dlllength, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (!baseAddr)
return -1;
//Записываем путь к dll файлу
if (!WriteProcessMemory(handleToProc, baseAddr, dll, dlllength, NULL))
return -1;
//Создаём удалённый поток
renThread = CreateRemoteThread(handleToProc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddr, baseAddr, 0, NULL);
}
int main()
; {
system("Cheat inject");
int PID = -1;
char* dll = new char[255];
getDLLpath(dll);
getPID(&PID);
}