我们出于内部目的使用 vb.net 开发了项目,然后我们对其进行了混淆。它抛出错误,如下所述。
“未找到类型 'e' 上的公共成员 'Var1'。”</p>
代码:
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
Next
End Sub
一个表单(名为 FrmMain)从调用过程传递给参数“frm”到该子例程。Var1 等是这种形式的公共变量。
我们尝试过的混淆工具是——
智能装配 6
PreEmptive Dotfuscator and Analytics CE(随 Visual Studio 2012 提供)
没有混淆 exe 工作正常。
在子例程中分配变量“Var1”时引发错误。如果代码行如下修改,则混淆的 exe 将正常工作。
FrmMain.Var1= Row("ChangesDbName").ToString
我们认为混淆缺少后期绑定并在一个小型示例项目中尝试了类似类型的代码。但这没有任何错误。我们附上了这个小代码。但由于其规模,我们无法上传原始项目。
我们如何追踪错误?
你可以在这里找到我的示例应用程序的源代码