Как использовать обфускацию для ClickOnce?

Если вы выпустите версию ClickOnce, как она может быть запутана Dotfuscator?

Ответ 1

Вы можете использовать коммерческую версию Dotfuscator для автоматического обфускации приложения ClickOnce, добавив манифест развертывания ( "foo.application" ) в качестве входа в проект Dotfuscator. Dotfuscator позволит вам добавлять любые необходимые исключения в сборки, содержащиеся в приложении ClickOnce, и будет создавать обновленные манифесты развертывания и приложения, содержащие обфусканные сборки.

В бесплатной версии Dotfuscator, включенной в Visual Studio (включая Visual Studio 2010), нет возможности автоматически обфускации приложений ClickOnce. Чтобы получить функционирующее запутанное приложение ClickOnce, вам нужно будет воссоздать или обновить манифесты ClickOnce, поскольку обфускация изменяет подписи сборок.

Вы можете использовать mage.exe или mageui.exe (входит в Windows/.NET SDK) для обновления манифестов ClickOnce. Если вы собираетесь использовать mage.exe, вам нужно знать, что вы не можете использовать опцию "Использовать расширение .deploy" в параметрах ClickOnce, поскольку он не распознает его.

Предполагая, что ваше приложение ClickOnce имеет имя "Foo" и находится в версии 1.0.0.0, процесс, который вам нужно выполнить, следующий:

  • Опубликуйте приложение ClickOnce в каталог на диске
  • Запустите Dotfuscator CE и добавьте сборки, которые вы хотите запутать из каталога bin вашего проекта.
  • Обфускация сборок. Обфусканные сборки будут помещены в подкаталог с именем "Dotfuscated" по умолчанию.
  • Сбросьте свои обфусканные сборки с помощью sn.exe(только если вы изначально сильно назвали их)
  • Скопируйте обфусканные сборки поверх них в каталоге публикации ClickOnce\Application Files\Foo_1_0_0_0
  • Обновите манифест приложения и отмените его:

    mage.exe -Update "Файлы приложений \Foo_1_0_0_0\Foo.exe.manifest" -CertFile "c:\Foo\foo.pfx" -Пароль-пароль

  • Обновите манифест развертывания и отмените его:

    mage.exe -Update Foo.application -AppManifest "Файлы приложений \Foo_1_0_0_0\Foo.exe.manifest" -CertFile "c:\Foo\foo.pfx" -Пароль-пароль

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

Ответ 2

У меня есть решение, подобное Джо Кемерле, но до процесса публикации. Это работает с публикацией в Visual Studio и MSBuild команда линия.

Добавьте BeforePublish в файл проекта.

<ItemGroup>
    <ClickOnceFiles Include="bin\Release\ClickOnce.*"/>
</ItemGroup>
<Target Name="BeforePublish">
    <Exec Command="{path to dotfuscator}\dotfuscator.exe Dotfuscator.xml" />
    <Exec Command="mage.exe -u bin\Release\ClickOnce.exe.manifest" />
    <Exec Command="mage.exe -u bin\Release\ClickOnce.application -AppManifest bin\Release\ClickOnce.exe.manifest" />
    <Copy SourceFiles="@(ClickOnceFiles)" DestinationFolder="obj\Release" OverwriteReadOnlyFiles="True" />
</Target>

Файлы ClickOnce: ClickOnce.application, ClickOnce.exe и ClickOnce.exe.manifest. Мой dotfuscator.xml находится в той же папке с файлом проекта. Ключ - последняя команда, скопируйте файлы ClickOnce в папку obj.

Ответ 3

Да, это совместимые технологии. ClickOnce просто фокусируется на развертывании приложения и связанных с ним двоичных файлов на целевой машине. Dotfuscator отключает файлы DLL и EXE. Они будут работать вместе, пока вы запускаете Dotfuscator перед публикацией приложения.

Ответ 4

Я не знаю, возможно ли это только в более поздних версиях Visual Studio, но для меня это отлично работает:

  • Сборка исполняемого файла в режиме выпуска
  • Запустите exe-модификатор по вашему выбору и измените файл в obj/Release/<filename> .exe(уведомление: not bin/, но obj/).
  • Нажмите кнопку "Опубликовать сейчас" в Visual Studio, которая предполагает, что последняя сборка была актуальной.
  • Прибыль: D

Ответ 5

Если вы используете VS2010, Dotfuscator, который поставляется с ним, будет запутывать файлы, а затем повторно подписать манифесты для вас. [Изменить - это не так, если вы не покупаете полную версию; он работает так же, как VS2008.]

Если вы используете VS2008, вам нужно будет опубликовать, затем обфускать файлы, а затем повторно подписать манифесты с помощью Mage или MageUI.

Ответ 6

Глубокий обфускатор работает с clickonce

Ответ 7

Eziriz.NET Reactor имеет отличную интеграцию ClickOnce.