Это вопрос из разряда "Как защитить программу, чтобы её нельзя было сломать?" Ответ простой: никак.
Всё, что вы можете — это усложнить работу хакера:
- традиционная защита бинарников (если код нативный, а для C++ это так, то это важный элемент; если компиляция JIT, то защита бесполезна — только от школьников спасёт);
- хитро запрятанные цифровые подписи для запросов (как минимум, не кладите ключ в открытом виде);
- продвинутая валидация на стороне сервера (насколько полученные значения правдоподобные, можно отправлять историю операций и т.п.);
- регулярные обновления клиента и сервера (никому не в радость ломать программу каждый раз);
- слежение за отладкой (запущен ли процесс под отладчиком, присутствуют ли подозрительные процессы);
- и так далее.
Цель — сделать взлом невыгодным. Однако если за вашу программу возьмётся кто-то принципиальный (или идейный, или за весьма хорошие деньги), то он сломает что угодно.
Чтобы отвадить от вашей программы кулхацкеров, хватит защиты бинарников и цифровой подписи у запросов. А дальше уже смотрите, насколько вам выгодно защищаться.