Error while Obfuscation

.NET obfuscator and automated error reporting

Moderators: Luke Jefferson, melvyn.harbour, dom.smith

Error while Obfuscation

Postby winman » Mon Apr 01, 2013 3:10 pm

We have developed project using for our internal puproses and then we obfuscated it. It is throwing error as mentioned below.
“Public member ‘Var1’ on type ‘e’ not found.”
Code: Select all
Public Sub get_constants_from_DbList(ByRef frm As Object, ByRef sDbname As String)

        For Each Row As DataRow In CommonObj.DSCommonProc.Tables("dblist").Rows
               If StrComp(Row("DbName").ToString, sDbname, CompareMethod.Text) = 0 Then
                   prg_id = Row("PrgId").ToString
                   frm.Var1= Row("ChangesDbName").ToString
                  frm.Var2 = Row("LoadTableName").ToString
                  frm.Var3 = Row("ServerName").ToString
                  Exit Sub
            End If

 End Sub

A form (named FrmMain) is passed to the parameter ‘frm’ from the calling procedure to this sub-routine. Var1, etc are public variables in that form.
Obfuscation tools we tried are –
1. SmartAssembly 6
2. PreEmptive Dotfuscator and Analytics CE (which has come with Visual studio 2012)
Without obfuscation exe is working fine.
Error is thrown while assigning variable ‘Var1’ in the sub-routine. If the code line is modified as below then obfuscated exe will work fine.
FrmMain.Var1= Row("ChangesDbName").ToString

We thought obfuscation is missing late binding & tried similar type of code in a small sample project. But that didn’t have any error. We have attached this small code. But due to its magnitude we can’t upload original project.
How can we trace the error?
Posts: 6
Joined: Mon Apr 01, 2013 1:44 pm

Postby Chris.Allen » Tue Apr 02, 2013 4:32 pm

Are you using the merging function? This will destroy the namespaces internally
Posts: 594
Joined: Thu Mar 12, 2009 4:17 pm

Postby winman » Wed Apr 03, 2013 6:27 am

Hi chris..
what is merging function?
Posts: 6
Joined: Mon Apr 01, 2013 1:44 pm

Postby Chris.Allen » Wed Apr 03, 2013 5:21 pm

It's a function at the same level as obfuscation. It merges all your assemblies into one.

We can probably assume this is not the cause.

My next guess is that “FrmMain” is called by its name (Reflection). This can be the case even if you don’t explicitly use Reflection on your case (Remoting, Serilization, Data-binding,etc.)
You need to exclude it from obfuscation.

Please take a look at the following for help ion how to do this: ... ting_build
Posts: 594
Joined: Thu Mar 12, 2009 4:17 pm

Return to SmartAssembly 6

Who is online

Users browsing this forum: No registered users and 0 guests