Как реализовать защиту приложения по его «железу» и дальнейшей авторизацией на сервере?
Вы ведь новости читаете, крэк группы выкладывают свои труды регулярно для новинок ИГР, Софта.
.net и c/c++/asm откроют за пару часов при желании.
К железу привязываться - звонки с жалобами, HDD/CPU/Motherboard заменил и программа не запускается. Отломают быстрее чем напишите.
Всю важную проверку на сервер, клиент при желании сломает все.
Логин-пароль должно хватать, или думать что нить, но при росте популярности обойдут.
VM - vmware есть настройки, обнаружение VM сработает если вы сами его напишите или не слишком распространенный способ использовать будите.
Клиент не должен подключаться к партнеру на прямую, узнают через wireshark/netstat/... ip, и вас обойдут в этой цепи.
Данные шифровать через https, проблем не будет, firewall пропустит.
Флаги установки программы на ПК обходят быстро, снимают снимок состояния ПК, ставят ваше ПО, удаляют его, делают еще 1 снимок. Сравниваются 2 снимка, находят флаг присутствия установки программы. У MS такая утилита даже есть, название забыл.
Хочется защиты - используйте виртуальные машины (~VMProtec), квалификация средняя и выше нужна для их взлома.
Создавайте трехзвеньевую структуру, и реализуйте всю бизнес-логику у себя на сервере, клиент просто для просмотра. Как пример Diablo 3, все реализовано на сервере близардов, сама игра лишь рисует данные полученные от сервера, как итог, никто и не ломал, нет смысла.