R0 CREW

Запрещаем ILDASM дизассемблировать ваш код

Оригинал: blogs.msdn.com

MSIL Disassembler (ildasm.exe) – это инструмент, который может быть использован для просмотра MSIL-кода .NET приложений или DLL-библиотек. Многие из вас наверняка использовали его, чтобы заглянуть в ассемблерный код приложений при отладке или устранении каких-либо неисправностей.

Я часто использую его, чтобы проверить некоторые вещи во время отладки. Однажды, когда я попытался дизассемблировать один из модулей, я получил следующее сообщение об ошибке Protected module – cannot dissasemble.

После небольшого изучения данной проблемы я обнаружил, что в .NET 2.0 появился новый атрибут, который запрещает MSIL Disassembler дизассемблировать ваш модуль. Для этого нужно использовать атрибут SuppressIldasmAttribute, который доступен в пространстве имен System.Runtime.CompilerServices. На рисунке ниже показано, как использовать этот атрибут. Я просто указал SuppressIldasmAttribute для своего пространства имен (namespace).

Если вы скомпилируете указанный выше код и попытаетесь его открыть для дизассемблирования с помощью ildasm.exe, вы получите сообщение об ошибке Protected module – cannot disassemble.

При использовании данного атрибута стоит помнить, что он предотвращает работу только ildasm.exe, т.е. вы всё еще можете использовать, например, Reflector для декомпиляции кода. Ниже показан результат работы Reflector, который был применен к тому же защищенному модулю.

© Translated by Prosper-H from r0 Crew