Как использовать обфускацию для ClickOnce? - PullRequest
16 голосов
/ 05 августа 2010

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

Ответы [ 9 ]

22 голосов
/ 09 августа 2010

Вы можете использовать коммерческую версию 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. Процесс, который вы хотите выполнить:

  1. Опубликуйте приложение ClickOnce в каталоге на диске
  2. Запустите Dotfuscator CE и добавьте сборкиВы хотите, чтобы вас запутали в каталоге bin вашего проекта
  3. Запутайте сборки.Обфусцированные сборки будут по умолчанию помещены в подкаталог с именем «Dotfuscated».
  4. Переустанавливайте ваши обфусцированные сборки с помощью sn.exe (только если вы изначально строго их назвали)
  5. Скопируйте обфусцированные сборки поверхЛучшие из них в каталоге ClickOnce publish \ Application Files \ Foo_1_0_0_0
  6. Обновите манифест приложения и отмените его:

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

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

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

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

3 голосов
/ 08 мая 2011

У меня есть решение, похожее на решение Джо Кумерле, но до процесса публикации. Это работает с публикацией в 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.

1 голос
/ 20 августа 2012

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

  1. Сборка исполняемого файла в Release mode
  2. Запустите exe-модификатор по вашему выбору и измените файл по адресу obj / Release / .exe (уведомление: не bin / , но obj / )
  3. Нажмите кнопку Опубликовать сейчас в Visual Studio, которая предполагает, что последняя сборка была обновлена ​​
  4. Прибыль: D
1 голос
/ 05 августа 2010

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

0 голосов
/ 15 декабря 2015

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

0 голосов
/ 10 апреля 2014
0 голосов
/ 13 февраля 2014

Глубоководный обфускатор работает с clickonce

0 голосов
/ 11 августа 2010
0 голосов
/ 06 августа 2010

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

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

...