• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Các công cụ hỗ trợ thêm cho lập trình viên dùng .NET

Điều hành viên: tungcan5diop, QUANITGROBEST

Nội qui chuyên mục
1. Gửi bài viết tại đây, Tester sẽ chuyển vào trong nếu bài viết đạt yêu cầu.
2. Chỉ nên đưa link download tại website của nhà sản xuất phần mềm nếu như giới thiệu các công cụ mà sử dụng phải trả phí, mang tính chất thương mại.
3. Tuyệt đối không được giới thiệu, đưa link cũng như upload lên diễn đàn những file, thông tin liên quan đến crack, keygen, serial...
4. Gửi bài theo mẫu qui định: viewtopic.php?f=2&t=5
[tenchuongtrinh][/tenchuongtrinh]
[phienban][/phienban]
[tacgia][/tacgia]
[chucnang][/chucnang]
[end][/end]
Hình đại diện của người dùng
Kỳ Nam
Guru
Guru
Bài viết: 510
Ngày tham gia: CN 12/08/2007 8:47 pm
Đến từ: Qui Nhơn
Been thanked: 1 time
Liên hệ:

ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Gửi bàigửi bởi Kỳ Nam » T.Tư 02/07/2008 10:25 am

Tên chương trình: ilasm
Phiên bản: 1
Tác giả: kỳ nam
Chức năng: giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator



Dotfuscator đi kèm VS là ct rất xịn để ngừa 0 cho người ta coi code của mình

Nhưng mà nó chơi cái trò đưa class DotfuscatorAttribute vào assembly sau khi đã được bảo vệ -> dễ làm mình lộ hàng , còn hàng gì thì tự hiểu

ilasm.zip
(4.82 KiB) Đã tải 541 lần


Cách dùng :
1. đổi tên file C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe thành ilasm1.exe , và file ilasm.exe.config -> ilasm1.exe.config
2. copy file ilasm.exe vào thử mục C:\Windows\Microsoft.NET\Framework\v2.0.50727
3. dùng Dotfuscator thoải mái , giờ sẽ 0 còn class DotfuscatorAttribute nữa

cách hoạt động của nó :

Dotfuscator dùng ildasm để lấy code IL của assembly , rồi làm ăn với mấy file IL đó , sau khi xong xuôi nó sẽ gọi ilasm để compile code IL đã được nó thay đổi

-> ct sẽ chen ngang dô chỗ đây , đổi lại file IL để bỏ đi DotfuscatorAttribute

-> xong rồi gọi file ilasm1.exe ( tức là file ilasm.exe gốc của windows ) để compile file IL

code ct

Mã: Chọn hết

  1. Module Module1
  2.  
  3.     Sub Main(ByVal Args() As String)
  4.         Dim File As String = Args(Args.Length - 1)
  5.         Dim Lines() As String = IO.File.ReadAllLines(File)
  6.         Dim LRH As New ArrayRemovalHelper(Of String)(Lines)
  7.  
  8.         Dim FindStrings() As String = _
  9.         {".custom instance void 'DotfuscatorAttribute'::.ctor(string, int32) = (01 00 18 36 30 37 35 38 3A 30 3A 30 3A 34 2E 32 2E 35 30 30 30 2E 31 38 33 31 35 00 00 00 00 00 00)", _
  10.          ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {", _
  11.         ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {"}
  12.  
  13.         Dim FindIndex As Integer
  14.         Dim Find As String = FindStrings(FindIndex)
  15.         For i As Integer = 0 To Lines.Length - 1
  16.             If Lines(i) = Find Then
  17.                 Select Case FindIndex
  18.                     Case 0
  19.                         LRH.RemoveAt(i)
  20.                     Case 1
  21.                         LRH.RemoveAt(i)
  22.                         LRH.RemoveAt(i + 1)
  23.                         i += 1
  24.                     Case 2
  25.                         For j As Integer = 0 To 34
  26.                             LRH.RemoveAt(i + j)
  27.                         Next
  28.                 End Select
  29.                 FindIndex += 1
  30.                 If FindIndex < FindStrings.Length Then Find = FindStrings(FindIndex)
  31.             End If
  32.         Next
  33.  
  34.         IO.File.WriteAllLines(File, LRH.GetNewArray)
  35.  
  36.         Dim ExePath As String = Reflection.Assembly.GetEntryAssembly.Location
  37.         Dim StartInfo As New ProcessStartInfo(IO.Path.GetDirectoryName(ExePath) & "\ilasm1.exe", String.Join(" ", Args))
  38.         StartInfo.CreateNoWindow = True
  39.         StartInfo.UseShellExecute = False
  40.         'StartInfo.RedirectStandardError = True
  41.         Dim P As Process = Process.Start(StartInfo)
  42.         P.WaitForExit()
  43.         'System.Windows.Forms.MessageBox.Show(P.StandardError.ReadToEnd)
  44.     End Sub
  45.  
  46. End Module
  47.  
  48. Public NotInheritable Class ArrayRemovalHelper(Of T)
  49.  
  50.     Dim Array As T()
  51.     Dim RemovedIndex() As Boolean
  52.     Dim RemovedCount As Integer
  53.  
  54.     Public Sub New(ByVal Array As T())
  55.         Me.Array = Array
  56.         RemovedIndex = New Boolean(Array.Length - 1) {}
  57.     End Sub
  58.  
  59.     Public Sub RemoveAt(ByVal Index As Integer)
  60.         RemovedIndex(Index) = True
  61.         RemovedCount += 1
  62.     End Sub
  63.  
  64.     Public Function GetNewArray() As T()
  65.         Dim LastIndex As Integer = Array.Length - 1
  66.         Dim NewArray(Array.Length - RemovedCount - 1) As T
  67.         Dim Count As Integer
  68.         For i As Integer = 0 To LastIndex
  69.             If Not RemovedIndex(i) Then
  70.                 NewArray(Count) = Array(i)
  71.                 Count += 1
  72.             End If
  73.         Next
  74.         Return NewArray
  75.     End Function
  76.  
  77. End Class



Hình đại diện của người dùng
Kỳ Nam
Guru
Guru
Bài viết: 510
Ngày tham gia: CN 12/08/2007 8:47 pm
Đến từ: Qui Nhơn
Been thanked: 1 time
Liên hệ:

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Gửi bàigửi bởi Kỳ Nam » T.Hai 07/07/2008 10:10 am

sửa & upload lần cuối 2:05 7/7

sửa lại để dùng được với dotfuscator pro , và chạy nhanh hơn
đã kiểm tra với các version 4.2
ilasm.zip
(4.85 KiB) Đã tải 444 lần

code

Mã: Chọn hết

  1. Imports System.Windows.Forms
  2.  
  3. Module Module1
  4.  
  5.     Sub Main(ByVal Args() As String)
  6.         'MessageBox.Show("Main")
  7.  
  8.         Dim File As String = Args(Args.Length - 1)
  9.         Dim Lines() As String = IO.File.ReadAllLines(File)
  10.         Dim ARH As New ArrayRemovalHelper(Of String)(Lines)
  11.  
  12.         Dim i As Integer
  13.  
  14.         For i = 0 To Lines.Length - 1
  15.             If Lines(i).StartsWith(".custom instance void 'DotfuscatorAttribute'::.ctor") Then
  16.                 ARH.RemoveAt(i)
  17.                 Exit For
  18.             End If
  19.         Next
  20.  
  21.         For i = i + 1 To Lines.Length - 1
  22.             If Lines(i) = ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {" Then
  23.                 ARH.RemoveAt(i)
  24.                 ARH.RemoveAt(i + 1)
  25.                 Exit For
  26.             End If
  27.         Next
  28.  
  29.         For i = Lines.Length - 1 To i + 2 Step -1
  30.             If Lines(i) = ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {" Then
  31.                 Dim k As Integer = 1
  32.                 For j As Integer = i + 1 To Lines.Length - 1
  33.                     If Lines(j).StartsWith(".method") OrElse Lines(j).StartsWith(".property") Then
  34.                         k += 1
  35.                     ElseIf Lines(j).TrimStart.StartsWith("}") Then
  36.                         k -= 1
  37.                         If k = 0 Then
  38.                             For l As Integer = i To j
  39.                                 ARH.RemoveAt(l)
  40.                             Next
  41.                             Exit For
  42.                         End If
  43.                     End If
  44.                 Next
  45.                 Exit For
  46.             End If
  47.         Next
  48.  
  49.         IO.File.WriteAllLines(File, ARH.GetNewArray)
  50.  
  51.         Dim ExePath As String = Reflection.Assembly.GetEntryAssembly.Location
  52.         Dim StartInfo As New ProcessStartInfo(IO.Path.GetDirectoryName(ExePath) & "\ilasm1.exe", String.Join(" ", Args))
  53.         StartInfo.CreateNoWindow = True
  54.         StartInfo.UseShellExecute = False
  55.         'StartInfo.RedirectStandardError = True
  56.         Dim P As Process = Process.Start(StartInfo)
  57.         P.WaitForExit()
  58.         'System.Windows.Forms.MessageBox.Show(P.StandardError.ReadToEnd)
  59.     End Sub
  60.  
  61. End Module
  62.  
  63. Public NotInheritable Class ArrayRemovalHelper(Of T)
  64.  
  65.     Dim Array As T()
  66.     Dim RemovedIndex() As Boolean
  67.     Dim RemovedCount As Integer
  68.  
  69.     Public Sub New(ByVal Array As T())
  70.         Me.Array = Array
  71.         RemovedIndex = New Boolean(Array.Length - 1) {}
  72.     End Sub
  73.  
  74.     Public Sub RemoveAt(ByVal Index As Integer)
  75.         RemovedIndex(Index) = True
  76.         RemovedCount += 1
  77.     End Sub
  78.  
  79.     Public Function GetNewArray() As T()
  80.         Dim LastIndex As Integer = Array.Length - 1
  81.         Dim NewArray(Array.Length - RemovedCount - 1) As T
  82.         Dim Count As Integer
  83.         For i As Integer = 0 To LastIndex
  84.             If Not RemovedIndex(i) Then
  85.                 NewArray(Count) = Array(i)
  86.                 Count += 1
  87.             End If
  88.         Next
  89.         Return NewArray
  90.     End Function
  91.  
  92. End Class

Hình đại diện của người dùng
Kỳ Nam
Guru
Guru
Bài viết: 510
Ngày tham gia: CN 12/08/2007 8:47 pm
Đến từ: Qui Nhơn
Been thanked: 1 time
Liên hệ:

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Gửi bàigửi bởi Kỳ Nam » T.Hai 26/01/2009 1:58 pm

chạy với v4.3 pro
ilasm.zip
(4.89 KiB) Đã tải 437 lần

Mã: Chọn hết

  1. Imports System.Windows.Forms
  2.  
  3. Module Module1
  4.  
  5.     Sub Main(ByVal Args() As String)
  6.         'MessageBox.Show("Main")
  7.  
  8.         Dim File As String = Args(Args.Length - 1)
  9.         Dim Lines() As String = IO.File.ReadAllLines(File)
  10.         Dim ARH As New ArrayRemovalHelper(Of String)(Lines)
  11.  
  12.         Dim i As Integer
  13.  
  14.         For i = 0 To Lines.Length - 1
  15.             If Lines(i).StartsWith(".custom instance void 'DotfuscatorAttribute'::.ctor") Then
  16.                 ARH.RemoveAt(i)
  17.                 Dim j As Integer = i + 1
  18.                 While Lines(j).Length = 0 OrElse Lines(j)(0) <> "."c
  19.                     ARH.RemoveAt(j)
  20.                     j += 1
  21.                 End While
  22.  
  23.                 Exit For
  24.             End If
  25.         Next
  26.  
  27.         For i = i + 1 To Lines.Length - 1
  28.             If Lines(i) = ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {" Then
  29.                 ARH.RemoveAt(i)
  30.                 ARH.RemoveAt(i + 1)
  31.                 Exit For
  32.             End If
  33.         Next
  34.  
  35.         For i = Lines.Length - 1 To i + 2 Step -1
  36.             If Lines(i) = ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {" Then
  37.                 Dim k As Integer = 1
  38.                 For j As Integer = i + 1 To Lines.Length - 1
  39.                     If Lines(j).StartsWith(".method") OrElse Lines(j).StartsWith(".property") Then
  40.                         k += 1
  41.                     ElseIf Lines(j).TrimStart.StartsWith("}") Then
  42.                         k -= 1
  43.                         If k = 0 Then
  44.                             For l As Integer = i To j
  45.                                 ARH.RemoveAt(l)
  46.                             Next
  47.                             Exit For
  48.                         End If
  49.                     End If
  50.                 Next
  51.                 Exit For
  52.             End If
  53.         Next
  54.  
  55.         IO.File.WriteAllLines(File, ARH.GetNewArray)
  56.  
  57.         Dim ExePath As String = Reflection.Assembly.GetEntryAssembly.Location
  58.         Dim StartInfo As New ProcessStartInfo(IO.Path.GetDirectoryName(ExePath) & "\ilasm1.exe", String.Join(" ", Args))
  59.         StartInfo.CreateNoWindow = True
  60.         StartInfo.UseShellExecute = False
  61.         'StartInfo.RedirectStandardError = True
  62.         Dim P As Process = Process.Start(StartInfo)
  63.         P.WaitForExit()
  64.         'System.Windows.Forms.MessageBox.Show(P.StandardError.ReadToEnd)
  65.     End Sub
  66.  
  67. End Module
  68.  
  69. Public NotInheritable Class ArrayRemovalHelper(Of T)
  70.  
  71.     Dim Array As T()
  72.     Dim RemovedIndex() As Boolean
  73.     Dim RemovedCount As Integer
  74.  
  75.     Public Sub New(ByVal Array As T())
  76.         Me.Array = Array
  77.         RemovedIndex = New Boolean(Array.Length - 1) {}
  78.     End Sub
  79.  
  80.     Public Sub RemoveAt(ByVal Index As Integer)
  81.         RemovedIndex(Index) = True
  82.         RemovedCount += 1
  83.     End Sub
  84.  
  85.     Public Function GetNewArray() As T()
  86.         Dim LastIndex As Integer = Array.Length - 1
  87.         Dim NewArray(Array.Length - RemovedCount - 1) As T
  88.         Dim Count As Integer
  89.         For i As Integer = 0 To LastIndex
  90.             If Not RemovedIndex(i) Then
  91.                 NewArray(Count) = Array(i)
  92.                 Count += 1
  93.             End If
  94.         Next
  95.         Return NewArray
  96.     End Function
  97.  
  98. End Class

KidA7
Bài viết: 4
Ngày tham gia: CN 17/01/2010 8:58 pm

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Gửi bàigửi bởi KidA7 » T.Hai 18/01/2010 3:11 pm

Ui hay quá, thanks bác nhé. Nếu em đang dùng .net Framework 3.5 thì có phải thay đổi thư mục ko vậy, trong khi chương trình em muốn protect lại lập từ .net Framework 2.0

KidA7
Bài viết: 4
Ngày tham gia: CN 17/01/2010 8:58 pm

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Gửi bàigửi bởi KidA7 » T.Tư 20/01/2010 1:02 am

Code của bác thấy chưa ổn lắm khi mà đường dẫn tới file đích có khoảng trống. Với lại nó sẽ bị lỗi khi ta chạy file ilasm mà ko có tham số lệnh. Em sửa code lại như sau:
  1. Imports System.IO
  2. Module ildasm
  3.     Private Function FileExists(ByVal path As String) As Boolean
  4.         Return My.Computer.FileSystem.FileExists(path)
  5.     End Function
  6.     Private Sub DelFile(ByVal path As String)
  7.         My.Computer.FileSystem.DeleteFile(path)
  8.     End Sub
  9.     Private Sub FileCopy(ByVal source As String, ByVal target As String)
  10.         My.Computer.FileSystem.CopyFile(source, target)
  11.     End Sub
  12.     Sub Main(ByVal Args() As String)
  13.         If Args.Length > 0 Then
  14.             Dim File As String = Args(Args.Length - 1)
  15.             If FileExists(File) Then
  16.                 Dim Lines() As String = IO.File.ReadAllLines(File)
  17.                 Dim ARH As New ArrayRemovalHelper(Of String)(Lines)
  18.  
  19.                 Dim i As Integer
  20.  
  21.                 For i = 0 To Lines.Length - 1
  22.                     If Lines(i).StartsWith(".custom instance void 'DotfuscatorAttribute'::.ctor") Then
  23.                         ARH.RemoveAt(i)
  24.                         Dim j As Integer = i + 1
  25.                         While Lines(j).Length = 0 OrElse Lines(j)(0) <> "."
  26.                             ARH.RemoveAt(j)
  27.                             j += 1
  28.                         End While
  29.  
  30.                         Exit For
  31.                     End If
  32.                 Next
  33.  
  34.                 For i = i + 1 To Lines.Length - 1
  35.                     If Lines(i) = ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {" Then
  36.                         ARH.RemoveAt(i)
  37.                         ARH.RemoveAt(i + 1)
  38.                         Exit For
  39.                     End If
  40.                 Next
  41.  
  42.                 For i = Lines.Length - 1 To i + 2 Step -1
  43.                     If Lines(i) = ".class ansi auto beforefieldinit public sealed 'DotfuscatorAttribute' extends ['mscorlib']'System.Attribute' {" Then
  44.                         Dim k As Integer = 1
  45.                         For j As Integer = i + 1 To Lines.Length - 1
  46.                             If Lines(j).StartsWith(".method") OrElse Lines(j).StartsWith(".property") Then
  47.                                 k += 1
  48.                             ElseIf Lines(j).TrimStart.StartsWith("}") Then
  49.                                 k -= 1
  50.                                 If k = 0 Then
  51.                                     For l As Integer = i To j
  52.                                         ARH.RemoveAt(l)
  53.                                     Next
  54.                                     Exit For
  55.                                 End If
  56.                             End If
  57.                         Next
  58.                         Exit For
  59.                     End If
  60.                 Next
  61.                 IO.File.WriteAllLines(File, ARH.GetNewArray)
  62.             End If
  63.         End If
  64.         Dim ExePath As String = Reflection.Assembly.GetEntryAssembly.Location
  65.         Dim runarg As String = ""
  66.         For i = 0 To Args.Length - 1
  67.             runarg = runarg & """" & Args(i) & """ "
  68.         Next
  69.         Shell(IO.Path.GetDirectoryName(ExePath) & "\ilasm_.exe " & runarg, , True)
  70.     End Sub
  71. End Module
  72.  
  73. Public NotInheritable Class ArrayRemovalHelper(Of T)
  74.  
  75.     Dim Array As T()
  76.     Dim RemovedIndex() As Boolean
  77.     Dim RemovedCount As Integer
  78.  
  79.     Public Sub New(ByVal Array As T())
  80.         Me.Array = Array
  81.         RemovedIndex = New Boolean(Array.Length - 1) {}
  82.     End Sub
  83.  
  84.     Public Sub RemoveAt(ByVal Index As Integer)
  85.         RemovedIndex(Index) = True
  86.         RemovedCount += 1
  87.     End Sub
  88.  
  89.     Public Function GetNewArray() As T()
  90.         Dim LastIndex As Integer = Array.Length - 1
  91.         Dim NewArray(Array.Length - RemovedCount - 1) As T
  92.         Dim Count As Integer
  93.         For i As Integer = 0 To LastIndex
  94.             If Not RemovedIndex(i) Then
  95.                 NewArray(Count) = Array(i)
  96.                 Count += 1
  97.             End If
  98.         Next
  99.         Return NewArray
  100.     End Function
  101. End Class

H_BimBim_H
Bài viết: 1
Ngày tham gia: T.Năm 25/02/2010 10:02 pm

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscator

Gửi bàigửi bởi H_BimBim_H » T.Năm 25/02/2010 10:23 pm

Tôi chưa có nhiều kinh nghiệm viết C#. Nay tôi cũng gặp phải tình huống phải bảo mật code của mình. Các bạn đã nói là có cách làm nhưng tôi đọc thì chưa biết cách làm như thế nào? Mong các bạn chỉ chi tiết giúp tôi. Và có cần bản Dotfuscator có bản quyền không?

Tôi xin cảm ơn.
H_BimBim_H
tamnv77@yahoo.com

KidA7
Bài viết: 4
Ngày tham gia: CN 17/01/2010 8:58 pm

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscat

Gửi bàigửi bởi KidA7 » CN 23/05/2010 1:50 am

Bạn dùng thử dot Net protect xem sao. Tuy nhiên cái này phải mang thêm vài file dll, khoảng 1M

anle
Bài viết: 1
Ngày tham gia: T.Hai 19/03/2012 2:09 pm

Re: ct giúp bỏ class DotfuscatorAttribute khi dùng Dotfuscat

Gửi bàigửi bởi anle » T.Hai 19/03/2012 2:13 pm

Cách của bạn Kỳ Nam, khi thực hiện thì bị lỗi.
Còn bạn kidA7 sửa lại thì lại không đính theo file ilasm.exe nên tớ cũng không biết làm sao.
Với cái code của bạn kidA7 thì làm sao để compile thành file ilasm được? Các bạn giúp tớ với!


Quay về “[.NET] Công cụ, tiện ích”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách