Dotfuscator disassociates derived class when base class is linkedwith other assemblies

J

jimhunt22

I've run into an odd problem using the Dotfuscator tool. I have a
reasonably large PDA C# Winfoms application that when obfuscated "as-
is" works fine on the device. However, when I "link" together a
number of assemblies then the application becomes broken. One of the
assemblies in the Linking is a base class of a number of other
assemblies. When it's linked in the inheritance hierachy appears to
become disassocarted and calls to override functions in the base class
(which previously successfully called the derived class before
linking) now fail to call the override functions in the derived
class. It's like as far as the base class is concerned the derived
class does not exist anymore. I found that if I exclude the base
class function from obfuscation then it all works correctly again -
obvioously this then defeats the purpose of obfuscation.

I would like to understand why this is happeneing - I believe it to be
a bug in the Dotfuscator tool, but I am open to suggestions

Jim
 
J

jimhunt22

I've run into an odd problem using the Dotfuscator tool. I have a
reasonably large PDA C# Winfoms application that when obfuscated "as-
is" works fine on the device. However, when I "link" together a
number of assemblies then the application becomes broken. One of the
assemblies in the Linking is a base class of a number of other
assemblies. When it's linked in the inheritance hierachy appears to
become disassocarted and calls to override functions in the base class
(which previously successfully called the derived class before
linking) now fail to call the override functions in the derived
class. It's like as far as the base class is concerned the derived
class does not exist anymore. I found that if I exclude the base
class function from obfuscation then it all works correctly again -
obvioously this then defeats the purpose of obfuscation.

I would like to understand why this is happeneing - I believe it to be
a bug in the Dotfuscator tool, but I am open to suggestions

Jim


Hmmm, it seems the problem is being caused by checking the "Rename
referenced metadata defined only in input file" option on the "Rename-
Options" tab. Anyone have any idea what this does - there is nothing
on Google and nothing in the Dotfuscator that explains its meaning.
What is the effect of unchecking this?

Jim
 
S

Simon Hart [MVP]

I tried Dotfuscator in the early days I think way back in .NET 1.1 and could
never get it to behave and I think many other developers have found the same
problem that I have come across. There are better obfuscator tools out there
but you will have to pay for them.

See here: http://www.howtoselectguides.com/dotnet/obfuscators/

I'm just gussing but that rename referenced metadata option would obfuscate
any dependency assemblies the input assembly is dependent on.
 
G

Guest

We use Xenocode Postbuild as well, and while we've found a few quirks
(especially with strong-named CF assemblies), it works well and is
reasonably priced plus their support team is responsive when we do have
issues.


--

Chris Tacke, Embedded MVP
OpenNETCF Consulting
Giving back to the embedded community
http://community.OpenNETCF.com





Hi,

For CF, check out this, it is a very good tool:
http://fabdecret.blogspot.com/2007/09/obfuscator-for-compact-framework.html

BR

Fabien Decret (Device Application Development MVP)
Windows Embedded Consultant

ADENEO (ADESET)
http://www.adeneo.adetelgroup.com/ | http://fabdecret.blogspot.com/
 
J

jimhunt22

We use Xenocode Postbuild as well, and while we've found a few quirks
(especially with strong-named CF assemblies), it works well and is
reasonably priced plus their support team is responsive when we do have
issues.

--

Chris Tacke, Embedded MVP
OpenNETCF Consulting
Giving back to the embedded communityhttp://community.OpenNETCF.com


Hi,

For CF, check out this, it is a very good tool:http://fabdecret.blogspot.com/2007/09/obfuscator-for-compact-framewor...

BR

Fabien Decret (Device Application Development MVP)
Windows Embedded Consultant

ADENEO (ADESET)http://www.adeneo.adetelgroup.com/|http://fabdecret.blogspot.com/

Thanks guys - unfortunately I can't dictate what tool my client is
using...such is the life of a contractor.

I did however get a response from PreEmptive that implied they thought
it might be a bug in Dotfuscator and "explained" what that checkbox
did:

"We would like to solve the bug you reported once it is clearly
identified, so we'll investigate this case further.
As for now, this option may impact the way your app is renamed. You
may have a renaming schema that may be different from what you would
have without this option
So you may have a look at the obfuscated output , and the renaming
reports, to check if the renaming coverage you get is OK in front of
what you previously got when you were not using the linking feature."

Jim
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top