Обфускация приложений, созданных с помощью Dotfuscator

Страница обновлена :
Дата создания страницы :

сводка

Поскольку приложения на основе .NET Framework создаются на так называемом общем промежуточном языке, их можно читать в форме, близкой к исходному исходному коду, с помощью средств дизассемблирования и т.п. В этом разделе описывается, как обфускатор Dotfuscator, обфускатор, поставляемый с Visual Studio, запутывать имена классов и методов в формате, который нелегко читается.

Мы говорим об этом здесь с помощью Visual Studio 2010, но вы также можете использовать Dotfuscator в 2005 и 2008 годах.

Dotfuscator を使用して作成したアプリケーションを難読化する

Операционная среда

Поддерживаемые версии Visual Studio

  • 2005
  • 2008
  • 2010

Проверить версию Visual Studio

  • 2005
  • 2008
  • 2010

вещество

О Дотфускаторе

Dotfuscator — это средство обфускации, которое затрудняет чтение исходного кода при дизассемблировании в приложениях, написанных с помощью .NET Framework. Dotfuscator поставляется с Visual Studio бесплатно и за отдельную плату.

Бесплатная версия недоступна, если многие из ее функций не ограничены или Visual Studio не запущена, но любой может использовать ее, если у них установлена Visual Studio. Платная версия имеет много мощных функций обфускации, которые не встречаются в бесплатной версии, но она предлагается по цене, которую трудно себе позволить широкой публике.

Dotfuscator имеет различные функции, цены и версии в зависимости от версии, поэтому, пожалуйста, обратитесь к следующей домашней странице для получения подробной информации.

Процедура обфускации

難読化していないアプリケーションの逆アセンブル結果

Я упоминал ранее, что приложения, созданные с помощью .NET Framework, могут разбирать и легко читать исходный код, но фактическая ситуация такова, что если вы дизассемблируете exe-файл, как показано на рисунке справа, вы можете почти воспроизвести исходный код, такой как пространство имен, имя класса, имя метода и т. Д.

Описывает шаги, направленные на то, чтобы сделать эти имена запутанными и запутанными.

Dotfuscator Software Services

Создание приложения в Visual Studio и создание исполняемого файла в точности совпадает с обычным способом его создания.

После построения и создания исполняемого файла выберите в меню Visual Studio пункт Сервис, а затем — Программные службы Dotfuscator.

使用許諾契約書

При первом запуске отображается диалоговое окно «Лицензионное соглашение», как показано на рисунке справа, поэтому внимательно прочитайте содержимое, установите флажок «Да, я согласен с лицензионным соглашением» и нажмите кнопку «ОК».

Dotfuscator Software Services

Запуск программных служб Dotfuscator.

入力アセンブリの追加

Обфускируемый exe (или DLL-файл) не обязательно должен быть из открытого в данный момент проекта.

Выберите Входные сборки в дереве слева и щелкните Входные сборки справа, чтобы нажать кнопку ....

難読化する exe ファイル

Выберите исполняемый файл, который вы хотите запутать.

追加したアセンブリ

Выбранный 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 и других местах.

На этот раз я запутал проект по умолчанию, созданный как есть, поэтому я думаю, что есть образ, что он не так запутан, но я думаю, что эффект обфускации становится понятным, потому что количество классов и т. Д. Увеличивается по мере роста проекта.

Кроме того, хотя на этот раз мы включили процедуру в бесплатную версию, платная версия допускает более сложную запутывание, а также предотвращает саму разборку. Тем не менее, обфускация имеет различные неблагоприятные последствия и может произойти, поэтому при выполнении обфускации необходимо сделать это, рассматривая, будет ли оно работать должным образом с самого начала проектирования.