如何使用ConfuserEx?

时间:2014-06-11 04:10:05

标签: obfuscation

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

我搜索了作者的网站https://github.com/yck1509/ConfuserEx但是这个网站上的示例对于像我这样的编程新手来说还不够明确。

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

4 个答案:

答案 0 :(得分:61)

从这里获取最新的二进制版本: 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

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

答案 1 :(得分:2)

对于其他遇到问题的人: 我下载了它,主人错过了dnlib。您可以单独下载dnlib将其复制到dnlib文件夹中,然后进行编译。

这应该适用于大多数人,但对我来说,对我的exe,它给了一个&#34;不正确的dos格式&#34;任何exe都有错误。想到可能因为我已经更新到vs2015和4.5.3(.net 5或6或者他们现在想要的任何东西)。我想也许就是这样。但它不是(最高编译为4.5)。

在Google上看我的假设是它无法更新文件所以花了1小时+将元组从你的类转换为.net 4元组。并将所有项目更新为4.5。

如果可以,你们需要检查你的github fork并点击下载然后编译..它应该从网站编译而不是。我相信这是一个很棒的产品。有点粗糙,因为它不适合青少年使用。也许你可以只有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

继续上面。

答案 2 :(得分:2)

这个答案涵盖了以下情况:(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。这可以确保由于推理过程,包中的模糊版本不会被非模糊版本替换。

答案 3 :(得分:0)

对我来说,这种方法效果最好:

定义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"