1. ホーム
  2. セキュリティ

GTA3 オートフルブラッド C++

2022-02-28 09:11:31

        クロードは侮蔑的に笑い、袖をあげて耳を伝う脳みそを拭うと、昼間のFBIとの銃撃戦の光景が蘇り、"ヤバイ!"クロードは汚い血を口一杯に吐いた。

        クロードは、夏飛路34号線の地下にある隠れ家までゆっくりと歩を進め、どっかりと腰を下ろすと、そっと安堵のため息をつき、残った右目を45度の角度にして自分の生命レベルを確認するのである。軽くため息をついた後、静かにパソコンに向かい、visual studio 2010を開き、まずCheatEngineをベースにgat3の各種アドレスを調べ、リアルタイムに監視してライフ値が90を下回らないアドレスの値をキープ。 "成功! " Claudeは叫び、震えながら、唯一残った右手の人差し指を伸ばし、一指瞑想法の名手で次のコードを叩き込んだ。


// gat3blood.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>

#define GTA3_VC_BLOOD_BASE_ADDR 0x7e49c0
#define GTA3_VC_BLOOD 0x354
#define GTA3_VC_SHEILD_BASE_ADDR 0x94ad28
#define GTA3_VC_SHEILD 0x358
#define GTA3_VC_NPCBLOOD_BASE 0x7d5238
#define GTA3_VC_NPCBLOOD 0x354
#define GTA3_VC_MONEY_BASE_ADDR 0x0094ADC8
#define GTA3_VC_AUTOBLOOD_BASE 0x78f884
#define GTA3_VC_AUTOBLOOD 0x204

HANDLE GetProcessHandle(LPCTSTR pName)//get process handle by process name
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (INVALID_HANDLE_VALUE == hSnapshot)
    {
        return NULL;
    }
    PROCESSENTRY32 pe = { sizeof(pe) }
    BOOL fOk;
    fOk = Process32First(hSnapshot, &pe);
    while(fOk)
    {
        if(! _tcscmp(pe.szExeFile, pName))
        {
            CloseHandle(hSnapshot);
            return OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
        }

        fOk = Process32Next(hSnapshot, &pe);
    }

    return NULL;
}


int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hProcess = GetProcessHandle(L"gta-vc.exe");
    if(hProcess)
    {
        BOOL ret;
        int errcnt=0;
        int money=0xfffffff;
        float blood=0;
        float blood_npc;
        float blood_zero = 0;
        float blood_auto;
        float blood_nodie = 97.81393433;
        float blood_auto_fire = 240;
        DWORD blood_memaddr;
        DWORD blood_memaddr_npc;
        int money_memaddr;
        DWORD blood_memaddr_auto;
        while(1)
        {
            Sleep(500);
            //increase my blood
            ret = ::ReadProcessMemory(hProcess,
                (LPCVOID)(GTA3_VC_BLOOD_BASE_ADDR),
                &blood_memaddr,
                sizeof(blood_memaddr),
                NULL);
            if(ret)
            {
                printf("addr=0x%x\n", blood_memaddr);
                ::ReadProcessMemory(hProcess,
                (LPCVOID)(blood_memaddr+GTA3_VC_BLOOD),
                    &blood,
                    sizeof(blood),
                    NULL);
                if(blood ! = blood_nodie)
                {
                    ::WriteProcessMemory(hProcess,
                    (LPVOID)(blood_memaddr+GTA3_VC_BLOOD),
                        &blood_nodie,
                        sizeof(blood_nodie),
                        NULL);
                }
            }
            else
                errcnt++;


            //auto boom!!!
            ret = ::ReadProcessMemory(hProcess,
            (LPCVOID)(GTA3_VC_AUTOBLOOD_BASE),
                &blood_memaddr_auto,
                sizeof(blood_memaddr_auto),
                NULL);
            if(ret)
            {
                printf("addr=0x%x\n", blood_memaddr_auto);
                ::ReadProcessMemory(hProcess,
                    (LPCVOID)(blood_memaddr_auto+GTA3_VC_AUTOBLOOD),
                    &blood_auto,
                    sizeof(blood_auto),
                    NULL);
                //printf(">>>>>>> blood: %.2f\n", blood_npc);
                if(blood_auto >= 250 && blood_memaddr!=blood_memaddr_auto)
                {
                    BOOL ok = ::WriteProcessMemory(hProcess,
                    (LPVOID)(blood_memaddr_auto+GTA3_VC_AUTOBLOOD),
                        &blood_auto_fire,
                        sizeof(blood_auto_fire),
                        NULL);
                    // printf("##add blood. %s\n", ok?"ok":"fail");
                }
            }
            else
                errcnt++;

            if(errcnt > 5)
            {
                printf(">>>>read processmem 0x%x faild.\n", GTA3_VC_BLOOD_BASE_ADDR+GTA3_VC_BLOOD);
                exit(0);
            }
        }
    }
    else
    {
        printf("please run gta vc first!!! \nPress any key to continue... \n");
        getchar();
    }

    return 0;
}



寒い秋、再び

秋の涼しさ、ふたたび。

c++で。

命は失わない。