Почему я продолжаю получать BSOD, или процесс CSGO перестает отвечать, когда я запускаю свечение

CSGO — это шутер от Valve. Я пытаюсь взломать игру, чтобы получить несправедливое преимущество.
Взлом свечения заставляет игрока за стеной светиться, чтобы можно было видеть, где находятся все игроки на карте.

Код сбоя BSOD: «MEMORY_MANAGEMENT»

Это происходит в случайное время. Если мне повезет, только мой процесс CSGO падает, но иногда я получаю BSOD.

Вот мой фрагмент кода:

void Glow::Run()
{
ReadInfo();

for (int i = 0; i < 200; i++) // current glowcount and max glowcount have been removed? thats why i just put 200
{
ReadEntity(i);
GlowEntitys(i);
}
}

void Glow::ReadInfo(){

ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + O.m_dwLocalPlayer), &LocalPlayer, sizeof(int), NULL); // Gets LocalPlayer
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + O.m_dwGlowObject), &GlowObject, sizeof(int), NULL); // Gets GlowObject
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(LocalPlayer + O.m_iTeamNum), &LocalTeam, sizeof(int), NULL);} // Gets My team from LocalPlayer

void Glow::ReadEntity(int Entnum){ // Reads our Entity information

ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(GlowObject + 0x38 * Entnum), &Entity, sizeof(int), NULL); // First Adress in Glowobject is the Pointer to the entity its glowing.

ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(Entity + 0x8), &ClassID, sizeof(int), NULL); // Multilevel Pointer Reading ClassID
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(ClassID + 0x8), &ClassID, sizeof(int), NULL);
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(ClassID + 0x1), &ClassID, sizeof(int), NULL);
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(ClassID + 0x14), &ClassID, sizeof(int), NULL);

ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(Entity + O.m_iTeamNum), &TeamNum, sizeof(int), NULL);// Getting the entitys Team Number
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(Entity + O.m_iHealth), &Health, sizeof(int), NULL); } // Getting the entitys Team Number

void Glow::GlowEntity(int Entnum){ // Glows our entity
if (Entity && LocalPlayer)
WriteProcessMemory(fProcess.__HandleProcess, (PBYTE*)(GlowObject + 0x38 * Entnum + 0x4), &EntGlow, sizeof(EntGlow), NULL);} // Writes a struct with WPM

Что может быть причиной такой коррупции, приводящей к BSOD?

-8

Решение

Ваш фрагмент выполняет набор операций чтения, а затем несколько операций записи в память процесса. Маловероятно, что чтения вызывают проблемы (хотя это не полностью исключено). Скорее всего это пишет в WriteProcessMemory это вызывает коррупцию. Я предполагаю, что расположение памяти процесса жертвы не задокументировано, поэтому весьма вероятно, что некоторые записи не соответствуют своему назначению и вместо этого перезаписывают что-то важное.

Однако BSOD крайне маловероятен, если вы запускаете этот код в контексте приложения, даже с правами администратора. Вы запускаете его как драйвер ядра? Если это так, то вам нужно дважды (еще лучше, трижды) проверить, что вы связались с правильным дескриптором процесса и что вы не перезаписываете системные ресурсы, такие как часть таблицы подкачки. Настоятельно рекомендуется подключенный отладчик и навыки его использования.

В общем, нужно больше контекста: как вы запускаете этот фрагмент, где вы его взяли и что заставляет вас думать, что он должен работать в первую очередь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]