What are the challenges you face when working across database platforms? Take the survey
Options

Dlls/ExcludePublicMembers: Private methods signature?

mclarkemclarke Posts: 9
edited February 17, 2012 10:58AM in SmartAssembly
Hi,

I'm obfuscating a DLL (SA 6.6.1.44) and I'm a little surprised that the signature of the private methods aren't changing. What I mean is if I had a class as follows:
public class MyImportantClass {
//... public stuff here

private void MyComplicatedMethod(object aNameThatGivesAClue) {
 //... important stuff here
}

}

The private method gets obfuscated to:
private void *unprintablecharacter*(object aNameThatGivesAClue) {
 //... obfuscated code, but with the object name everywhere!!
}

I would have expected something along the lines of:
private void *unprintablecharacter*(object xasih) {
 //... obfuscated code, unclear what xasih is for.
}


I don't know if I've overlooked something, so I'd like to clarify if I'm doing something wrong?

If not, as it makes the code that much more readable, could this be included as a feature please? The same behaviour happens if you specify ExcludePublicMembers in the .saproj file for an exe.

Martin

Comments

  • Options
    Can you try the pruning feature in addition please?
  • Options
    Pruning doesn't seem to work where the parameter is opitonal.

    For example...
    public class Program
        {
            public void DoIt()
            {
                MyImportantMethod();
                MyImportantMethod("Test");
            }
            private object MyImportantMethod(string AnImportantMethod = "Test")
            {
    
                if (AnImportantMethod != null && AnImportantMethod.Length < 5)
                    // trivial...
                    return new object();
                else
                    // trivial...
                    return null;
    
            }
        }
    

    returns the following sig for the private method.
    private object \u0001(string AnImportantMethod = "Test")
    
  • Options
    This is because it is now necessary to include this information at runtime.

    I will ask our development team if we can improve the behaviour. I cannot promise anything, however.
  • Options
    I have been notified that this will categorically be fixed in the next product update- this is due in 1 month's time.
  • Options
    Hi Martin,

    Just to update you on what Chris said, we're going to try to get a patch out for this at the start of next week (hopefully Monday 13th).

    Thank you for reporting this.

    Dom.
    Dominic Smith,
    Project Manager,
    Redgate.
  • Options
    Dom/Chris,

    Thanks for the update, that is great news regarding a patch. Should I just keep an eye on the forum for the patch being released?

    Thanks,
    Martin
  • Options
    I'll post an update in this thread when we release the patch but, yes, it will also be announced in a separate post on this forum.
    Dominic Smith,
    Project Manager,
    Redgate.
  • Options
    Hi Martin,

    Just a quick update for you. You have probably noticed that we haven't managed to release SmartAssembly 6.2.2 quite as quickly as we'd hoped. We're now aiming to make this release on Friday. Again, I'll let you know here when that happens.

    Sorry for the delay,

    Dom.
    Dominic Smith,
    Project Manager,
    Redgate.
  • Options
    Thanks for the update Dom.
  • Options
    Hi Martin,

    I've just released SmartAssembly 6.6.2.35. You should be able to download it by clicking on 'Check for updates' in SmartAssembly.

    Thanks for your patience,

    Dom.
    Dominic Smith,
    Project Manager,
    Redgate.
Sign In or Register to comment.