Обфускация приложений, созданных с помощью Dotfuscator
сводка
Поскольку приложения на основе .NET Framework создаются на так называемом общем промежуточном языке, их можно читать в форме, близкой к исходному исходному коду, с помощью средств дизассемблирования и т.п. В этом разделе описывается, как обфускатор Dotfuscator, обфускатор, поставляемый с Visual Studio, запутывать имена классов и методов в формате, который нелегко читается.
Мы говорим об этом здесь с помощью Visual Studio 2010, но вы также можете использовать Dotfuscator в 2005 и 2008 годах.
Операционная среда
Поддерживаемые версии Visual Studio
- 2005
- 2008
- 2010
Проверить версию Visual Studio
- 2005
- 2008
- 2010
вещество
О Дотфускаторе
Dotfuscator — это средство обфускации, которое затрудняет чтение исходного кода при дизассемблировании в приложениях, написанных с помощью .NET Framework. Dotfuscator поставляется с Visual Studio бесплатно и за отдельную плату.
Бесплатная версия недоступна, если многие из ее функций не ограничены или Visual Studio не запущена, но любой может использовать ее, если у них установлена Visual Studio. Платная версия имеет много мощных функций обфускации, которые не встречаются в бесплатной версии, но она предлагается по цене, которую трудно себе позволить широкой публике.
Dotfuscator имеет различные функции, цены и версии в зависимости от версии, поэтому, пожалуйста, обратитесь к следующей домашней странице для получения подробной информации.
Процедура обфускации
Я упоминал ранее, что приложения, созданные с помощью .NET Framework, могут разбирать и легко читать исходный код, но фактическая ситуация такова, что если вы дизассемблируете exe-файл, как показано на рисунке справа, вы можете почти воспроизвести исходный код, такой как пространство имен, имя класса, имя метода и т. Д.
Описывает шаги, направленные на то, чтобы сделать эти имена запутанными и запутанными.
Создание приложения в Visual Studio и создание исполняемого файла в точности совпадает с обычным способом его создания.
После построения и создания исполняемого файла выберите в меню Visual Studio пункт Сервис, а затем — Программные службы Dotfuscator.
При первом запуске отображается диалоговое окно «Лицензионное соглашение», как показано на рисунке справа, поэтому внимательно прочитайте содержимое, установите флажок «Да, я согласен с лицензионным соглашением» и нажмите кнопку «ОК».
Запуск программных служб Dotfuscator.
Обфускируемый exe (или DLL-файл) не обязательно должен быть из открытого в данный момент проекта.
Выберите Входные сборки в дереве слева и щелкните Входные сборки справа, чтобы нажать кнопку ....
Выберите исполняемый файл, который вы хотите запутать.
Выбранный exe-файл будет добавлен в список. Если вы хотите запутать несколько файлов, нажмите кнопку «...» после второй строки, чтобы добавить их.
Выбрав исполняемый файл, который требуется запутать, нажмите кнопку Построить проект на панели инструментов.
Если в проекте есть какие-либо изменения, отображается диалоговое окно подтверждения сохранения проекта, поэтому нажмите «Да», чтобы сохранить.
Проект называется". xml". Обфускированный exe-файл также будет сохранен в том же расположении, поэтому сохраните .xml файл в любую папку.
Сборка начнется и подождет, пока она не будет завершена. Обратите внимание, что чем больше программа, тем больше времени занимает ее сборка. Если он выглядит как рисунок справа, сборка завершена.
В поле сообщения отображаются простые результаты, такие как ход сборки и то, насколько она запутана.
Если выбрать «Результат» в дереве слева, можно увидеть сведения об изменении имен классов и методов.
Под именами классов и методов находится значок Dotfuscator и имя, такое как «a» или «b», которое является запутанным именем. Изменив имя класса или метода на бессмысленное имя, подобное этому, можно затруднить чтение содержимого исходного кода, даже если он разбирается.
Обфускированные exe-файлы создаются в папке .xml файлов, сохраненных в Save Project, под названием "Dotfuscated", и создаются в ней. В дополнение к exe-файлу был создан файл "Map .xml", но это результат обфускации и не должно использоваться.
Обфускированные исполняемые файлы можно запускать и использовать как есть. Однако бывают случаи, когда его не удается запустить из-за неизвестной ошибки, как показано на рисунке справа.
На этот раз я написал приложение в WPF, но поскольку XAML-файл первого отображаемого окна указан в виде строки, переименование из-за обфускации приведет к потере ссылки, что приведет к ошибке.
Приложения Windows Form напрямую ссылаются на класс From, поэтому они могут выполняться без ошибок, даже если они запутаны. Однако, если вы указываете имя класса, тип перечисления и т. Д. По имени, вам нужно быть осторожным, потому что существует вероятность того, что произойдет та же ошибка.
Если вы не хотите запутывать класс или что-то в этом роде, выберите Переименовать в дереве в левой части Dotfuscator и выберите Исключить на средней вкладке.
Каждое пространство имен, имя класса и т. д. будут отображаться в списке справа, поэтому проверьте элементы, которые вы не хотите запутывать.
Здесь я не хочу изменять имя класса окна, которое будет отображаться первым, поэтому я проверяю «MainWindow».
При выполнении сборки можно увидеть, что имя класса в MainWindows не изменилось. (Класс приложения преобразован в "a")
При запуске обфускированного exe-файла можно увидеть, что окно отображается правильно.
Если разобрать обфускированный exe-файл, можно увидеть, что имя класса и имя метода были правильно изменены на "a" или "b".
Но в сторону. NET Framework, такие как имена классов, не подлежат переименованию, поскольку они являются сборками, которые уже установлены в Windows и других местах.
На этот раз я запутал проект по умолчанию, созданный как есть, поэтому я думаю, что есть образ, что он не так запутан, но я думаю, что эффект обфускации становится понятным, потому что количество классов и т. Д. Увеличивается по мере роста проекта.
Кроме того, хотя на этот раз мы включили процедуру в бесплатную версию, платная версия допускает более сложную запутывание, а также предотвращает саму разборку. Тем не менее, обфускация имеет различные неблагоприятные последствия и может произойти, поэтому при выполнении обфускации необходимо сделать это, рассматривая, будет ли оно работать должным образом с самого начала проектирования.