研究了一下,确实可以起到一定的混淆代码作用。但是有几点需要注意一下:
1.未注册版本使用时不能混淆公共类库、公共方法等,所以使用时一些敏感的信息以及程序逻辑尽可能的现在 private 方法中。
2.需要选中“在库模式中运行所有程序集”
3.和第一条说的一样内容,混淆是必须把 public 类型的对象排除掉“选中排除”
4.还需要“保持命名空间”
这个混淆后的代码使用反编译工具仍然可以看到部分源码,只是 private 部分的名称都被混淆了,所以可以起到一定的加密作用。但是作用是非常有限的,下面的图片是混淆后的代码,大部分源码还是可以看到,但是变量被重命名了。
混淆前
Imports System.Data
Imports DataTier
Imports DataTier.vDataType
Public Class bView
Function bViewToDT(ByVal vt() As viewType) As DataTable
'将留言类型转换为 DataTable
Dim dt As New DataTable
Dim cName() As String = {"vid", "vuser", "vtime", "vcon", "vip", "vverify", "vicon", "vemail"}
For i As Byte = 0 To cName.Length - 1
If cName(i) = "vtime" Then
dt.Columns.Add(cName(i), System.Type.GetType("System.DateTime"))
Else
dt.Columns.Add(cName(i))
End If
Next
Try
For ii As Byte = 0 To vt.Length - 1
Dim dr As DataRow = dt.NewRow
dr("vid") = vt(ii).vid
dr("vuser") = vt(ii).vuser
dr("vtime") = vt(ii).vtime
dr("vcon") = vt(ii).vcon
dr("vverify") = vt(ii).vverify
dr("vip") = vt(ii).vip
dr("vicon") = vt(ii).vicon
dr("vemail") = vt(ii).vemail
dt.Rows.Add(dr)
Next
Catch ex As Exception
End Try
Return dt
End Function
End Class
Imports System.Data
Imports DataTier
Imports DataTier.vDataType
Public Class bView
Function bViewToDT(ByVal vt() As viewType) As DataTable
'将留言类型转换为 DataTable
Dim dt As New DataTable
Dim cName() As String = {"vid", "vuser", "vtime", "vcon", "vip", "vverify", "vicon", "vemail"}
For i As Byte = 0 To cName.Length - 1
If cName(i) = "vtime" Then
dt.Columns.Add(cName(i), System.Type.GetType("System.DateTime"))
Else
dt.Columns.Add(cName(i))
End If
Next
Try
For ii As Byte = 0 To vt.Length - 1
Dim dr As DataRow = dt.NewRow
dr("vid") = vt(ii).vid
dr("vuser") = vt(ii).vuser
dr("vtime") = vt(ii).vtime
dr("vcon") = vt(ii).vcon
dr("vverify") = vt(ii).vverify
dr("vip") = vt(ii).vip
dr("vicon") = vt(ii).vicon
dr("vemail") = vt(ii).vemail
dt.Rows.Add(dr)
Next
Catch ex As Exception
End Try
Return dt
End Function
End Class
后面这个图片是使用 reflector 反编译的源码抓图得来:
以上观点仅限于本人目前所掌握知识。