Другое С/С++ Вопрос - Ответ

Dark_Knight

Me, me and me.
Друг
4,078
2,096
Не при выходе крашит. Пытаюсь отгрузить через FreeLibraryAndExitThread – краш. Перед вызовом, я конечно же отгружаю всё что использую.
Подключи отладку и посмотри на каком моменте крашит. Бывает, что забыл какую-то проверку сделать или что-то в таком духе. С отладкой ты сможешь посмотреть список вызовов до краша. И не забудь перед откладкой скомпилировать с /DEBUG
 

Receiver

leet-cheats 👑
Проверенный
620
889
Как рассчитать оффсет в bitStream, для SetReadOffset/SetWriteOffset?
1591166028797.png

Все аргументы:
1591166094106.png

Мне нужно сразу начинать читать с iClientVerLen. Попытался найти оффсет с помощью offsetof, результат не утешительный.
 

ufdhbi

Известный
Проверенный
1,459
866
Как рассчитать оффсет в bitStream, для SetReadOffset/SetWriteOffset?
Посмотреть вложение 58334
Все аргументы:
Посмотреть вложение 58335
Мне нужно сразу начинать читать с iClientVerLen. Попытался найти оффсет с помощью offsetof, результат не утешительный.
в ручную биты считать
 

barspinoff

Известный
126
33
Сделал внешний Антситан, как ток включаю игра сразу закрывается. Ни крашей, ничего. Тупо закрывается. Это потому-что проверку не сделал?

Интернал сурс по корому делал:
if (bAntiStun)
    {
        if (!pSAMP->getPlayers())
            return;
        if (!bAntiStunned)
        {
            // but it doesn't work only for sniper
            DWORD dwStunAddr = *(DWORD*)0x00B6F5F0;
            *(BYTE*)(dwStunAddr + 0x478) = 4;
        }

        // for sniper stun
        float fRate = 100.f;
        bAntiStunned = true;
    }
    else
    {
        if (bAntiStunned)
        {
            DWORD dwStunAddr = *(DWORD*)0x00B6F5F0;
            *(BYTE*)(dwStunAddr + 0x478) = 0;

            float fRate = 1.f;
            bAntiStunned = false;
        }
    }

Вот что я высрал:
    {
        if (materialCheckBox3->Checked)
        {
            DWORD dwStunAddr;
            WriteProcessMemory(hProcess, (LPVOID)0x00B6F5F0, &dwStunAddr, sizeof(dwStunAddr), 0);
            dwStunAddr = 4;
            WriteProcessMemory(hProcess, (LPVOID)(dwStunAddr + 0x478), &dwStunAddr, sizeof(dwStunAddr), nullptr);
            float fRate = 100.f;
        }

        else

        {
            DWORD dwStunAddr;
            WriteProcessMemory(hProcess, (LPVOID)0x00B6F5F0, &dwStunAddr, sizeof(dwStunAddr), 0);
            dwStunAddr = 0;
            WriteProcessMemory(hProcess, (LPVOID)(dwStunAddr + 0x478), &dwStunAddr, sizeof(dwStunAddr), nullptr);
            float fRate = 1.f;
        }
    }
@RTD
не хватает VirtualProtectEx
 

RTD

Потужно
Модератор
399
470
Сделал внешний Антситан, как ток включаю игра сразу закрывается. Ни крашей, ничего. Тупо закрывается. Это потому-что проверку не сделал?

Интернал сурс по корому делал:
if (bAntiStun)
    {
        if (!pSAMP->getPlayers())
            return;
        if (!bAntiStunned)
        {
            // but it doesn't work only for sniper
            DWORD dwStunAddr = *(DWORD*)0x00B6F5F0;
            *(BYTE*)(dwStunAddr + 0x478) = 4;
        }

        // for sniper stun
        float fRate = 100.f;
        bAntiStunned = true;
    }
    else
    {
        if (bAntiStunned)
        {
            DWORD dwStunAddr = *(DWORD*)0x00B6F5F0;
            *(BYTE*)(dwStunAddr + 0x478) = 0;

            float fRate = 1.f;
            bAntiStunned = false;
        }
    }

Вот что я высрал:
    {
        if (materialCheckBox3->Checked)
        {
            DWORD dwStunAddr;
            WriteProcessMemory(hProcess, (LPVOID)0x00B6F5F0, &dwStunAddr, sizeof(dwStunAddr), 0);
            dwStunAddr = 4;
            WriteProcessMemory(hProcess, (LPVOID)(dwStunAddr + 0x478), &dwStunAddr, sizeof(dwStunAddr), nullptr);
            float fRate = 100.f;
        }

        else

        {
            DWORD dwStunAddr;
            WriteProcessMemory(hProcess, (LPVOID)0x00B6F5F0, &dwStunAddr, sizeof(dwStunAddr), 0);
            dwStunAddr = 0;
            WriteProcessMemory(hProcess, (LPVOID)(dwStunAddr + 0x478), &dwStunAddr, sizeof(dwStunAddr), nullptr);
            float fRate = 1.f;
        }
    }
@RTD

C++:
DWORD dwStunAddr;
BYTE data = materialCheckBox3->Checked ? 4 : 0;
float fRate = materialCheckBox3->Checked ? 100.f : 1.f;
ReadProcessMemory(hProcess, (LPVOID)0xB6F5F0, &dwStunAddr, sizeof(dwStunAddr), nullptr);

LPVOID writeAddr = (LPVOID)(dwStunAddr + 0x478);

DWORD oldProt;
VirtualProtectEx(hProcess, writeAddr, sizeof(data), PAGE_READWRITE, &oldProt);
WriteProcessMemory(hProcess, writeAddr, &data, sizeof(data), nullptr);
VirtualProtectEx(hProcess, writeAddr, sizeof(data), oldProt, &oldProt);
 
  • Нравится
Реакции: manukhov

manukhov

Известный
125
131
C++:
DWORD dwStunAddr;
BYTE data = materialCheckBox3->Checked ? 4 : 0;
float fRate = materialCheckBox3->Checked ? 100.f : 1.f;
ReadProcessMemory(hProcess, (LPVOID)0xB6F5F0, &dwStunAddr, sizeof(dwStunAddr), nullptr);

LPVOID writeAddr = (LPVOID)(dwStunAddr + 0x478);

DWORD oldProt;
VirtualProtectEx(hProcess, writeAddr, sizeof(data), PAGE_READWRITE, &oldProt);
WriteProcessMemory(hProcess, writeAddr, &data, sizeof(data), nullptr);
VirtualProtectEx(hProcess, writeAddr, sizeof(data), oldProt, &oldProt);
жесть ты крут
 

SrMilton

Новичок
1
0
Yo guys. I'm having a problem trying to create a second dialog (after the first one closes). The first dialog appears normally, and when a response it, the second dialog never appears. What should i do ? I had already searched a lot and no answers :(

Код:
void click()
{
    SF->getSAMP()->getDialog()->ShowDialog(DIALOG_CRIARCONFIG, DIALOG_STYLE_INPUT, "Criar", "Nome da nova configuração:", "Criar", "Cancelar");//Working
}

void CALLBACK OnDialogResponse(int dialogId, int buttonId, int listItem, const char* input)
{
    switch (dialogId)
    {
    case DIALOG_CRIARCONFIG:
        {
            if (buttonId == 1)
            {
                SF->getSAMP()->getDialog()->ShowDialog(DIALOG_AVISO, DIALOG_STYLE_MSGBOX, "Criado", "O Arquivo foi criado!", "Ok", "");//Not Working
                SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "O Arquivo foi criado!");
            } 
         }
      }
}

The first one closes after i response it, and the second never shows. I had already tried Close(0);
 

_=Gigant=_

Известный
144
221
how to loop through all images in folder without causing program to bug like hell ?
I have this

static float image_width = 100.0f;
static float image_height = 100.0f;
for(const auto & crap: std::experimental::filesystem::directory_iterator(Example\\Images\\))
{
IDirect3DTexture9* crap_texture;
D3DXCreateTextureFromFileA(g_pd3dDevice, crap.path().string().c_str(), &crap_texture);
ImGui::Image(crap_texture, ImVec2(image_width, image_height));
}

when i compile this it displays images from specified folder but ram memory usage starts to increase like crazy and program is under 5 fps = unusable
 

leak.

Известный
37
4
привет кто может помочь пожалуйста. почему игра крашит при запуске моево чуда плагина?
код:
#include <Windows.h>
#include <process.h>

void WriteMemory(void* address, void* bytes, int byteSize)
{
    DWORD NewProtection;
    VirtualProtect(address, byteSize, PAGE_EXECUTE_READWRITE, &NewProtection);
    memcpy(address, bytes, byteSize);
    VirtualProtect(address, byteSize, NewProtection, &NewProtection);
}

void __cdecl MainThread(void* pArg)
{
    DWORD dwStunAddr = *(DWORD*)0x00B6F5F0;
    LPVOID writeAddr = (LPVOID)(dwStunAddr + 0x478);
    BYTE data = 4;

    WriteMemory(writeAddr, &data, sizeof(data));
}

BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID lpvReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH) _beginthread(MainThread, NULL, nullptr);
    return TRUE;
}


C++:
в начало потока
while (1)
{
    if (*(DWORD*)0xB6F5F0)
        break;
    Sleep(1);
}
 
  • Нравится
Реакции: Deleted member 240777

barspinoff

Известный
126
33
@barspinoff вот здесь нужен VirtualProtectEx? Смещений вроде нет.
сурс:
    if (c_norecoil)
    {
        everything();
        int wID;
        wID = *(BYTE*)0xBAA410;
        DWORD norecoilAddr = 0xB7CDC8;
        DWORD norecoil = 1;
        if (wID == 24 && deaglepoor24 || wID == 31 && m4poor24 || wID == 30 && akpoor24 || wID == 27 && combatpoor24 || wID == 33 && riflepoor24 || wID == 29 && mp5poor24)
        {
            if (m4poor24)
            {

                ReadProcessMemory(handle, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(handle, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (deaglepoor24)
            {

                ReadProcessMemory(handle, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(handle, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (akpoor24)
            {

                ReadProcessMemory(handle, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(handle, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (combatpoor24)
            {

                ReadProcessMemory(handle, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(handle, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (riflepoor24)
            {

                ReadProcessMemory(handle, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(handle, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (mp5poor24)
            {

                ReadProcessMemory(handle, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(handle, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
        }
    }

моё:
        int wID;
        ReadProcessMemory(hProcess, (LPVOID)0xBAA410, &wID, sizeof(wID), nullptr);
        DWORD norecoilAddr;
        ReadProcessMemory(hProcess, (LPVOID)0xB7CDC8, &norecoilAddr, sizeof(norecoilAddr), nullptr);
        DWORD norecoil = 1;

            if (wID == 24)
            {

                ReadProcessMemory(hProcess, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(hProcess, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (wID == 31)
            {

                ReadProcessMemory(hProcess, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(hProcess, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (wID == 30)
            {

                ReadProcessMemory(hProcess, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(hProcess, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (wID == 27)
            {

                ReadProcessMemory(hProcess, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(hProcess, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (wID == 33)
            {

                ReadProcessMemory(hProcess, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(hProcess, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
            if (wID == 29)
            {

                ReadProcessMemory(hProcess, (LPCVOID)norecoilAddr, &norecoil, sizeof(norecoil), 0);

                norecoil = 1;
                DWORD valuetherm = 1.074754357;
                WriteProcessMemory(hProcess, (LPVOID)norecoilAddr, &valuetherm, sizeof(valuetherm), 0);
                Sleep(10);
            }
        }
    }
@RTD Сделал с VP для пур аимбота по твоим примерам, чекни пожалуйста.

Poor Aimbot:
        int wID;
        DWORD pActor, pPed, pMtrx1, pMtrx2;
        float playerHP;
        ReadProcessMemory(hProcess, (LPVOID)0xBAA410, &wID, sizeof(wID), nullptr);

        ReadProcessMemory(hProcess, (LPVOID)0xB6F5F0, &pActor, sizeof(pActor), nullptr);

        LPVOID pPedM = (LPVOID)(pActor + 0x79C);
        LPVOID Mtrx1 = (LPVOID)(pActor + 0x14);
        LPVOID Mtrx2 = (LPVOID)(pPed + 0x14);
        LPVOID playerHP1 = (LPVOID)(pPed + 0x540);

        if (wID == 24)
        {
            if (pPed > 0)
            {

                if (playerHP > 0.0f)

                {

                    float x, y, z, x1, y1, z1, RotAngle, Xwiping, Ywiping, Zwiping;

                    LPVOID xx = (LPVOID)(pMtrx1 + 0x30);
                    LPVOID yy = (LPVOID)(pMtrx1 + 0x34);
                    LPVOID zz = (LPVOID)(pMtrx1 + 0x38);

                    LPVOID x11 = (LPVOID)(pMtrx2 + 0x30);
                    LPVOID y11 = (LPVOID)(pMtrx2 + 0x34);
                    LPVOID z11 = (LPVOID)(pMtrx2 + 0x38);

                    LPVOID RotAngle1 = (LPVOID)(pActor + 0x558);



                    x1 = (float)x + 2 * (float)cos(RotAngle + 1.48353F);
                    y1 = (float)y + 2 * (float)sin(RotAngle + 1.48353F);
                    z1 = (float)z + 0.5F;

                    x1 = (float)Xwiping;
                    y1 = (float)Ywiping;
                    z1 = (float)Zwiping;

                    DWORD oldProt;
                    VirtualProtectEx(hProcess, pPedM, sizeof(pPedM), PAGE_EXECUTE_READWRITE, &oldProt); // pPed
                    WriteProcessMemory(hProcess, pPedM, &pPed, sizeof(pPedM), 0);
                    VirtualProtectEx(hProcess, pPedM, sizeof(pPedM), oldProt, NULL);

                    VirtualProtectEx(hProcess, Mtrx1, sizeof(Mtrx1), PAGE_EXECUTE_READWRITE, &oldProt); // pMtrx1
                    WriteProcessMemory(hProcess, Mtrx1, &Mtrx1, sizeof(Mtrx1), 0);
                    VirtualProtectEx(hProcess, Mtrx1, sizeof(Mtrx1), oldProt, NULL);

                    VirtualProtectEx(hProcess, Mtrx2, sizeof(Mtrx2), PAGE_EXECUTE_READWRITE, &oldProt); // pMtrx2
                    WriteProcessMemory(hProcess, Mtrx2, &Mtrx2, sizeof(Mtrx2), 0);
                    VirtualProtectEx(hProcess, Mtrx2, sizeof(Mtrx2), oldProt, NULL);

                    VirtualProtectEx(hProcess, playerHP1, sizeof(playerHP1), PAGE_EXECUTE_READWRITE, &oldProt); // playerHP
                    WriteProcessMemory(hProcess, playerHP1, &playerHP1, sizeof(playerHP1), 0);
                    VirtualProtectEx(hProcess, playerHP1, sizeof(playerHP1), oldProt, NULL);




                    VirtualProtectEx(hProcess, xx, sizeof(xx), PAGE_EXECUTE_READWRITE, &oldProt); // x
                    WriteProcessMemory(hProcess, xx, &xx, sizeof(xx), 0);
                    VirtualProtectEx(hProcess, xx, sizeof(xx), oldProt, NULL);

                    VirtualProtectEx(hProcess, yy, sizeof(yy), PAGE_EXECUTE_READWRITE, &oldProt); // y
                    WriteProcessMemory(hProcess, yy, &yy, sizeof(yy), 0);
                    VirtualProtectEx(hProcess, yy, sizeof(yy), oldProt, NULL);

                    VirtualProtectEx(hProcess, zz, sizeof(zz), PAGE_EXECUTE_READWRITE, &oldProt); // z
                    WriteProcessMemory(hProcess, zz, &zz, sizeof(zz), 0);
                    VirtualProtectEx(hProcess, zz, sizeof(zz), oldProt, NULL);



                    VirtualProtectEx(hProcess, x11, sizeof(x11), PAGE_EXECUTE_READWRITE, &oldProt); // x1
                    WriteProcessMemory(hProcess, x11, &x11, sizeof(x11), 0);
                    VirtualProtectEx(hProcess, x11, sizeof(x11), oldProt, NULL);

                    VirtualProtectEx(hProcess, y11, sizeof(y11), PAGE_EXECUTE_READWRITE, &oldProt); // y1
                    WriteProcessMemory(hProcess, y11, &y11, sizeof(y11), 0);
                    VirtualProtectEx(hProcess, y11, sizeof(y11), oldProt, NULL);

                    VirtualProtectEx(hProcess, z11, sizeof(z11), PAGE_EXECUTE_READWRITE, &oldProt); // z1
                    WriteProcessMemory(hProcess, z11, &z11, sizeof(z11), 0);
                    VirtualProtectEx(hProcess, z11, sizeof(z11), oldProt, NULL);


                    VirtualProtectEx(hProcess, RotAngle1, sizeof(RotAngle1), PAGE_EXECUTE_READWRITE, &oldProt); // RotAngle
                    WriteProcessMemory(hProcess, RotAngle1, &RotAngle1, sizeof(RotAngle1), 0);
                    VirtualProtectEx(hProcess, RotAngle1, sizeof(RotAngle1), oldProt, NULL);

                }
            }
        }
    }
    }
VirtualProtectEx нужен везде где ты собираешься читать или писать в чужом процессе, т.е. перед любым вызовом Read/WriteProcessMemory
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
Сделал внешний CoordMaster для CRMP. Причина этому - отсутствие клео, сампфункса. Сделал чисто для практики. Чтобы не получать урон от падения, сделал отдельный поток на "Заморозку" Z и "Заморозку" Состояния игрока( CPed +0x46C = [dword] Проверка игрока: 3 - Пешком)
Все работает хорошо, до тех пор, пока по факту анимация должна быть другая. Т.е. когда я стою на земле, состояние 3, но когда я в воздухе, и я программно меняю 0 на 3, игра зависает(Нельзя двигать камерой) и почти не воспринимает нажатия(Серверные вызовы по прежнему работают(к примеру инвентарь на I открывается). Если ничего не поняли, то вот видео:
Код:
Функция Freeze:
int state = 3;
    cout << "entering thread" << endl;
    while (freezeState)
    {
        WriteProcessMemory(processHandle, (LPVOID)(cPed + 0x46C), &state, 1, NULL);
        WriteProcessMemory(processHandle, (LPVOID)(point + 0x38), &z, 4, NULL);
        Sleep(1);
    }
    cout << "exiting thread" << endl;

Сам CoordMaster:
float stepX = (x > endPosX) ? -20.0 : 20.0;
float stepY = (y > endPosY) ? -20.0 : 20.0;
Sleep(7000);
bool freezeState = true;
thread freezer(freezeZ, ref(freezeState), processHandle, point, cPed, ref(z));
freezer.detach();

while ((x != endPosX) || (y != endPosY))
{
    x += (endPosX < 0) ? max(stepX, endPosX - x) : min(stepX, endPosX - x);
    y += (endPosY < 0) ? max(stepY, endPosY - y) : min(stepY, endPosY - y);
    WriteProcessMemory(processHandle, (LPVOID)(point + 0x30), &x, 4, NULL);
    WriteProcessMemory(processHandle, (LPVOID)(point + 0x34), &y, 4, NULL);
    Sleep(1500);
}

freezeState = false;

Кстати как я понял, этот "Фриз" не помогает от урона. После приземления урон я получил. Может еще найдется тот кто сможет мне помочь и в этом :D
 

RTD

Потужно
Модератор
399
470
я программно меняю 0 на 3, игра зависает(Нельзя двигать камерой) и почти не воспринимает нажатия(Серверные вызовы по прежнему работают(к примеру инвентарь на I открывается)
Это вроде встроенный античит так делает, патчи его, как делает собейт
https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/samp.cpp#L941