Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install and use obfuscar?

Tags:

c#

obfuscar

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 :

  • I see no install file for obfuscar, so already for 1st step I think I missed something?
  • I see in Example directory a file obfuscar.xml. I understood what is that file for, but I don't see at what level it is called.

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.

like image 451
Siegfried.V Avatar asked May 12 '17 11:05

Siegfried.V


4 Answers

  1. Download the Obfuscar.Console.exe you can download from Nuget, then unzip obfuscar.versionnumber.nupkg, and find the exe.
  2. Besides exe, create one input folder and one output folder. put BasicExemple.exe into input folder.
  3. 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>
    
  4. Run cmd, cd to exe's directory, then run Obfuscar.Console.exe config.xml

  5. The output folder will contain the processed binary.

like image 191
Lei Yang Avatar answered Nov 02 '22 23:11

Lei Yang


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>
like image 30
vinsa Avatar answered Nov 02 '22 22:11

vinsa


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
like image 16
Ignacio Avatar answered Nov 02 '22 22:11

Ignacio


I set this up to run on the Post Build event in Visual Studio.

  1. Add Obfuscar NuGet Package to your solution.
  2. 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].

  3. In the Visual Studio post build events enter: "$(Obfuscar)" obfuscar.xml

like image 14
ElimGarak Avatar answered Nov 02 '22 22:11

ElimGarak