如何安装和使用obfuscar?

时间:2017-05-12 11:32:23

标签: c# obfuscar

我刚刚完成了我的C#项目(WPF),但现在我遇到了使用“obfuscar”的问题(如果更容易使用,欢迎使用另一个应用程序)。

当然我已经在互联网上寻找它,但没有找到“新手”的文档......

我还尝试使用github提供的obfuscar提供的BasicExempleExe,然后还剩下一些问题:

  • 我看不到obfuscar的安装文件了,所以第一步我觉得我错过了什么?
  • 我在Example目录中看到一个文件obfuscar.xml。我理解该文件是什么,但我没有看到它的调用级别。

可以请一些人帮忙吗?这不是我现在做的那么大的项目,但我想学习如何做到这一点,从昨天起我什么都听不懂,这就是为什么我最终决定发布在这里。

6 个答案:

答案 0 :(得分:22)

  1. 下载 Obfuscar.Console.exe 你可以从Nuget下载,然后解压缩obfuscar.versionnumber.nupkg,找到exe。
  2. 除了exe,创建一个输入文件夹和一个输出文件夹。将BasicExemple.exe放入输入文件夹
  3. 除了exe之外,创建普通的文本文件(例如config.xml),内容可以非常简单:

    <?xml version='1.0'?>
    <Obfuscator>
      <Var name="InPath" value=".\input folder name" />
      <Var name="OutPath" value=".\output folder name" />
      <Module file="$(InPath)\BasicExemple.exe" />
    </Obfuscator>
    
  4. 运行cmd,cd到exe的目录,然后运行Obfuscar.Console.exe config.xml

  5. 输出文件夹将包含已处理的二进制文件。

答案 1 :(得分:9)

我刚刚为Obfuscar创建了一个扩展配置文件,想要分享它。可用参数的完整列表here

<?xml version='1.0'?>
<Obfuscator>
  <Var name="InPath" value="." />
  <Var name="OutPath" value=".\Obfuscator_Output" />
  <Var name="KeepPublicApi" value="false" />
  <Var name="HidePrivateApi" value="true" />
  <Var name="RenameProperties" value="true" />
  <Var name="RenameEvents" value="true" />
  <Var name="RenameFields" value="true" />
  <Var name="UseUnicodeNames" value="true" />
  <Var name="HideStrings" value="true" />
  <Var name="OptimizeMethods" value="true" />
  <Var name="SuppressIldasm" value="true" />
  <Module file="$(InPath)\MyApplication.exe" />
</Obfuscator>

答案 2 :(得分:2)

我将其设置为在Visual Studio中的Post Build事件上运行。

  1. 将Obfuscar NuGet软件包添加到您的解决方案中。
  2. 将obfuscar.xml文件添加到您的项目,然后更改“复制到输出目录:始终”。 有关XML示例,请参见vinsa在该线程上发表的文章。我必须在“ InPath”变量中包含项目的完整路径。然后,混淆文件夹位于bin / [debug / release]下。

  3. 在Visual Studio发布后的事件中输入:“ $(Obfuscar)” obfuscar.xml

答案 3 :(得分:2)

要在.Net Core 2.1控制台应用程序上使用它,可以执行以下操作:

1-通过在控制台窗口中执行以下命令来安装Obfuscar:

dotnet工具安装--global Obfuscar.GlobalTool-版本2.2.18

(您可以在此处查看最新版本:https://www.nuget.org/packages/Obfuscar.GlobalTool

2-将一个名为obfuscar.xml的XML文件添加到要混淆的项目中,其内容如下(来自@vinsa回答):

<?xml version='1.0'?>
<Obfuscator>
<Var name="InPath" value=".\bin\Release\netcoreapp2.1\linux-arm\publish" />
<Var name="OutPath" value="$(InPath)\ReadyForDeployment" />
<Var name="KeepPublicApi" value="false" />
<Var name="HidePrivateApi" value="true" />
<Var name="RenameProperties" value="true" />
<Var name="RenameEvents" value="true" />
<Var name="RenameFields" value="true" />
<Var name="UseUnicodeNames" value="true" />
<Var name="HideStrings" value="true" />
<Var name="OptimizeMethods" value="true" />
<Var name="SuppressIldasm" value="true" />
<Module file="$(InPath)\YourProject.dll" />
</Obfuscator>

3-最后,右键单击您的项目,然后依次单击“属性”,“构建事件”,然后在“构建后事件”文本框中添加以下行:

if $(ConfigurationName) == Release obfuscar.console .\obfuscar.xml

答案 4 :(得分:1)

从PowerShell作为管理员:

PS> Install-Package Obfuscar

这会将Obfuscar.Console.exe可执行文件放在目录中:

C:\Program Files\PackageManagement\NuGet\Packages\Obfuscar.2.2.9\tools

相应地更改目录名中的版本号。

答案 5 :(得分:1)

必须将这些设置用于 .NET MVC Web 应用程序(非核心)。我在没有更改公共和私有 API 变量的情况下收到默认文档错误。假设从解决方案根目录下“包”中的 NuGet 创建的文件夹运行。

<?xml version='1.0'?>
<Obfuscator>
  <Var name="InPath" value="..\..\..\MyWebApp.WebApp\bin\" />
  <Var name="OutPath" value="..\..\..\MyWebApp.WebApp\bin\obfuscar" />
  <Var name="KeepPublicApi" value="true" /><!--Keep true for web app.-->
  <Var name="HidePrivateApi" value="false" /><!--Keep false for web app.-->
  <Var name="RenameProperties" value="true" />
  <Var name="RenameEvents" value="true" />
  <Var name="RenameFields" value="true" />
  <Var name="UseUnicodeNames" value="true" />
  <Var name="HideStrings" value="true" />
  <Var name="OptimizeMethods" value="true" />
  <Var name="SuppressIldasm" value="true" />
  <Module file="$(InPath)\MyWebApp.DataAccess.dll" />
  <Module file="$(InPath)\MyWebApp.Helpers.dll" />
  <Module file="$(InPath)\MyWebApp.Models.dll" />
  <Module file="$(InPath)\MyWebApp.WebApp.dll" />
</Obfuscator>