У тебя чтение через OpenProcess и ReadProcessMemory? При желании их же может перехватить игра и использовать для определения.
 
	 
 
 
	Твоя программа при запуске создает второй поток, создает объект событие (с автосбросом), устанавливает SetWindowsHookExW на игру с флагом WH_KEYBOARD_LL (чтобы не было нужды в инжекте DLL).
 
	Либо вместо SetWindowsHookExW, для большей гарантии от бана, использует Raw Input и флаг RIDEV_INPUTSINK.
 
	Главный поток использует GetMessage, а не PeekMessage. Главный поток только активирует/деактивирует чит.
 
	При нажатии клавиши сброса бомбы, твоя программа проверяет что  бомбы еще есть, и если есть, устанавливает событие в signaled. Поток пробуждается от сна (этот сон не тратит процессорное время), и начинает в цикле считывать значение. Если бомбы закончились, поток сам прерывает цикл считывание и возвращается на объект событие. Если бомбы еще есть но была нажата клавиша S, то поток также сам прерывает цикл и возвращается на объект событие. Определять была ли нажата клавиша S можно через тот же зарегистрированный Raw Input или через GetAsyncKeyState.
 
	Такие мысли, чтобы уменьшить нагрузку на CPU.