Защита кода позволяет автоматически убрать его часть из защищенного приложения и обращаться к нему только по требованию в момент выполнения. Любое обращение к защищенному хранилищу кода инициирует сначала проверку наличия электронного ключа, и лишь при его соответствии тому, на котором была произведена защита приложения, производится дальнейшее расшифровывание защищенного кода.
Код каждого метода из защищенного приложения имеет свою уникальную и независимую от других участков кода привязку к электронному ключу. Такой подход существенно затрудняет обратный анализ и реализует уникальную последовательность обращений, опирающуюся на граф потока выполнения защищаемого приложения.
Защищенный исполняемый файл остается Managed-сборкой, но большая часть его кода переносится в Native-DLL специального вида, которая представляет собой защищенное хранилище кода:
При защите динамических DLL-библиотек для платформы .NET использован аналогичный подход, что и при защите исполняемых файлов, но с учетом специфики использования библиотечного кода. В процессе защиты из оригинальной DLL-библиотеки удаляется MSIL-код, и на его место вставляются вызовы специальных методов-заглушек. Т. о., после защиты от оригинальной DLL-библиотеки остается только код с вызовом методов-заглушек. Данный подход к защите позволяет сохранить работоспособность принципов взаимодействия с защищенной библиотекой: на нее по-прежнему можно добавлять ссылки (references) из других .NET сборок, и она по-прежнему имеет статус Managed-сборки. После защиты DLL сборки нет необходимости вносить какие-либо изменения в код, который уже использует защищенную библиотеку, так как методы-заглушки возьмут на себя всю работу по перенаправлению вызовов к защищенному хранилищу кода.