Your approach may be the problem instead super. vb6 has some advantages to C++ in the hacking world but you can always just keep it simple with C++ and you don't find 'undetected modules' all you need is to design a module in general and it depends on how smart you are in your hack/hook if you'll be detected or not, although yes sometimes if you know how the protection works you can use some functions in your programming and defeat it. But this would mean you're already a pretty good hacker or programmer. Your first post already immediately told me about where your skill level is, so i'd love to help you.
I switched to using dev-c++ but it's more picky. If you just limewire Microsoft C++ 6.0 you're golden.
This same module i was able to be used for two years on Warcraft III for me. Because it's not the programming, but the hook that counts. Use safe offsets/asm and there's a chance you can't use the nice writeprocessmemory and have to use .dll instead but you can google any injector even like LoaderX is free.
//Cryticals Basic Injection Module
#include <windows.h>
#include <iostream>
using namespace std;
HWND hwar3=FindWindow(NULL,"Game Name Here");
//DECLARE FUNCTIONS
void write(LPVOID addy, DWORD mydata);
void enableDebugPrivileges();
void doparti();
void dopartii();
char pw[3];
//Main part
int main() {
cout << "Warcraft III Red_Map" << endl;
if(!hwar3) //If Warcraft doesn't run
{
cout << "Warcraft III not found" << endl;
system("pause");
exit(0);
}
cout << "hack name and credits here" << endl;
cout << "Please Enter Password... (its abc)" << endl;
scanf("%s",pw);
if(!strcmp(pw,"abc")) {
cout << "Attaching..." << endl;
enableDebugPrivileges();
cout << "Revealing Map..." << endl;
doparti();
dopartii();
system("pause");
}
}
void write(LPVOID addy, DWORD mydata)
{
DWORD PID, TID;
TID = ::GetWindowThreadProcessId (hwar3, &PID);
HANDLE hopen=OpenProcess( PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OP ERATION|PROCESS_VM_READ|
PROCESS_VM_WRITE,FALSE,PID);
WriteProcessMemory(hopen,addy,&mydata,1,0);
CloseHandle(hopen);
}
void enableDebugPrivileges()
{
HANDLE hcurrent=GetCurrentProcess();
HANDLE hToken;
BOOL bret=OpenProcessToken(hcurrent,40,&hToken);
LUID luid;
bret=LookupPrivilegeValue(NULL,"SeDebugPrivilege", &luid);
TOKEN_PRIVILEGES NewState,PreviousState;
DWORD ReturnLength;
NewState.PrivilegeCount =1;
NewState.Privileges[0].Luid =luid;
NewState.Privileges[0].Attributes=2;
AdjustTokenPrivileges(hToken,FALSE,&NewState,28,&P reviousState,&ReturnLength);
}
void doparti()
{
write((LPVOID)0x6F240000, 0xEB);
}
void dopartii()
{
cout<<"hello lol";
}