Включите столько оптимизации, сколько сможете, не вызывая сбой вашей программы, это сделает получаемые двоичные файлы НАМНОГО сложнее для обратного инжиниринга. Вы можете получить рандомизацию макета адресного пространства с помощью опции компоновщика. В противном случае существуют очевидные вещи, такие как создание версии выпуска вместо версии отладки. С 2003 года Visual Studio поставляется с Dotfuscator, который хорошо защищает программы .NET. В дополнение к комментарию Abyx, некоторые средства защиты, такие как Software Passport и Oreans, позволяют вставлять элементы защиты от несанкционированного доступа в процессе компиляции, что гораздо эффективнее, чем просто применять упаковщик к скомпилированному двоичному файлу.