Как использовать ConfuserEx?
Я хотел бы попробовать эту программу, но я не мог понять, как ее использовать.
Я выполнил поиск на сайте автора https://github.com/yck1509/ConfuserEx но пример на этом сайте недостаточно ясен для кого-то нового в программировании, такого как я.
Поэтому я размещаю свой вопрос здесь в надежде, что кто-то покажет мне, как использовать его на простом английском языке, а также некоторые примеры. Это было бы так здорово и высоко ценится.
3 ответа
Получите последнюю версию бинарных файлов здесь: https://github.com/yck1509/ConfuserEx/releases
Для использования в командной строке (Confuser.CLI.exe):
Confuser.CLI.exe myProjectFile.crproj
Пример файла проекта:
<?xml version="1.0" encoding="utf-8"?>
<project baseDir="c:\" outputDir="c:\Confused" xmlns="http://confuser.codeplex.com">
<rule preset="none" pattern="true">
<protection id="anti debug" />
<protection id="anti dump" />
<protection id="anti ildasm" />
<protection id="anti tamper" />
<protection id="constants" />
<protection id="ctrl flow" />
<protection id="invalid metadata" />
<protection id="ref proxy" />
<protection id="rename" />
<protection id="resources" />
</rule>
<module path="ICSharpCode.AvalonEdit.dll" />
<module path="ICSharpCode.Decompiler.dll" />
<module path="ICSharpCode.NRefactory.dll" />
<module path="ICSharpCode.NRefactory.CSharp.dll" />
<module path="ICSharpCode.NRefactory.VB.dll" />
<module path="ICSharpCode.TreeView.dll" />
<module path="ILSpy.BamlDecompiler.Plugin.dll" />
<module path="ILSpy.exe" />
<module path="ILSpy.SharpDevelop.LGPL.dll" />
<module path="Mono.Cecil.dll" />
<module path="Mono.Cecil.Pdb.dll" />
</project>
Формат файла конфигурации: https://github.com/yck1509/ConfuserEx/blob/master/docs/ProjectFormat.md
Для использования с графическим интерфейсом (ConfuserEx.exe):
- На вкладке Проект
- Выберите базовый каталог
- Нажмите на кнопку +, чтобы добавить DLL (модули)
- На вкладке "Настройки"
- Нажмите <Глобальные настройки>
- Нажмите на кнопку +. Новое правило добавлено. Когда шаблон соответствует, правило выполняется, поэтому "True" означает, что правило будет выполняться всегда.
- Нажмите на кнопку Изменить.
- Выберите предустановку "Максимум", затем закройте
- На вкладке "Защита"
- Нажмите Защитить!
Этот ответ охватывает случаи, когда у вас есть решение с (A) несколькими проектами, которые могут ссылаться друг на друга, и (B) вы хотите автоматизировать запутывание в проекте установки Visual Studio.
1) Добавьте в каждый из ваших проектов текстовый файл Confuser.crproj, находящийся непосредственно в папке проекта. В этой папке вы должны увидеть папки "bin", "ob", "resources" и т. Д. Нет необходимости прикреплять эти файлы к вашему решению в visual studio. Текстовый файл должен выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<project baseDir="obj\Release" outputDir="..\Release" xmlns="http://confuser.codeplex.com">
<rule preset="none" pattern="true">
<protection id="anti debug" />
<protection id="anti dump" />
<protection id="anti ildasm" />
<protection id="anti tamper" />
<protection id="constants" />
<protection id="ctrl flow" />
<protection id="invalid metadata" />
<protection id="ref proxy" />
<protection id="resources" />
</rule>
<module path="MyLibrary.dll" />
<probePath>..\..\bin\Release</probePath>
</project>
Замените MyLibrary.dll для вывода вашего проекта. (И замените.dll на.exe, если это исполняемый файл.)
ConfuserEX выбирает разные начальные точки для относительных путей, поэтому пути выглядят странно в файле.
Ключевым элементом этого шага является запутывание вывода "obj" каждого из ваших проектов. Это поможет вашему проекту установки Windows подобрать запутанные версии.
2) В событии после сборки каждого из ваших проектов добавьте событие после сборки, как показано ниже:
if "$(ConfigurationName)" == "Release" $(SolutionDir)..\ConfuserEX\Confuser.CLI.exe $(ProjectDir)Confuser.crproj
Первое условие - запутывать только при сборке в Release. Здесь вам нужно будет настроить пути, чтобы они соответствовали пути вашего Confuser.CLI.exe. У меня есть папка ConfuserEX рядом с корневой папкой решения.
3) В вашем проекте установки проблема, которую мы должны решить, заключается в том, чтобы убедиться, что упаковка подхватывает ваши обфусцированные версии. Программа установки имеет некоторую непонятную логику, чтобы решить, из какой папки будет выбрана каждая сборка. Мы заставим его подобрать правильные. Для этого вам необходимо:
(3a) добавьте все ваши проекты как "Project Output", это гарантирует, что обфусцированные файлы в ваших папках "obj" попадут в пакет.
(3b) проверьте раздел "обнаруженные зависимости" вашего проекта установки. Всякий раз, когда вы видите зависимость, сгенерированную одним из ваших проектов, перейдите в его Свойства и отметьте ее как Exclude=True. Это гарантирует, что ваши запутанные версии в пакете не будут заменены не запутанными версиями из-за процесса вывода.
Для всех, кто борется с проблемами: я скачал его, и мастер отсутствует dnlib. Вы можете отдельно загрузить dnlib, скопировать его в папку dnlib и затем скомпилировать.
Это должно работать для большинства, однако для меня против моего exe-файла это выдало ошибку "неправильный формат dos" на любом exe-файле. Подумал, может быть, так как я обновился до vs2015 и 4.5.3 (.net 5 или 6 или как они хотят назвать это сейчас). Я подумал, может быть, это было так. но это не так (самая высокая компиляция была 4,5).
Глядя на Google, я предположил, что он не может обновить файлы, поэтому потратил 1 час + преобразование кортежей из вашего класса в.net 4. и обновление всех проектов до 4.5.
Если вы можете, вам, ребята, нужно проверить ваш github форк и нажать "скачать", а затем скомпилировать.. он должен скомпилироваться с сайта и не делает. Я уверен, что это отличный продукт. Просто немного грубо, поскольку он не предназначен для использования юниорами. Может быть, вы могли бы просто иметь ссылку на EXE? Это может помочь, так что люди не занимаются вопросами компиляции.
Кстати, действительно хорошие вещи, похоже, что это делает много вещей, даже платные не просто кривой обучения.
Еще одно примечание, похоже, у вас есть RuntimeEnvironment.GetSystemVersion()[1] == 4
там, вероятно, должно быть (с некоторым разбором) RuntimeEnvironment.GetSystemVersion()[1] > 3.9
так что вы получите 4 и 4,5
**Обновить. Обновился до 4.5 и перестал работать перетаскивание, все еще работает как вы описали выше. собирался с 4.5.3, но вы не используете какой-либо новой функциональности.
То, что я закончил, я отредактирую позже, чтобы заявить, работает ли это. https://onedrive.live.com/redir?resid=88D92E4D40C0593C%21105
Иду с выше.
По мне, этот метод работает лучше всего:
определить crproj:
<?xml version="1.0" encoding="utf-8"?>
<project baseDir="c:\program files\confuserex" outputDir="c:\program files\confuserex\Confused" xmlns="http://confuser.codeplex.com">
<rule preset="none" pattern="true">
<protection id="anti debug" />
<protection id="anti dump" />
<protection id="anti ildasm" />
<protection id="anti tamper" />
<protection id="constants" />
<protection id="ctrl flow" />
<protection id="invalid metadata" />
<protection id="ref proxy" />
<protection id="rename" />
<protection id="resources" />
</rule>
<module path="C:\Temp\dlhsoft\DlhSoft.HierarchicalData.LightWPF.Controls.dll" />
<module path="C:\Temp\dlhsoft\DlhSoft.ProjectData.GanttChart.LightWPF.Controls.dll" />
<module path="C:\Temp\dlhsoft\DlhSoft.ProjectData.PertChart.LightWPF.Controls.dll" />
</project>
и вызовите этот файл из командной строки, используя это:
"c:\program files\confuserex\confuserex.exe" "c:\program files\confuserex\myprojectfile.crproj"