خوب من می خواستم ببينم كه اگر راه هایی واسه جلوگيری از Dump شدن هست كه هست، می تونيم برنامه رو بزاريم تو يه برنامه Native و از اون جا برنامه رو Load كنيم.
این کار اصلا" درست نیست و امنیت نداره.
اگر زحمتی نيست اين فايل رو هم نگاه كنيد، ببينيد Smart Assembly هم همين كار رو میكنه؟
مزیت این برنامه همین هست که این کار رو نمیکنه.
همون طوری هم که گفتم در این حالت درصد خوانایی کد پائین میاد , برای مثال این کد از فایل شما بدست اومد.
<MethodImpl(MethodImplOptions.Synchronized)> _
Public Shared Function (ByVal As Integer) As String
Dim str As String
If Not ..TryGetValue(, str) Then
Dim buffer As Byte()
If (. Is Nothing) Then
Dim executingAssembly As Assembly = Assembly.GetExecutingAssembly
Dim callingAssembly As Assembly = Assembly.GetCallingAssembly
. = False
. = New BinaryReader(executingAssembly.GetManifestResourceStream(ChrW(8194) & ChrW(8203) & ChrW(8198) & ChrW(8203) & ChrW(8199) & ChrW(8192) & ChrW(8202) & ChrW(8194) & ChrW(8199)))
Dim num As Short = CShort((..ReadInt16 Xor &H3A9B))
If (num = 0) Then
. = CShort((..ReadInt16 Xor &H4D82))
Else
. = ..ReadBytes(num)
End If
. = callingAssembly.GetName.GetPublicKeyToken
If ((Not . Is Nothing) AndAlso (..Length = 0)) Then
. = Nothing
End If
End If
Dim num2 As Integer = ( Xor &H155B0323)
..BaseStream.Position = num2
If (Not . Is Nothing) Then
buffer = .
Else
Dim num3 As Short
If (. = -1) Then
num3 = CShort(((..ReadInt16 Xor -7133) Xor num2))
Else
num3 = .
End If
If (num3 = 0) Then
buffer = Nothing
Else
buffer = ..ReadBytes(num3)
End If
End If
Dim count As Integer = ((..ReadInt32 Xor num2) Xor -1661214256)
Dim flag As Boolean = ((count And -2147483648) <> 0)
If flag Then
count = (count And &H7FFFFFFF)
End If
Dim bytes As Byte() = .(buffer, ..ReadBytes(count))
If ((Not . Is Nothing) <> .) Then
Dim i As Integer
For i = 0 To count - 1
Dim num6 As Byte = .((i And 7))
num6 = CByte(((num6 << 3) Or (num6 >> 5)))
bytes(i) = CByte((bytes(i) Xor num6))
Next i
End If
If (flag AndAlso Not .) Then
Dim chArray As Char() = New Char(count - 1) {}
Dim j As Integer
For j = 0 To count - 1
chArray(j) = DirectCast(bytes(j), Char)
Next j
str = New String(chArray)
Else
str = Encoding.Unicode.GetString(bytes, 0, bytes.Length)
End If
If . Then
str = (( + count) Xor &HE4A78).ToString("X")
End If
str = String.Intern(str)
..Add(, str)
If (..Count = 11) Then
..Close
. = Nothing
. = DirectCast(. = Nothing, Byte())
End If
End If
Return str
End Function