首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ConfuserEx?

如何使用ConfuserEx?
EN

Stack Overflow用户
提问于 2014-06-11 12:10:05
回答 4查看 49.7K关注 0票数 34

我想试试这个程序,但是我不知道怎么用。

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

所以我把我的问题贴在这里,希望有人能告诉我如何用简单的英语和一些例子来使用它。这将是非常伟大和感激的。

EN

回答 4

Stack Overflow用户

发布于 2014-10-03 23:55:35

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

在命令行(Confuser.CLI.exe)中使用:

代码语言:javascript
复制
Confuser.CLI.exe  myProjectFile.crproj

项目文件示例:

代码语言:javascript
复制
<?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):

项目选项卡中的

    1. 在+按钮上选择一个基本directory
    2. Click,以添加DLL (modules)

  1. 在设置选项卡中,
    1. 单击<全局设置>
    2. 单击+按钮。将添加一个新规则。当模式匹配时,将执行规则,因此"True“表示规则在编辑时将始终为”executed.
    3. Click“,预设为"Maximum”然后为close

  1. 在Protect选项卡中,单击
    1. 单击Protect!
票数 66
EN

Stack Overflow用户

发布于 2018-02-15 03:03:15

此答案涵盖了以下情况:(A)多个项目可能相互引用,以及(B)您希望在Visual Studio安装项目中自动执行模糊处理。

1)在每个项目上直接在项目的文件夹中添加一个Confuser.crproj文本文件。在这个文件夹中,你可以看到"bin","ob","resources“等文件夹。没有需要将这些文件附加到visual studio中的解决方案中。文本文件应如下所示:

代码语言:javascript
复制
<?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替换为项目的输出。(如果.exe是可执行文件,请将其替换为.dll。)

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

这一步的关键是对每个项目的"obj“输出进行模糊处理。这是为了帮助你的Windows安装项目选择模糊的版本。

2)在每个项目的后期构建事件中,添加一个后期构建事件,如下所示:

代码语言:javascript
复制
if "$(ConfigurationName)" == "Release" $(SolutionDir)..\ConfuserEX\Confuser.CLI.exe $(ProjectDir)Confuser.crproj

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

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

(3a)将所有项目添加为"Project Output",这将确保您的"obj“文件夹中的模糊文件可以添加到包中。

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

票数 5
EN

Stack Overflow用户

发布于 2014-11-17 10:38:12

对于其他正在为解决问题而苦苦挣扎的人:我下载了它,但主程序缺少dnlib。您可以单独下载dnlib,将其复制到dnlib文件夹中,然后进行编译。

这应该适用于大多数人,但是对于我的exe,它在任何exe上都会给出一个“不正确的dos格式”错误。我想可能是因为我更新到了vs2015和4.5.3 (.net 5或6,或者他们现在想叫它什么)。我想也许就是这样了。但事实并非如此(最高编译版本是4.5)。

看一看谷歌,我的假设是它无法更新文件,所以花了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

和上面的一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24154502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档