MTA:SA Hack

Posts 115 of 16 · Page 1 of 2
MTA:SA Hack
Hi guys, I'm trying to read some process memory with my hack but I got a problem. First I open the game, and I open cheat engine too, then I find the address of my money, but the address is exactly "gta_sa.exe+77CE50", so I put my code like this
Code:
mem.Read<int> (mem.Module("gta_sa.exe")+0x77CE50)
This should be correct done, but when I try to get the money and cout on my console it shows the number 1977946466 all the time. Do you know guys if I did something wrong? Thanks for read.
I may be mistaken but you have to find the entry point of gta_sa.exe and then you add 77CE50 to it...
What do you mean with the "entry point"? Could you give me an example please? I'm always getting as output the damn number 1977946466 with any address... This is my full code:
Code:
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
#include <time.h>
#include <vector>
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include "ProcMem.h"
#include "Includes.h"
#include "KeyCode.h"
#include "Util.h"
#include <MMSystem.h>
#include <bitset>

using namespace std;

DWORD DwMoney = 0x77CE50 //This is the money address

ProcMem mem;

DWORD dwClient;

void Start ()
{
    dwClient = mem.Module("gta_sa.exe");
}


bool refreshClient ()
{
    dwClient = mem.Module("gta_sa.exe");
    if (dwClient)
    {
        return true;
    }
    return false;
}


int main()
{
    mem.GetProcess ("gta_sa.exe");
    Start ();
    while (true)
    {
        cout<<mem.Read<int>(dwClient + DwMoney)<<endl;

        if (GetKeyDown(NUM_ADD))
        {
            if (refreshClient ())
            {
                cout<<"refreshed"<<endl;
            }
        }
        Sleep (100);
    }
    return 0;
}
Quote Originally Posted by Tonyx97 View Post
What do you mean with the "entry point"? Could you give me an example please? I'm always getting as output the damn number 1977946466 with any address... This is my full code:
Code:
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
#include <time.h>
#include <vector>
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include "ProcMem.h"
#include "Includes.h"
#include "KeyCode.h"
#include "Util.h"
#include <MMSystem.h>
#include <bitset>

using namespace std;

DWORD DwMoney = 0x77CE50 //This is the money address

ProcMem mem;

DWORD dwClient;

void Start ()
{
    dwClient = mem.Module("gta_sa.exe");
}


bool refreshClient ()
{
    dwClient = mem.Module("gta_sa.exe");
    if (dwClient)
    {
        return true;
    }
    return false;
}


int main()
{
    mem.GetProcess ("gta_sa.exe");
    Start ();
    while (true)
    {
        cout<<mem.Read<int>(dwClient + DwMoney)<<endl;

        if (GetKeyDown(NUM_ADD))
        {
            if (refreshClient ())
            {
                cout<<"refreshed"<<endl;
            }
        }
        Sleep (100);
    }
    return 0;
}
I'm no programmer, but I'm pretty sure the MTA:SA exe is called proxy_sa.exe
Quote Originally Posted by LolcatPlays View Post
I'm no programmer, but I'm pretty sure the MTA:SA exe is called proxy_sa.exe
I put proxy_sa before you tell me that too but I always get the same value... that number... I think I'm opening bad the process, I don't know...
Quote Originally Posted by Cosmo_ View Post
I may be mistaken but you have to find the entry point of gta_sa.exe and then you add 77CE50 to it...
Not entry point. Image base.

Quote Originally Posted by Tonyx97 View Post
Hi guys, I'm trying to read some process memory with my hack but I got a problem. First I open the game, and I open cheat engine too, then I find the address of my money, but the address is exactly "gta_sa.exe+77CE50", so I put my code like this
Code:
mem.Read<int> (mem.Module("gta_sa.exe")+0x77CE50)
This should be correct done, but when I try to get the money and cout on my console it shows the number 1977946466 all the time. Do you know guys if I did something wrong? Thanks for read.

You need to get the image base of gta_sa.exe and then add 0x77CE50 to it. Usually, for x86 processes, it's located at 0x400000 but in the case of a dynamic base... You'll need to do a bit more.
A little trick you can do to achieve this is by using EnumProcessModules() to get a list of all handles to the process and then use GetModuleBaseName() on that handle then check if the name matches "gta_sa.exe". If it does, the handle to the process is the image base. ( Aka simply cast the HMODULE/HANDLE to a DWORD ) and add it to 0x77CE50.
I already hacked games such as CSGO with this program, but the problem is.. there are 3 lines in the OpenProcess function which are:

Code:
//Error Handeling, If Your Reading A 64-Bit Process But Compile As 32-Bit It Will Throw Error
        if(!Module32First(hModule, &mEntry))
            exit(2);
So the process won't be opened if is 32-bit compiled as 64-bit... This throw the error and close the console as I see, it seems that gta_sa.exe is 64 bits and compiled as 32-bit and I can't it... But why? Is there any solution to read 64-Bit program?
Quote Originally Posted by Tonyx97 View Post
I already hacked games such as CSGO with this program, but the problem is.. there are 3 lines in the OpenProcess function which are:

Code:
//Error Handeling, If Your Reading A 64-Bit Process But Compile As 32-Bit It Will Throw Error
        if(!Module32First(hModule, &mEntry))
            exit(2);
So the process won't be opened if is 32-bit compiled as 64-bit... This throw the error and close the console as I see, it seems that gta_sa.exe is 64 bits and compiled as 32-bit and I can't it... But why? Is there any solution to read 64-Bit program?
Is it that hard to recompile the program to 64 bit?
Quote Originally Posted by Hitokiri~ View Post


Is it that hard to recompile the program to 64 bit?
Compile maybe not, creating a cheat is something else. For example 32 but jump detour doesnt work in 64 bit. I guess u knew that already though.
Quote Originally Posted by Sammy View Post
Compile maybe not, creating a cheat is something else. For example 32 but jump detour doesnt work in 64 bit. I guess u knew that already though.
All a 64 bit jump requires is a bit more opcodes.

Code:
mov rax, < addr >
jmp rax
How can I recompile it as 64-Bit?
Tonyx97 , if u can hack MTA:SA , give me ur hack please give me in private message
;-)
I'm trying very hard to do it as I can. I downloaded the code of MTA and as I can see there are only 4 files (2 .cpp & 2 .h) related about AntiCheat, but there are only module loading functions, the real anticheat module is "multiplayer_sa.dll". I opened it with IDA pro but I don't know exactly how to analyze the file... I already made a "trainer" with CE to change the money and it's work if I disable all cheats in my host, when I join other server is very detectable against MTA AntiCheat, I've never seen in my life an AntiCheat so strong... I don't know if someone of this forum knows how to analyze the .dll and avoid detecting. My only experience in hack is in CSGO, I made a trigger, wall, etc... I tested it like 2 weeks and is undectable because I made an algorithm to avoid detecting and make VAC crazy, just generating a lot of random variables. But MTA... WoW, I think a professional hacker should research with MTA AntiHack. If you guys know anyone, tell me I want to talk with him/her about the MTA AntiCheat, but for now I only have a detectable work hack... USELESS.
Peace
My brother, I can turn around and skip all anti-Cheat


Give me what you made .
Will try.
if Works.
You will learn how to skip anti-Cheat


بالعربي ادا الهاك حقك يعمل في السيرفر الخاص بك بس ادا عملت اون لاين بتاكل كيك انا اخدر اتخطي الحماية بجميع انواعها هات الهاك حقك ادا عمل بوريك كيف تتخطا الحماية انا بشغل كتير هاكات متل ملفات الدل وغيرة بس ابي هاك الفلوس حقك ادا اشتغل حقك علي اعلمك كيف تتخطي الطرد
I worked so hard please visit it.
youtube.com/watch?v=SEMwzZJNgHs
Posts 115 of 16 · Page 1 of 2

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?