Показать сообщение отдельно

  #9  
Старый 05.08.2020, 13:36
manukhov
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами: 4254200

Репутация: 98
По умолчанию

Здравствуйте, опять я со своими цыганскими фокусами по трансформации internal->external, на сей раз Nametag. Подскажите, что неправильно, я так и не нашёл проблему, а работать оно не хочет.

P.S.

1. Интернал точно правильный.

2. Получение адреса samp.dll точно работает

3. Виртал протект делал, не помогает.

Internal:





Код:
Idefine SAMP_INFO  0x21A0F8
#define SAMP_SETTINGS  0x3D5
DWORD* pInfo;
BYTE* ThroughWalls;
BYTE* ShowNameTags;
float* fDistance;
    
    
    DWORD SampDLL = (DWORD)GetModuleHandleA("samp.dll");
    if (SampDLL) {
        pInfo = (DWORD*)(SampDLL + SAMP_INFO);
        while (*pInfo == 0) Sleep(1000);
        while (*(DWORD*)(*pInfo + SAMP_SETTINGS) == 0) Sleep(1000);
        ShowNameTags = (BYTE*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x38);
        ThroughWalls = (BYTE*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x2F);
        fDistance = (float*)((DWORD*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x27));
        for (;;)
        {
            do {
                Sleep(100);
            } while (!KeyPressed(VK_MENU) || !KeyPressed(0x32));
            do {
                Sleep(50);
            } while (KeyPressed(0x32));
            gta_showText("okoboga v2 ~g~Activated", 1000, NULL, NULL);
            *ShowNameTags = 1;
            *ThroughWalls = 0;
            *fDistance = 999.0f;
            do {
                Sleep(100);
            } while (!KeyPressed(VK_MENU) || !KeyPressed(0x32));
            do {
                Sleep(50);
            } while (KeyPressed(0x32));
            gta_showText("okoboga v2 ~r~Deactivated", 1000, NULL, NULL);
            *ShowNameTags = 1;
            *ThroughWalls = 1;
            *fDistance = 0.0f;
        }
    }


External (моё):





Код:
#define SAMP_INFO  0x21A0F8
#define SAMP_SETTINGS  0x3D5

if (checkBox5->Checked)
    {
        DWORD pInfo;
        BYTE ShowNameTags = 1;
        BYTE ThroughWalls = 0;
        float fDistance = 999.0f;

        ReadProcessMemory(hProcess, (LPVOID)(moduleBase + SAMP_INFO), &pInfo, sizeof(pInfo), nullptr);
        WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x38), &ShowNameTags, sizeof(ShowNameTags), nullptr);
        WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x2F), &ThroughWalls, sizeof(ThroughWalls), nullptr);
        WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x27), &fDistance, sizeof(fDistance), nullptr);
    }
    else
    {
        DWORD pInfo;
        BYTE ShowNameTags = 1;
        BYTE ThroughWalls = 1;
        float fDistance = 0.0f;

        ReadProcessMemory(hProcess, (LPVOID)(moduleBase + SAMP_INFO), &pInfo, sizeof(pInfo), nullptr);
        WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x38), &ShowNameTags, sizeof(ShowNameTags), nullptr);
        WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x2F), &ThroughWalls, sizeof(ThroughWalls), nullptr);
        WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x27), &fDistance, sizeof(fDistance), nullptr);
 
Ответить с цитированием