Загрузка...

Самописный чит для AssaultCube c++

Тема в разделе C/C++ создана пользователем wwwhttpru 9 сен 2019. 515 просмотров

Загрузка...
  1. wwwhttpru
    wwwhttpru Автор темы 9 сен 2019 0 9 мар 2019
    так сказать нахожусь в процессе изучения всего процесса. Написал простенький и не много корявый aim. Каким образом его сделать "умнее"?что бы по стенам не водил, а при виде противников.
    Код

    #include <Windows.h>
    #include <TlHelp32.h>
    #include <iostream>
    #include <vector>

    using namespace std;

    #define M_PI 3.14159265358979323846

    #define BaseAddress 0x50F4F4
    #define EntityAddress 0x50F4F8
    #define NumberPlayersAddress 0x50F500
    #define NoRecoilAddress 0x463786
    #define CountPlayer 0x50F500
    // Offsets

    #define OffSetLife 0xF8
    #define OffSetArmor 0xFC
    #define OffSetJump 0x18
    #define OffSetPos 0x4
    #define OffSetViewX 0x40
    #define OffSetViewY 0x44
    #define OffSetAmmo 0x150
    #define OffSetTeam 0x32C
    #define OffSetName 0x225

    class LocalPlayer
    {
    public:
    int LocalAddress;
    int Life;
    int Armor;
    float View[2];
    float Position[3];
    int Team;
    char Name[16];
    int NumberOfPlayer;

    void Read(HANDLE hProc)
    {
    ReadProcessMemory(hProc, (LPCVOID)BaseAddress, &LocalAddress, sizeof(LocalAddress), NULL);//Получение локального адресса игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetLife), &Life, sizeof(Life), NULL);//Получение Life локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetArmor), &Armor, sizeof(Armor), NULL);//Получение Armor локального игрока
    //Позиция
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetPos), &Position[0], sizeof(Position[0]), NULL);//Получение Position_X локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetPos + 0x4), &Position[1], sizeof(Position[1]), NULL);//Получение Position_Y локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetPos + 0x4 + 0x4), &Position[2], sizeof(Position[2]), NULL);//Получение Position_Y локального игрока
    //Обзо ось_x ось_Y
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetViewX), &View[0], sizeof(View[0]), NULL);//Получение View_x локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetViewY), &View[1], sizeof(View[1]), NULL);//Получение View_Y локального игрока
    //Команда->Кол-во_Игроков_Всего->Имя
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetTeam), &Team, sizeof(Team), NULL);//Получение команды игрока
    ReadProcessMemory(hProc, (LPCVOID)(CountPlayer), &NumberOfPlayer, sizeof(NumberOfPlayer), NULL);//Получение Кол-во игроков
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetName), &Name, sizeof(Name), NULL);//Получение имя игрока

    }
    };

    class EntityPlayer
    {
    public:
    int BotAddress;
    int BotAdressGet;
    int Life;
    int Armor;
    float Position[3];
    int Team;
    char Name[16];

    void Read(HANDLE hProc, int i)
    {
    ReadProcessMemory(hProc, (LPCVOID)(EntityAddress), &BotAddress, sizeof(BotAddress), NULL);
    ReadProcessMemory(hProc, (LPCVOID)(BotAddress + (0x4 * i)), &BotAdressGet, sizeof(BotAdressGet), NULL);
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetLife), &Life, sizeof(Life), NULL);//Получение Life локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetArmor), &Armor, sizeof(Armor), NULL);//Получение Armor локального игрока
    //Позиция
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetPos), &Position[0], sizeof(Position[0]), NULL);//Получение Position_X локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetPos + 0x4), &Position[1], sizeof(Position[1]), NULL);//Получение Position_Y локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetPos + 0x4 + 0x4), &Position[2], sizeof(Position[2]), NULL);//Получение Position_Y локального игрока

    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetTeam), &Team, sizeof(Team), NULL);//Получение команды игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetName), &Name, sizeof(Name), NULL);//Получение имя игрока

    }
    };

    float Get3dDistance(LocalPlayer Myplayer, EntityPlayer Target)
    {
    return sqrt(pow(Target.Position[0] - Myplayer.Position[0], 2) +
    pow(Target.Position[1] - Myplayer.Position[1], 2) +
    pow(Target.Position[2] - Myplayer.Position[2], 2)
    );
    }

    void getDelta(float* delta, LocalPlayer MyPlayer, EntityPlayer TargetPlayer)
    {
    delta[0] = TargetPlayer.Position[0] - MyPlayer.Position[0];
    delta[1] = TargetPlayer.Position[1] - MyPlayer.Position[1];
    delta[2] = TargetPlayer.Position[2] - MyPlayer.Position[2];
    }

    void getAngles(float* angles, float* delta)
    {
    // angle X (pitch)
    if (delta[1] < 0)
    angles[0] = (float)((180 / M_PI) * (-atan(delta[0] / delta[1])));

    else if (delta[1] > 0)
    angles[0] = (float)(180 - (180 / M_PI) * (atan(delta[0] / delta[1])));

    else
    delta[0] >= 0 ? angles[0] = -90 : angles[0] = 90;

    // angle Y (yaw)
    float dist2D = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);

    if (dist2D != 0)
    angles[1] = (float)((180 / M_PI) * (atan(delta[2] / dist2D)));
    else
    angles[1] = 0;
    }


    int main()
    {
    HANDLE hProc;
    DWORD pid;
    HWND hWND;
    float angles[2];
    float delta[3];
    float Distance = 0;
    float TempDistance = 0;
    int aim = 0;
    hWND = FindWindow(0, (LPCSTR)"AssaultCube");
    GetWindowThreadProcessId(hWND, &pid);
    hProc = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid);

    LocalPlayer MyPlayer;
    MyPlayer.Read(hProc);
    EntityPlayer TargetPlayer[16];
    for (int i = 1; i < MyPlayer.NumberOfPlayer; i++)
    {
    TargetPlayer[i].Read(hProc, i);
    }
    while (true)
    {
    MyPlayer.Read(hProc);
    for (int i = 1; i < MyPlayer.NumberOfPlayer; i++)
    {
    Distance = 99999;

    TargetPlayer[i].Read(hProc, i);
    TempDistance = Get3dDistance(MyPlayer, TargetPlayer[i]);
    if (TempDistance < Distance && MyPlayer.Team != TargetPlayer[i].Team && TargetPlayer[i].Life > 0)
    {
    aim = i;
    Distance = TempDistance;
    }
    }
    getDelta(delta, MyPlayer, TargetPlayer[aim]);
    getAngles(angles, delta);

    WriteProcessMemory(hProc, (LPVOID)(MyPlayer.LocalAddress + OffSetViewX), &angles[0], sizeof(float), NULL);
    WriteProcessMemory(hProc, (LPVOID)(MyPlayer.LocalAddress + OffSetViewY), &angles[1], sizeof(float), NULL);

    system("CLS");

    }
    }
     
  2. Legioner53
    Legioner53 9 сен 2019 147 1 авг 2018
    Ты не на тот форум написал, тут школьники :2011_like:
     
  3. GaMoraBy
    GaMoraBy 9 сен 2019 Заблокирован(а) 350 14 апр 2019
    Бляяя, мне еще ведь уроки делать..
     
  4. wwwhttpru
    wwwhttpru Автор темы 9 сен 2019 0 9 мар 2019
    Legioner53, подскажи какой ру форум есть?
     
  5. JokeTile_inactive2451763
    Не не не тебе не сюда)
     
  6. LitleDuck
    LitleDuck 30 сен 2019 Заблокирован(а) 325 1 мар 2018
    wwwhttpru, тебе нужно проверять за стеной ли противник, делается это при помощи traceray функции, почитай на форумах.
     
  7. wwwhttpru
    wwwhttpru Автор темы 30 сен 2019 0 9 мар 2019
    LitleDuck, возьму во внимание. Спасибо
     
Top