PatchEx или WriteProcessMemory

Masik00

Новичок
Сообщения
8
Реакции
2
В каких случаях лучше использовать NopEx и PatchEx, а когда WriteProcessMemory?

Снизу функция, делающая бесконечные патроны.

Код1:
C++:
void AmmoHack(Memory& mem, bool state)
{
    if (state == true)
    {
        mem.NopEx((BYTE*)(mem.moduleBase + 0xC73EF), 2);
    }
    else
    {
        mem.PatchEx((BYTE*)(mem.moduleBase + 0xC73EF), (BYTE*)"\xFF\x08", 2);
    }
}

Код2:
C++:
void AmmoHack(Memory& mem, bool state)
{
    uintptr_t ammoInClipAddr = mem.ReadMemoryChain(mem.moduleBase + offsets::localPlayer, {0x364, offsets::currentWeaponClass, offsets::gunClipAmmo});

    if (state == false)
    {
        originalValues::clipAmmo = mem.Read<short>(ammoInClipAddr);
    }
    else if (state == true)
    {
        mem.Write(ammoInClipAddr, originalValues::clipAmmo ? originalValues::clipAmmo : 1);
    }
}

C++:
template<class T>
T Read(uintptr_t address)
{
    T value{};
    ReadProcessMemory(hProcess, (LPCVOID)address, &value, sizeof(value), NULL);
    return value;
}

template<class T>
void Write(uintptr_t address, T value)
{
    WriteProcessMemory(hProcess, (LPVOID)address, &value, sizeof(value), NULL);
}

void Memory::PatchEx(BYTE* dst, BYTE* src, unsigned int size)
{
    DWORD oldprotect;
    VirtualProtectEx(hProcess, dst, size, PAGE_EXECUTE_READWRITE, &oldprotect);
    WriteProcessMemory(hProcess, dst, src, size, nullptr);
    VirtualProtectEx(hProcess, dst, size, oldprotect, &oldprotect);
}

void Memory::NopEx(BYTE* dst, unsigned int size)
{
    BYTE* nopArray = new BYTE[size];
    memset(nopArray, 0x90, size);

    PatchEx(dst, nopArray, size);
    delete[] nopArray;
}
 

Darwin

Команда форума
Администратор
Сообщения
1 005
Реакции
539
Так если ты посмотришь структуру Memory ты делаешь один и тот же процесс WPM и RPM
 
Верх Низ