|
WhatItDoes
Describes what Obfuscar does
Featured What does Obfuscar do?Basically, Obfuscar scrambles the metadata in a set of assemblies. It renames everything to the minimal set of names that can be used to identify them, given signatures and type information. Since these new names are shorter than the old ones, it also dramatically shrinks executable size. An ExampleThe following method is from the example included in the release: public ExampleUI( )
{
InitializeComponent( );
ClassX cx = new ClassX( "Some Text" );
displayText.Text = cx.DisplayText;
}The code can be decompiled (via Reflector) to: public ExampleUI()
{
this.InitializeComponent();
this.displayText.Text = new ClassX("Some Text").get_DisplayText();
}After obfuscation, the code can be decompiled (via Reflector) to: public A()
{
this.A();
this.a.Text = new A.A("Some Text").A();
}It's a simple example, but it scales...For example, given a reasonably sized code base, one could easily run into a class named 'A' (in the namespace 'A') with 7 methods, 4 properties, and 5 fields named 'A', with several more methods, properties, and fields named 'a'. To try it out, see BasicExample. CaveatIt makes debugging / reverse engineering very difficult, but wouldn't stop someone who really wants to reverse engineer it. It would at least slow them down, and would deter casual observers. |
Hey,
Either I seem to have a problem with using your program, or the feature is not supported. I used it on a .net exe and, after obfuscation, using redgate Reflector, i could see all the .net framework function names (I mean functions like: String resultedHash = Convert.ToBase64String?(hasher.ComputeHash?(Encoding.Unicode.GetBytes?())); or StreamReader? reader = new StreamReader?(sPath); ). Also, although in the functions, the string constants were not there, i could find their plain values in the Reflector. Is it me or it's not possible to completely obfuscate public .net function names/strings?
Thanks! And you did a great job so far!
You cannot rename .NET Framework libraries and functions.
Actually the example does not scale to this amount. There are many obfuscators that can use a dictionary for methods, a dictionary for properties and a dictionary for fields. So simply re-obfuscating with method1, method2 ... method999 as your "methods dictionary" etc. significantly reduces the problem.
Hi all
First of all Congratulations for your work!!!! I am very impresive with this product. I would like to ask you a question regarding enums. Is it possible to add an exception to avoid them? Our project probably contains around 300-400Enums and [Obfuscate(true/false)] option it is not my favourite option. ;)
Thank you very much in advance