Как использовать ConfuserEx?

Я бы хотел попробовать эту программу, но я не мог понять, как ее использовать.

Я ищу на сайте автора https://github.com/yck1509/ConfuserEx, но пример на этом сайте недостаточно ясен для кого-то нового для программирования, например меня.

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

Ответ 1

Получить последнюю версию двоичных файлов: 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>

cmd line

Формат файла конфигурации: https://github.com/yck1509/ConfuserEx/blob/master/docs/ProjectFormat.md

Для использования с GUI (ConfuserEx.exe):

gui

  • На вкладке "Проект"
    • Выберите базовый каталог
    • Нажмите кнопку +, чтобы добавить DLL (модули)
  • На вкладке "Настройки"
    • Нажмите на < Глобальные настройки >
    • Нажмите кнопку+. Добавлено новое правило. Когда шаблон совпадает, правило выполняется, поэтому "True" означает, что правило всегда будет выполняться.
    • Нажмите кнопку "Изменить".
    • Выберите пресет "Максимум", затем нажмите
  • На вкладке Защита
    • Нажмите "Защитить".

Ответ 2

Для всех, кто борется с проблемами: Я загрузил его, и мастеру не хватает dnlib. Вы можете отдельно скачать dnlib скопировать его в папку dnlib и затем скомпилировать.

Это должно работать для большинства, однако для меня против моего exe он дал ошибку "неправильного формата dos" на любом exe. Думал, возможно, с тех пор, как я обновил vs2015 и 4.5.3 (.net 5 или 6 или все, что они хотят назвать сейчас). Я подумал, может быть, так оно и есть. но это не было (самая высокая компиляция составила 4,5).

Глядя на google, я предположил, что он не смог обновить файлы, поэтому потратил 1 час + конвертирование кортежей из вашего класса в .net 4 кортежа. и обновление всех проектов до 4.5.

Если вы можете, вам, ребята, нужно проверить свою вилку github и нажать "скачать", а затем скомпилировать ее.. она должна скомпилироваться с сайта и не будет. Я уверен, что это отличный продукт. Немного грубо, потому что он не предназначен для использования Юниорами. Может быть, вы могли бы просто иметь ссылку на EXE? Это может помочь, чтобы люди не занимались вопросами компиляции.

Btw действительно хороший материал, похоже, что это делает много вещей, даже платные - это не просто кривая обучения.

Еще одна заметка: похоже, что у вас есть 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

Идти выше.

Ответ 3

Этот ответ охватывает случаи, когда у вас есть решение с (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) добавьте все ваши проекты как "Вывод проекта", это обеспечит попадание в пакет обфусцированных файлов в ваших папках "obj".

(3b) проверьте раздел "обнаруженные зависимости" вашего проекта установки. Всякий раз, когда вы видите зависимость, сгенерированную одним из ваших проектов, перейдите в его Свойства и отметьте ее как Exclude = True. Это гарантирует, что ваши запутанные версии в пакете не будут заменены не запутанными версиями из-за процесса вывода.

Ответ 4

Для меня этот метод работает лучше всего:

определить 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"