如何使用ConfuserEx?

and*_*fam 31 obfuscation

我想试试这个程序,但我无法弄清楚如何使用它.

我在作者的网站https://github.com/yck1509/ConfuserEx上搜索,但这个网站上的例子对于像我这样的编程新手来说还不够清晰.

所以我在这里发布我的问题,希望有人能告诉我如何用简单的英语和一些例子来使用它.它会非常棒,非常值得赞赏.

Nas*_*ter 62

从这里获取最新的二进制版本:https: //github.com/yck1509/ConfuserEx/releases

用于命令行(Confuser.CLI.exe):

Confuser.CLI.exe  myProjectFile.crproj
Run Code Online (Sandbox Code Playgroud)

项目文件示例:

<?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>
Run Code Online (Sandbox Code Playgroud)

cmd行

配置文件格式:https://github.com/yck1509/ConfuserEx/blob/master/docs/ProjectFormat.md

用于GUI(ConfuserEx.exe):

GUI

  1. 在"项目"选项卡中
    1. 选择一个基目录
    2. 单击+按钮添加DLL(模块)
  2. 在"设置"选项卡中
    1. 单击<全局设置>
    2. 单击+按钮.添加了一条新规则.当模式匹配时,执行规则,因此"True"表示将始终执行规则.
    3. 单击"编辑"按钮.
    4. 选择预设"最大"然后关闭
  3. 在"保护"选项卡中
    1. 点击保护!

  • 在我阅读这篇文章之前,我无法意识到我必须添加规则.添加规则后,很好地混淆了源代码. (8认同)
  • 使用预设时,您不必指定要在规则节点中使用的保护。使用最大值为:&lt;rule预设=“Maximum”pattern=“true”/&gt;。尺寸可以更小。 (2认同)

cat*_*hat 5

此答案涵盖了以下情况:您的解决方案具有 (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>
Run Code Online (Sandbox Code Playgroud)

将 MyLibrary.dll 替换为项目的输出。(如果它是可执行文件,请将 .dll 替换为 .exe。)

ConfuserEX 为相对路径选择不同的起点,这就是为什么路径在文件中看起来很奇怪。

此步骤的关键要素是混淆每个项目的“obj”输出。这是为了帮助您的 Windows 安装项目选择混淆的版本。

2) 在每个项目的 post-build 事件中,添加如下的 post-build 事件:

if "$(ConfigurationName)" == "Release" $(SolutionDir)..\ConfuserEX\Confuser.CLI.exe $(ProjectDir)Confuser.crproj
Run Code Online (Sandbox Code Playgroud)

第一个条件是仅在 Release 中构建时才进行混淆。在这里,您需要调整路径以匹配 Confuser.CLI.exe 的路径。我在解决方案的根文件夹旁边有我的 ConfuserEX 文件夹。

3) 在您的安装项目中,我们需要解决的问题是确保打包能够获取您的混淆版本。安装程序有一些模糊的逻辑来决定从哪个文件夹中选取每个程序集。我们将强制它选择正确的。为此,您必须:

(3a) 将所有项目添加为“项目输出”,这可确保“obj”文件夹中的混淆文件将其添加到包中。

(3b) 检查安装项目的“检测到的依赖项”部分。每当您看到由您的项目之一生成的依赖项时,请转到其属性并将其标记为 Exclude=True。这可确保您的包中的混淆版本不会因推理过程而被非混淆版本替换。