Реальный ответ может быть очень длинным, поэтому вот несколько коротких советов для вас.
Во-первых, вам нужны некоторые общесистемные хуки для этих функций и их низкоуровневые строительные блоки (Zw ..., Nt ... и даже системный вызов). Это должно быть сделано драйвером ядра.
Во-вторых, вам нужен способ установить этот драйвер и удалить его по своему желанию. Это может быть сделано службой.
В-третьих, вам нужен способ связи между драйвером ядра и игрой. На этапе инициализации игра установит драйвер и сообщит ему, какой идентификатор процесса запущена в игре. Затем драйвер заблокирует весь доступ к этому конкретному процессу из других процессов.
В-четвертых, вам нужно вести белый список. Такие приложения, как антивирус, должны заглядывать в вашу игру. Ваш драйвер ядра должен позволить пройти эти экзамены. Вот где nProtect и аналогичные технологии дают сбой. Они просто конфликтуют с другими программами.
В-пятых, возможно, пришло время подумать о других способах защиты вашей игры. Стоит прочитать статью Дэвида Ауксита «Защита от несанкционированного доступа: реализация».