How can we help you today? How can we help you today?

Dlls/ExcludePublicMembers: Private methods signature?

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
mclarke
0

Comments

10 comments

  • Chris.Allen
    Can you try the pruning feature in addition please?
    Chris.Allen
    0
  • mclarke
    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")
    
    mclarke
    0
  • Chris.Allen
    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.
    Chris.Allen
    0
  • Chris.Allen
    I have been notified that this will categorically be fixed in the next product update- this is due in 1 month's time.
    Chris.Allen
    0
  • dom.smith
    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.
    dom.smith
    0
  • mclarke
    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
    mclarke
    0
  • dom.smith
    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.
    dom.smith
    0
  • dom.smith
    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.
    dom.smith
    0
  • mclarke
    Thanks for the update Dom.
    mclarke
    0
  • dom.smith
    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.
    dom.smith
    0

Add comment

Please sign in to leave a comment.