Skip to content
MPGHThe Dark Arts
/
RegisterLog in
Forum
Community
What's NewLatest posts across the boardTrendingHottest threads right nowSubscribedThreads you follow
Discussion
GeneralIntroductionsEntertainmentDebate FortFlaming & Rage
Board
News & AnnouncementsMPGH TimesSuggestions & HelpGiveaways
More Sections
Art & Graphic DesignProgrammingHackingCryptocurrency
Hacks & Cheats
Games
ValorantCS2 / CS:GOCall of Duty / WarzoneFortniteApex LegendsEscape From Tarkov
+14 moreLeague of LegendsGTA VMinecraftRustROTMGBattlefieldTroveBattleOnCombat ArmsCrossFireBlackshotRuneScapeDayZDead by Daylight
Resources
Game Hacking TutorialsReverse EngineeringGeneral Game HackingAnti-CheatConsole Game Hacking
Tools
Game Hacking ToolsTrainers & CheatsHack/Release NewsNew
Submit a release →Share your cheat, tool, or config with the community.
AINEW
AI Tools
General & DiscussionPrompt EngineeringLLM JailbreaksHotAI Agents & AutomationLocal / Open Models
AI × Gaming
AI Aimbots & VisionML Anti-CheatGame Bots & Automation
Create
AI Coding / Vibe CodingAI Art & MediaAI Voice & TTS
The AI frontier →Where game hacking meets modern machine learning. Jump in.
Marketplace
Buy & Sell
SellingBuyingTradingUser Services
Trust & Safety
Middleman LoungeMarketplace TalkVouch Copy Profiles
Money
Cryptocurrency TalkCurrency ExchangeWork & Job Offers
Start selling →List accounts, services, and goods. Use the middleman to trade safe.
MPGH The Dark Arts

A community for offensive security research, reverse engineering, and AI.

Community

ForumMarketplaceSearch

Account

RegisterLog in

Legal

Privacy PolicyForum RulesHelp & FAQ
© 2026 MPGH · All rights reserved.Built by the community, for the community. For educational purposes onlyContent is shared for security research and education — we don't condone illegal use. You're responsible for complying with applicable laws. Use at your own risk.
Home › Forum › Programming › C++/C Programming › [HELP] - DLL Injection

Question[HELP] - DLL Injection

Posts 1–2 of 2 · Page 1 of 1
PE
pelonzudo
[HELP] - DLL Injection
Hello people. I'm traying to code a dll inyector for a game. With the inyector, don't got problems. It load correctly... but the dll that I compile didn't work. Maybe you could helpme with it.

Inyector (tested and working), now only got functionally
[PHP]
//Need Psapi library linked! (-lpsapi)

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Psapi.h>
#include <tchar.h>
#include <tlhelp32.h>

#define DLLNAME "HookDll.dll"

void ExitFunc(int param)
{
if(!param) system("pause");
exit(0);
}

//argc is 1 if there are no arguments because argv[0] contains the PE-name with the full path.
int main(int argc, char *argv[])
{
Start:
//Needed at the beginning of a Label :P
if(1);
//Check if OS is Windows NT or higher
DWORD version = GetVersion();
DWORD majorVersion = (DWORD)(LOBYTE(LOWORD(version)));
DWORD minorVersion = (DWORD)(HIBYTE(LOWORD(version)));
if(version > 0x80000000)
{
MessageBox(0, "You need to use Windows NT or higher to use this.", "Error", 0);
return 0;
}

//Get Path of the DLL to inject
char DLLName[MAX_PATH+100];
LPTSTR szLastSlash;
if(!GetModuleFileName(NULL, DLLName, MAX_PATH))
{
printf("Unable to get DLL path. Error: %d\n", GetLastError());
ExitFunc(0);
}
szLastSlash = _***rchr(DLLName, TEXT('\\'));
if(szLastSlash == NULL)
{
printf("Unable to append \"\\\\\" string to the DLL path string. Now thats some unexpected error!\n");
ExitFunc(0);
}
*(szLastSlash + 1) = TEXT('\0');
_***cat(DLLName, DLLNAME);
printf("DLLName: %s!\n", DLLName);

//Create a process list to choose a process
DWORD pids[1024];
int i = 0;
PROCESSENTRY32 pe32;
HANDLE hProcessSnap;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("Can't create a process snapshot. Error: %d\n", GetLastError());
ExitFunc(0);
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(hProcessSnap, &pe32))
{
printf("Can't receive information about the first process. Error: %d\n", GetLastError());
CloseHandle(hProcessSnap);
ExitFunc(0);
}
printf("\n-----===== List of all Processes =====-----\n\n");
do
{
if(i > 1023)
{
printf("Too many processes to list more! Stopping reading processes!\n");
break;
}
pids[i] = pe32.th32ProcessID;
printf("Nr: %d\tPID: %d \t0x%x \t%s\n", i, pe32.th32ProcessID, pe32.th32ProcessID, pe32.szExeFile);
i++;
} while(Process32Next(hProcessSnap, &pe32));
printf("\nChoose a process to inject: ");
char buf[1024];
HANDLE hVictim;
DWORD pidVictim;
scanf("%d", &pidVictim);
pidVictim = pids[pidVictim];

//Find default Window
// HWND hVic;
// hVic = FindWindow(FINDWINDOWCLASS,FINDWINDOWNAME);
// GetWindowThreadProcessId(hVic, (DWORD*) &pidVictim);
hVictim = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pidVictim);
if(hVictim == 0)
{
printf("Couldn't find Window.\n");
ExitFunc(0);
}
else printf("Found PID:\t\t\t\t%d\nFound Window Handle:\t\t\t%d\n", pidVictim, hVictim);

//Load LoadLibrary function to let the victim load our dll
HMODULE hKernel = GetModuleHandle("kernel32.dll");
if(hKernel == 0)
{
printf("Unable to get Kernel32 handle. Error: %d\n", GetLastError());
ExitFunc(0);
}
else printf("Found Kernel32 handle:\t\t\t%d\n", hKernel);

LPTHREAD_START_ROUTINE lpfLoadLibraryA = (LPTHREAD_START_ROUTINE) GetProcAddress(hKernel,"LoadLibraryA");
if(lpfLoadLibraryA == 0)
{
printf("Unable to get LoadLibrary function. Error: %d\n", GetLastError());
ExitFunc(0);
}
else printf("Found LoadLibrary Function:\t\t%d\n", lpfLoadLibraryA);

//Allocate Space for the dll name
LPVOID pCodeAddress = (LPVOID) VirtualAllocEx(hVictim, NULL, strlen(DLLName), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
if(pCodeAddress == NULL)
{
printf("VirtualAllocEx() failed, Error: %d\n", GetLastError());
ExitFunc(0);
}
else printf("Allocated space for DLL at address:\t%d 0x%x\n", pCodeAddress, pCodeAddress);

//Inject dll name into victim
if(!WriteProcessMemory(hVictim, (LPVOID)pCodeAddress, DLLName, strlen(DLLName), NULL))
{
printf("WriteProcessMemory() failed, Error: %d\n", GetLastError());
ExitFunc(0);
}
else printf("Injected code into victim.\n");

//Create thread in victim with our dll code
HANDLE hInject;
hInject = CreateRemoteThread(hVictim, NULL, 0, (LPTHREAD_START_ROUTINE) lpfLoadLibraryA, (LPVOID) pCodeAddress, 0, NULL);
if(hInject == NULL)
{
printf("CreateRemoteThread() failed, Error: %d\n", GetLastError());
ExitFunc(0);
}
else printf("Created thread in victim process.\nHandle of new thread:\t\t\t%d\n", hInject);

//Wait for the thread to complete, then free allocated space and shut down the thread we created
WaitForSingleObject(hInject, INFINITE);
VirtualFreeEx(hVictim, pCodeAddress, 0, MEM_RELEASE);
CloseHandle(hInject);
printf("Code has been run.\n\nPress \'r\' to restart, anything else to quit.\n");
scanf("%1s", &buf);
if(buf[0] == 'r') goto Start;
return 0;
}
[/PHP]

HookDll.dll
[PHP]
#include "main.h"
#define LogFile "c:\\LOG.txt"

HANDLE OpenLog(char *Filename);

bool IsLogging = false;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
OpenLog(LogFile);
// attach to process
// return FALSE to fail DLL load
break;

case DLL_PROCESS_DETACH:
// detach from process
break;

case DLL_THREAD_ATTACH:
// attach to thread
break;

case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}

HANDLE OpenLog(char *Filename)
{
HANDLE hLogFile;

hLogFile = CreateFile( Filename, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_ALWAYS,0,0);
if(hLogFile!=INVALID_HANDLE_VALUE)
IsLogging = true;//SetFilePointer(hLogFile, 0,0, FILE_END);//*/

return hLogFile;
}
[/PHP]

It is supossed to create a "log" file (C:\\Log.txt). I tested the loader with other dll and works fine. And used PE and the dll got inyected... So i don't know what could be the problem...

I'm testing with CodeBlocks and Dev-C++, both with MinGW compiler, and didn't get any solution.

Here the compiler line. Could be a problem with the compiling options?
Code:
mingw32-g++.exe  -Wall -DBUILD_DLL -g     -c  [MYPATH]\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -shared -Wl,--output-def=bin\Debug\libHookDll.def -Wl,--out-implib=bin\Debug\libHookDll.a -Wl,--dll  obj\Debug\main.o   -o bin\Debug\HookDll.dll  -luser32
Thanks in advance.
#1 · 18y ago
PE
pelonzudo
Solved. Need an extern "C" before the DllMain Entry. Now looks like:
[php]
#ifdef BUILD_DLL
// the dll exports
#define EXPORT __declspec(dllexport)
#else
// the exe imports
#define EXPORT __declspec(dllimport)
#endif

#include <windows.h>
#include <stdio.h>

#define LogFile "c:LOG.txt"

HANDLE OpenLog(char *Filename);

bool IsLogging = false;

extern "C"
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
OpenLog(LogFile);
// attach to process
// return FALSE to fail DLL load
break;

case DLL_PROCESS_DETACH:
// detach from process
break;

case DLL_THREAD_ATTACH:
// attach to thread
break;

case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}

HANDLE OpenLog(char *Filename)
{
HANDLE hLogFile;

hLogFile = CreateFile( Filename, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_ALWAYS,0,0);
if(hLogFile!=INVALID_HANDLE_VALUE)
IsLogging = true;//SetFilePointer(hLogFile, 0,0, FILE_END);//*/

return hLogFile;
}
[/php]
#2 · 18y ago
Posts 1–2 of 2 · Page 1 of 1

Post a Reply

Similar Threads

  • need help with injecting code/using itBy 0xx-kyle-xx0 in Combat Arms Help
    1Last post 8y ago
  • [Help!] CA crash on dll injectBy CyberStriker in Combat Arms Hacks & Cheats
    9Last post 18y ago
  • Help In Injecting Hack!By ElmoCA in Combat Arms Help
    5Last post 15y ago
  • Crash at Dll injectBy CyberStriker in WarRock - International Hacks
    1Last post 18y ago
  • DLL injection FailledBy aynal in WarRock - International Hacks
    1Last post 20y ago

Tags for this Thread

#dll#injection