Нет абсолютно никакого способа проверить, что исполняемый файл на другом конце соединения является тем, который вы написали.Если вы шифруете ключ ключом, где вы храните второй ключ?Если вы, Диффи-Хеллман, получили от сервера секретный ключ, где вы храните этот ключ?(подсказка: в памяти, откуда его можно сбросить, затем прочитать).Это рекурсивная проблема, которую вы никогда не сможете решить.
Я читал, что серверы AOL Instant Messenger периодически запрашивают у клиента AIM хэш определенных адресов кода (т. Е. Вычисляют SHA1 (address1 -> address2))и затем отключите клиент, если хэш был неправильным.Это произошло потому, что незаконно перераспределять исполняемый файл (и невозможно создать таблицу хэша между каждыми двумя интервалами), так что это всего лишь юридическая, а не техническая задача.
Если вам нужно программное обеспечение, котороедействительно изо всех сил пытается победить реверс-инжиниринг (и на самом деле делает хорошую работу), попробуйте подключить отладчик к Skype: -)