如何安装和使用obfuscar?
How to install and use obfuscar?
我刚刚完成我的 C# 项目 (WPF),但现在我在使用 "obfuscar" 时遇到问题(如果更容易使用,欢迎使用其他应用程序)。
当然我已经在互联网上寻找它了,但没有找到文档 "for newbies"...
我也尝试使用 github 提供的 obfuscar 提供的 BasicExempleExe,然后还有一些问题:
- 我没有看到 obfuscar 的安装文件,所以在第一步中我想我错过了什么?
- 我在 Example 目录中看到一个文件 obfuscar.xml。我知道那个文件是干什么用的,但我看不出它在哪个级别被调用。
请问有人能帮上忙吗?我现在做的不是什么大项目,但我想学习怎么做,从昨天开始我什么都不懂,这就是为什么我终于决定post这里
- 下载 Obfuscar.Console.exe
你可以从Nuget下载,然后解压obfuscar.versionnumber.nupkg,找到exe。
- 除 exe 外,创建 一个 输入文件夹 和一个 输出文件夹 。将 BasicExemple.exe 放入 输入文件夹 .
除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>
运行 cmd,cd到exe所在目录,然后运行 Obfuscar.Console.exe config.xml
输出文件夹将包含处理后的二进制文件。
来自 PowerShell 作为管理员:
PS> Install-Package Obfuscar
这会将 Obfuscar.Console.exe 可执行文件放在目录中:
C:\Program Files\PackageManagement\NuGet\Packages\Obfuscar.2.2.9\tools
相应地更改目录名称中的版本号。
我刚刚为 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>
我在 Visual Studio 的 Post 构建事件中将其设置为 运行。
- 将 Obfuscar NuGet 包添加到您的解决方案中。
将 obfuscar.xml 文件添加到您的项目并更改复制到输出目录:总是。
有关 XML 示例,请参阅 vinsa 在此线程上的 post。我必须在 "InPath" 变量中包含我的项目的完整路径。然后被混淆的文件夹在 bin/[debug / release].
下
在 Visual Studio post 构建事件中输入:“$(Obfuscar)” obfuscar.xml
为了在 .Net Core 2.1 控制台应用程序上使用它,您可以这样做:
1 - 通过在控制台中执行以下命令安装 Obfuscar window:
dotnet 工具安装 --global Obfuscar.GlobalTool --version 2.2.18
(您可以在此处查看最新版本:https://www.nuget.org/packages/Obfuscar.GlobalTool)
2 - 将一个 XML 文件添加到你想要混淆的名为 obfuscar.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 - 最后,右键单击您的项目,然后单击“属性”、“构建事件”,然后在 Post-构建事件文本框中添加以下行:
if $(ConfigurationName) == Release obfuscar.console .\obfuscar.xml
必须将这些设置用于 .NET MVC 网络应用程序(非核心)。在不更改 Public 和 Private API 变量的情况下,我收到了默认文档错误。假设 运行 从 NuGet 在解决方案根目录的“packages”中创建文件夹。
<?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>
Autmate Obfuscar in Publish 过程
(在 .net 5 中测试)
在您的 solution/project 根目录中安装 Obfuscar Global Tool as .Net Tool 全局或本地:
dotnet new tool-manifest
dotnet tool install --local Obfuscar.GlobalTool
将 obfuscar.xml
放在您的项目根目录下。然后在项目文件(.csproj)中添加以下内容
<Target Name="Obfuscation" AfterTargets="Build" Condition=" '$(Configuration)' == 'Release'">
<Exec WorkingDirectory="$(TargetDir)" Command="obfuscar.console $(ProjectDir)obfuscar.xml" />
<ItemGroup>
<DistFiles Include="$(OutDir)Obfuscated\**\*.dll; $(OutDir)Obfuscated\**\*.exe" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.RecursiveDir)%(DistFiles.Filename)%(DistFiles.Extension)</RelativePath>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
或使用 ComputeFilesToPublish 目标(未测试好)。
obfuscar.xml
文件:
<?xml version="1.0" encoding="utf-8" ?>
<Obfuscator>
<Var name="InPath" value="." />
<Var name="OutPath" value="$(InPath)\Obfuscated" />
<AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App.0.5" />
<Module file="$(InPath)\dependencyToObfuscate.dll" />
<Module file="$(InPath)\mylibraryToObfuscate.dll" />
</Obfuscator>
参考more about obfuscar configuration file (obfuscar.xml).
注意:此解决方案不适用于 dotnet 5 单文件输出发布.
希望对您有所帮助。感谢任何更好的解决方案。我在 windows.
的 asp.net 核心 5 项目中对此进行了测试
我刚刚完成我的 C# 项目 (WPF),但现在我在使用 "obfuscar" 时遇到问题(如果更容易使用,欢迎使用其他应用程序)。
当然我已经在互联网上寻找它了,但没有找到文档 "for newbies"...
我也尝试使用 github 提供的 obfuscar 提供的 BasicExempleExe,然后还有一些问题:
- 我没有看到 obfuscar 的安装文件,所以在第一步中我想我错过了什么?
- 我在 Example 目录中看到一个文件 obfuscar.xml。我知道那个文件是干什么用的,但我看不出它在哪个级别被调用。
请问有人能帮上忙吗?我现在做的不是什么大项目,但我想学习怎么做,从昨天开始我什么都不懂,这就是为什么我终于决定post这里
- 下载 Obfuscar.Console.exe 你可以从Nuget下载,然后解压obfuscar.versionnumber.nupkg,找到exe。
- 除 exe 外,创建 一个 输入文件夹 和一个 输出文件夹 。将 BasicExemple.exe 放入 输入文件夹 .
除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>
运行 cmd,cd到exe所在目录,然后运行
Obfuscar.Console.exe config.xml
输出文件夹将包含处理后的二进制文件。
来自 PowerShell 作为管理员:
PS> Install-Package Obfuscar
这会将 Obfuscar.Console.exe 可执行文件放在目录中:
C:\Program Files\PackageManagement\NuGet\Packages\Obfuscar.2.2.9\tools
相应地更改目录名称中的版本号。
我刚刚为 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>
我在 Visual Studio 的 Post 构建事件中将其设置为 运行。
- 将 Obfuscar NuGet 包添加到您的解决方案中。
将 obfuscar.xml 文件添加到您的项目并更改复制到输出目录:总是。 有关 XML 示例,请参阅 vinsa 在此线程上的 post。我必须在 "InPath" 变量中包含我的项目的完整路径。然后被混淆的文件夹在 bin/[debug / release].
下
在 Visual Studio post 构建事件中输入:“$(Obfuscar)” obfuscar.xml
为了在 .Net Core 2.1 控制台应用程序上使用它,您可以这样做:
1 - 通过在控制台中执行以下命令安装 Obfuscar window:
dotnet 工具安装 --global Obfuscar.GlobalTool --version 2.2.18
(您可以在此处查看最新版本:https://www.nuget.org/packages/Obfuscar.GlobalTool)
2 - 将一个 XML 文件添加到你想要混淆的名为 obfuscar.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 - 最后,右键单击您的项目,然后单击“属性”、“构建事件”,然后在 Post-构建事件文本框中添加以下行:
if $(ConfigurationName) == Release obfuscar.console .\obfuscar.xml
必须将这些设置用于 .NET MVC 网络应用程序(非核心)。在不更改 Public 和 Private API 变量的情况下,我收到了默认文档错误。假设 运行 从 NuGet 在解决方案根目录的“packages”中创建文件夹。
<?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>
Autmate Obfuscar in Publish 过程
(在 .net 5 中测试)
在您的 solution/project 根目录中安装 Obfuscar Global Tool as .Net Tool 全局或本地:
dotnet new tool-manifest
dotnet tool install --local Obfuscar.GlobalTool
将 obfuscar.xml
放在您的项目根目录下。然后在项目文件(.csproj)中添加以下内容
<Target Name="Obfuscation" AfterTargets="Build" Condition=" '$(Configuration)' == 'Release'">
<Exec WorkingDirectory="$(TargetDir)" Command="obfuscar.console $(ProjectDir)obfuscar.xml" />
<ItemGroup>
<DistFiles Include="$(OutDir)Obfuscated\**\*.dll; $(OutDir)Obfuscated\**\*.exe" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.RecursiveDir)%(DistFiles.Filename)%(DistFiles.Extension)</RelativePath>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
或使用 ComputeFilesToPublish 目标(未测试好)。
obfuscar.xml
文件:
<?xml version="1.0" encoding="utf-8" ?>
<Obfuscator>
<Var name="InPath" value="." />
<Var name="OutPath" value="$(InPath)\Obfuscated" />
<AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App.0.5" />
<Module file="$(InPath)\dependencyToObfuscate.dll" />
<Module file="$(InPath)\mylibraryToObfuscate.dll" />
</Obfuscator>
参考more about obfuscar configuration file (obfuscar.xml).
注意:此解决方案不适用于 dotnet 5 单文件输出发布.
希望对您有所帮助。感谢任何更好的解决方案。我在 windows.
的 asp.net 核心 5 项目中对此进行了测试