Это можно сделать, внедрив поток в удаленный процесс:
HMODULE hKernel32 = GetModuleHandle("kernel32");
// Procedures in kernel32.dll are loaded at the same address in all processes
// so find the address in our own process, then use it in the target process
FARPROC pSetProcessDEPPolicy = GetProcAddress(hKernel32, "SetProcessDEPPolicy");
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pSetProcessDEPPolicy, 0 /* disable DEP */, 0, NULL);
if (hThread == NULL) {
// handle/report error
}
WaitForSingleObject(hThread);
CloseHandle(hThread);
Однако обычно это плохая идея;есть временное окно между тем, когда начинается процесс, и когда вы выполняете внедрение потока, во время которого включен DEP, и функция анти-чит или DRM может рассматривать внедрение потока как попытку взломать программу.Гораздо надежнее просто установить список исключений DEP и получить тот же эффект.