goupviet / obfuscar

Automatically exported from code.google.com/p/obfuscar
0 stars 0 forks source link

Hiding Strings and .Net Framework function names #36

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
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 using 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!

Original issue reported on code.google.com by cosminst...@gmail.com on 7 Jul 2010 at 4:50

GoogleCodeExporter commented 9 years ago
Calls to the .NET framework libraries cannot be obfuscated, because class types 
and their members are identified by their names. This means these names have to 
show up somewhere because the framework libraries are fixed and we cannot 
obfuscate them.

Surely it would be possible to add some obfuscation by storing member names in 
an encrypted way and resolving references during runtime using reflection. But 
this would slow down the code significantly and expand code size. Wrapping 
methods in a kind of proxy class could also be a way, but would not add much to 
obfuscation.

I hope this answers your question.

Original comment by webbi...@gmail.com on 8 Jul 2010 at 7:28

GoogleCodeExporter commented 9 years ago
This should be marked as Closed. Hiding strings is already supported, while 
hiding function names are not, as explained above.

Both can be de-obfuscated by https://bitbucket.org/0xd4d/de4dot

Original comment by lextu...@gmail.com on 28 Apr 2013 at 7:41