Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

C++ Краш с ошибкой Privileged instruction

  • Автор темы Автор темы f1nk175
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Май 2023
Сообщения
366
Реакции
10
первый раз сталкиваюсь, и инжектор менял, и функцию main переделывал, все бестолку
крашит раст с ошибкой 3221225622 (0xc0000096) 'Privileged instruction'
мб настройки проекта корявые?
dllmain:
Expand Collapse Copy
#include "main.h"

int __stdcall DllMain(void* hHandle, unsigned long dwReason, void* lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) {
        DESTROY_BEGIN

#ifdef DEBUG
        AllocConsole();
        freopen("CONOUT$", "w", stdout);
#endif
        injectionTime = time(NULL);
        CheatBase = (uint64_t)hHandle;
        UnityPlayer = (ULONG64)GetModuleHandleA(SS("UnityPlayer.dll"));
        GameAssembly = (ULONG64)GetModuleHandleA(SS("GameAssembly.dll"));
        DebugPrint("GameAssembly: 0x%llX\n", GameAssembly);
        SetupDopamine();

        DESTROY_END
    }
    if (dwReason == DLL_PROCESS_DETACH) {
        RemoveCheat();
#ifdef DEBUG
        FreeConsole();
        fclose(stdout);
#endif
    }
    return 1;
}
 
первый раз сталкиваюсь, и инжектор менял, и функцию main переделывал, все бестолку
крашит раст с ошибкой 3221225622 (0xc0000096) 'Privileged instruction'
мб настройки проекта корявые?
dllmain:
Expand Collapse Copy
#include "main.h"

int __stdcall DllMain(void* hHandle, unsigned long dwReason, void* lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) {
        DESTROY_BEGIN

#ifdef DEBUG
        AllocConsole();
        freopen("CONOUT$", "w", stdout);
#endif
        injectionTime = time(NULL);
        CheatBase = (uint64_t)hHandle;
        UnityPlayer = (ULONG64)GetModuleHandleA(SS("UnityPlayer.dll"));
        GameAssembly = (ULONG64)GetModuleHandleA(SS("GameAssembly.dll"));
        DebugPrint("GameAssembly: 0x%llX\n", GameAssembly);
        SetupDopamine();

        DESTROY_END
    }
    if (dwReason == DLL_PROCESS_DETACH) {
        RemoveCheat();
#ifdef DEBUG
        FreeConsole();
        fclose(stdout);
#endif
    }
    return 1;
}
"Чтобы ответить на вопрос, привилегированная инструкция — это операционный код процессора (инструкция ассемблера), который может выполняться только в режиме «супервизора» (или Ring-0). Инструкции этого типа обычно используются для доступа к устройствам ввода-вывода и защищенным структурам данных из ядра Windows.
Обычные программы выполняются в «пользовательском режиме» (Ring-3), который не допускает прямого доступа к устройствам ввода-вывода и т. д.
Как уже упоминали другие, причиной, вероятно, является поврежденный стек или сбой вызова указателя функции." -
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Назад
Сверху Снизу