Video Tutorial How to Hack Any Game Tutorial C++ Trainer #2 - External v2

Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat

l33tz0r

Full Member
Mar 3, 2020
1
102
0
Nice tutorial! I am also new to game hacking i did this tutorial.
For those who want to make the similar but with a different task i did a knife rapid attack as an exercise for myself.

For the guys who also want to try it here are the steps:
- Find Knife Time Pointer
- Find the area where the pointer is writing
- Nop this section
- Write a thread with a bind which spams left clicks

Code:
If Statement in the cheat loop
C++:
if (GetAsyncKeyState(VK_NUMPAD4) && 1) {
            bRapidKnife = !bRapidKnife;

            if (bRapidKnife) {
                mem::NopEx((BYTE*)(moduleBase + 0x64514), 2, hProcess);
            }
            else {
                mem::PatchEx((BYTE*)(moduleBase + 0x64514), (BYTE*)"\x89\x0A", 2, hProcess); 
            }

        }
Starting the thread function
C++:
std::thread t1(mouseTask);
The thread function, the bind for the rapid attack is "F", activating the hack is NUMPAD4
C++:
#define KeyDown(Key) (GetAsyncKeyState(Key) & 0x8000)
void mouseTask() {
            POINT p;
            for (; KeyDown(VK_NUMPAD5) == NULL; Sleep(5))
            {
                if (KeyDown(0x46))
                {
                    GetCursorPos(&p);
                    mouse_event(MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, NULL);
                    Sleep(50);
                    mouse_event(MOUSEEVENTF_LEFTUP, p.x, p.y, 0, 0);
                    Sleep(50);
                }
            }
}
i got this for loop of another tutorial

I did keep it simple so to upgrade it you could code a deactivator and starter bind for the thread. At this moment i started it before the cheat loop and it will end by NUMPAD5 and can't started in this session anymore

Heyo, I'm new here, anyways, tried to take your code to the next level but I'm having an issue.

I tried to make a nuke function which will TP to everyone, and knife them using your knife script.

Here's the raw pseudo-code I wrote (actual code is a bit different but this was my guide), nothing too interesting
Code:
- for ent in entity List
    - if team == enemyT
        - while enemy alive
            - change my xyz to enemy xyz
            - lock onto, slash
        - no ents left?
            - break loop

And here's my ugly ass function, I'm pretty new to game hacking so don't internet-murder me please
C++:
        if (GetAsyncKeyState(VK_NUMPAD5) & 1) 
        {
            bNuke = !bNuke;
            printMenu();

            if (bNuke)
            {
                int myTeam;
                uintptr_t myTeamAddr = FindDMAAddy(hProcess, localPlayerPtr, { 0x32c });
                ReadProcessMemory(hProcess, (BYTE*)myTeamAddr, &myTeam, sizeof(myTeam), nullptr);

                int entity = FindDMAAddy(hProcess, localEntPtr, { 0x4 });
                for (int entCount = 0; entCount < numberOfEnts; ++entCount, entity += 0x4)
                {
                    /*int team = 2;
                    uintptr_t teamAddr = FindDMAAddy(hProcess, entity, { 0x32c });
                    ReadProcessMemory(hProcess, (BYTE*)teamAddr, &team, sizeof(team), nullptr);
                    if (team != 1 && team != 0)
                        break;
                    if (team == 1)
                        continue; //this is trash, ignore */

                    int entTeam = 0;
                    uintptr_t entTeamAddr = FindDMAAddy(hProcess, entity, { 0x32c });
                    ReadProcessMemory(hProcess, (BYTE*)entTeamAddr, &entTeam, sizeof(entTeam), nullptr);

                    //if (entTeam == myTeam)
                        //continue; //this works on TDM

                    int enemyHp = 0;
                    uintptr_t enemyHpAddr = FindDMAAddy(hProcess, entity, { 0xf8 });
                    ReadProcessMemory(hProcess, (BYTE*)enemyHpAddr, &enemyHp, sizeof(enemyHp), nullptr);
                    std::cout << "\nEnt number: " << entCount + 1 << std::endl;
                    std::cout << "entity hp: " << enemyHp << std::endl;

                    if (enemyHp <= 0 || enemyHp > 100)
                    {
                        std::cout << "\nNo alive entities." << std::endl;
                        bNuke = !bNuke;
                        Sleep(1500);
                        printMenu();
                        break;
                    }


                    uintptr_t playerX, playerY, playerZ;
                    float actualX, actualY, actualZ;

                    playerX = FindDMAAddy(hProcess, localPlayerPtr, { 0x34 });
                    ReadProcessMemory(hProcess, (BYTE*)playerX, &actualX, sizeof(actualX), nullptr);

                    playerY = FindDMAAddy(hProcess, localPlayerPtr, { 0x38 });
                    ReadProcessMemory(hProcess, (BYTE*)playerY, &actualY, sizeof(actualY), nullptr);

                    playerZ = FindDMAAddy(hProcess, localPlayerPtr, { 0x3C });
                    ReadProcessMemory(hProcess, (BYTE*)playerZ, &actualZ, sizeof(actualZ), nullptr);

                    std::cout << "player X Y Z: " << actualX << " " << actualY << " " << actualZ << std::endl;


                    uintptr_t enemyX, enemyY, enemyZ;
                    float enemyActualX, enemyActualY, enemyActualZ;

                    enemyX = FindDMAAddy(hProcess, entity, { 0x34 });
                    ReadProcessMemory(hProcess, (BYTE*)enemyX, &enemyActualX, sizeof(enemyActualX), nullptr);

                    enemyY = FindDMAAddy(hProcess, entity, { 0x38 });
                    ReadProcessMemory(hProcess, (BYTE*)enemyY, &enemyActualY, sizeof(enemyActualY), nullptr);

                    enemyZ = FindDMAAddy(hProcess, entity, { 0x3C });
                    ReadProcessMemory(hProcess, (BYTE*)enemyZ, &enemyActualZ, sizeof(enemyActualZ), nullptr);

                    std::cout << "enemy X Y Z: " << enemyActualX << " " << enemyActualY << " " << enemyActualZ << std::endl;
                    
                    if (actualX == enemyActualX && actualY == enemyActualY && actualZ == enemyActualZ)
                    {
                        std::cout << "\nEnts in current game (excluding us): " << entCount << std::endl;
                        std::cout << "reached end of ent list" << std::endl;
                        break; // this is the end of ents, we break
                    }
                    
                    // if everything passes we tp to enemy
                    WriteProcessMemory(hProcess, (BYTE*)playerX, &enemyActualX, sizeof(enemyActualX), nullptr);
                    WriteProcessMemory(hProcess, (BYTE*)playerY, &enemyActualY, sizeof(enemyActualY), nullptr);
                    WriteProcessMemory(hProcess, (BYTE*)playerZ, &enemyActualZ, sizeof(enemyActualZ), nullptr);

                    Sleep(200);

                }
            }
        }

So I am yet to implement the mouse spam thread, I just did the knifing manually so far, but I'm having issues with the team variable.
On Team Deathmatch the function works, but on Free-for-All it seems entities are skipped, since the team number seems randomized.

I was thinking of finding like a game mode variable or something else that is unique to entities on Free-for-All but I couldn't seem to find anything.

But yeah this would be my first external trainer built on top a few of the guides from here, so
all in all, thanks for the teaching.

I'm proud of my shit code that's yet to evolve :)
 

Amir

Dank Tier Donator
Jun 13, 2020
7
204
0
Thanks for great work :) just I have question about how if I want at the same destination , jump to another allocated piece of memory (for example to make a comparison to check dec health belong to player or enemy ) . Thanks again really for great tutorials .
 

Rake

Cesspool Admin
Administrator
Jan 21, 2014
11,525
78,998
2,308
Thanks for great work :) just I have question about how if I want at the same destination , jump to another allocated piece of memory (for example to make a comparison to check dec health belong to player or enemy ) . Thanks again really for great tutorials .
This is chapter 14 of the GHB, you learn detouring in chapter 19
 
  • Like
Reactions: Amir
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Community Mods League of Legends Accounts