I just finished my C# project(WPF), but now I meet problems on using "obfuscar" (another applicaion would be welcome, if easier to use).
Of course I looked already on internet for it, but didn't find a documentation "for newbies"...
I also tried to use BasicExempleExe provided with obfuscar from github, then some questions remaining :
Can please some guy be of any help?It is not such a big project I am doing now, but I would like to learn how to do that, and since yesterday I could not understand anything, that's why I finally decided to post here.
Besides exe, create plain text file(config.xml for example), and the contents can be very simple:
<?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>
Run cmd, cd to exe's directory, then run Obfuscar.Console.exe config.xml
The output folder will contain the processed binary.
I have just created an extended configuration file for Obfuscar and would like to share it.
Full list of available parameters 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>
In order to use it on a .Net Core 2.1 console app, you can do this:
1 - Install Obfuscar by executing the following command in a console window:
dotnet tool install --global Obfuscar.GlobalTool --version 2.2.18
(you can check the last version here: https://www.nuget.org/packages/Obfuscar.GlobalTool)
2 - Add an XML file to the project you want to obfuscate called obfuscar.xml with the following content (from @vinsa answer):
<?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 - Finally, right click on your project, then Properties, Build Events, and in the Post-build event text box add this line:
if $(ConfigurationName) == Release obfuscar.console .\obfuscar.xml
I set this up to run on the Post Build event in Visual Studio.
Add obfuscar.xml file to your project and change Copy to Output Directory: Always. See the post on this thread by vinsa for an XML sample. I had to include the full path to my project in "InPath" variable. Then the obfucasted folder was under bin/[debug / release].
In the Visual Studio post build events enter: "$(Obfuscar)" obfuscar.xml
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With