Addin Khóa Unviewable - Ẩn Module - Open Source

  • Thread starter vothanhthu
  • Ngày gửi
Trạng thái
Không mở trả lời sau này.
V

vothanhthu

Guest
File code mới nhất, các bạn download tại topic này:
Admin tuhocvba
__________________________
1. Giới thiệu
Tiếp nối và mở rộng 2 chủ đề về bảo mật Code VBA mà mình đã đăng từ các bài đăng trước, nếu bạn nào chưa xem 2 bài viết bảo mật VBA mình đã đăng thì các bạn nên xem lại để có cái nhìn tổng quát về 2 kỹ thuật này trước khi xem bài viết của mình, link mình sẽ để bên dưới:



Trong 2 bài viết trước, mình đã hướng dẫn các bạn cách làm thủ công kỹ thuật Unviewable và kỹ thuật ẩn Module bằng cách chỉnh sửa Hex. Lần này, chúng ta sẽ mở rộng vấn đề ra hơn là sẽ tạo ra được một Addin Excel, chỉ cần chọn file cần Unviewable hoặc ẩn module thì code sẽ thực hiện các thao tác chỉnh sửa nhị phân mà không cần chúng ta phải tương tác thủ công. Trong Addin mình đã cố gắng thêm rất nhiều chú thích code giúp mọi người dễ hiểu nhất có thể.

2. Ý tưởng code
Khi chúng ta mở một file bất kì, chúng đều sẽ được lưu tạm thời trong thư mục Temp, cái này chắc các bạn đều biết. Chúng ta sẽ tận dụng thư mục này để tiến hành các thao tác trích xử lý file vbaProject.bin. Các thao tác di chuyển, kiểm tra, lấy thông tin file chúng ta dùng công cụ FSO (FileSystemObject) và dùng Shell để trích file vbaProject.bin trong file gốc của chúng ta ra thư mục Temp để xử lý, sau đó dùng các phương thức đọc, chỉnh sửa nhị phân để chỉnh sửa file vbaProject.bin và cuối cùng cũng dùng Shell để nạp file vbaProject.bin này lại.

3. Toàn bộ code và chú thích code
Mã:
'Code tham khao: Kieu Manh
'Chinh sua, thay doi code, chu thich lai cho phu hop voi tieu chi de hieu nhat co the: vothanhthu (TuhocVBA.Net)

Option Explicit

Private Sub LockHiddenProject(ByVal strBinaryFile As String, ByVal LockUlock As Boolean)
    If LockUlock Then
        Call ChangeKeys(strBinaryFile, True)
    Else
        Call ChangeKeys(strBinaryFile, False)
    End If
End Sub

Private Function FixPath(ByVal sPath As String) As String
    FixPath = sPath & IIf(Right(sPath, 1) <> "\", "\", "")
End Function

Private Sub ChangeKeys(ByRef strBinaryFile As Variant, ByRef isLockView As Boolean)
    Dim F1 As Long, i As Long, bytTemp As Byte, strTemp As String * 5
    Dim F2 As Long, j As Long, bytTemp1 As Byte, strTemp1 As String * 7

'mo file vbaProject.bin dang nhi phan
If isLockView Then GoSub Read_Binary Else GoSub Hidden_Module 'Neu IsLockView = True thi tien hanh khoa, nguoc lai thi Hidden Module

Read_Binary:
F1 = FreeFile
Open strBinaryFile For Binary Access Read Write As #F1
        Do
            i = i + 1
            Get #F1, i, bytTemp 'Get bytTemp tai vi tri i
            If bytTemp = 67 Or bytTemp = 68 Or bytTemp = 71 Then 'Neu tim den dung cac vi tri 67,68,71 tuong ung la C, D, G thi
                Get #F1, i, strTemp 'Get StrTemp voi vi tri i
                If strTemp = "CMG=""" Or strTemp = "DPB=""" Or strTemp Like "GC=""*" Then GoSub Lock_VBA
            End If
        Loop While Not EOF(F1)
        GoTo Finally

Lock_VBA:
    For i = Loc(F1) + 1 To LOF(F1)
            Get #F1, i, bytTemp
            If bytTemp = 34 Then 'Neu Hex = 34 (")
                    Exit For 'Thoat For
            Else
                    Put #F1, i, CByte(49) 'Tien hanh ma hoa cac ki tu do thanh 1
            End If
    Next
    Return 'Tro lai Change_Binary
Finally:
        Close #F1
Hidden_Module:
F2 = FreeFile
Open strBinaryFile For Binary Access Read Write As #F2
    Do
            j = j + 1
            Get #F2, j, bytTemp1
            If bytTemp1 = 77 Then 'Neu tim thay hex 4D
                Get #F2, j, strTemp1
                If strTemp1 = "Module=" Then
                    For j = Loc(F2) - 6 To LOF(F2)
                        Get #F2, j, bytTemp1
                        Put #F2, j, CByte(10) 'thay the toan bo thanh 0A
                        If bytTemp1 = 13 Then Exit For 'Hex 0D se thoat for
                    Next
                End If
            End If
        Loop While Not EOF(F2)
    Close #F2
End Sub

Private Sub LockHiddenVBA(ByVal FileExcel As String, ByVal isLockView As Boolean)
    Dim Fso As Object, ObjShell As Object, TempPath
    Dim FileName_Path, ZipFile, vbaProject As String
    Dim sPath As String, NewFile As String, OldFile As String
    Dim strFileName, strFileType, strFileNote

    Set ObjShell = CreateObject("Shell.Application")
    Set Fso = CreateObject("Scripting.FileSystemObject") 'Kích hoat cong cu FSO
    If Fso.FileExists(FileExcel) = False Then Exit Sub 'Neu FileExcel khong ton tai se thoat Sub

    sPath = Fso.GetFile(FileExcel).ShortPath                                ''Lay ShortPath cua File
    FileName_Path = FixPath(Fso.GetFile(sPath).ParentFolder)                ''Lay ShortPath cua Folder .. xu ly loi khi Folder la Tieng Viet co dau
    'Khai bao Thong tin Su dung
    TempPath = FixPath(Fso.GetSpecialFolder(2))                             ''Lay duong dan Folder Rac
    vbaProject = TempPath & "vbaProject.bin" 'Lay dia chi cua file vbaProject.bin
    strFileName = Fso.GetBaseName(FileExcel) 'Lay ten FileExcel
    strFileType = "." & Fso.GetExtensionName(FileExcel) 'Lay phan mo rong cua FileExcel
    strFileNote = IIf(isLockView, "_Unviewable", "_HiddenModule") 'Ten phan phia sau name cua FileExcel tuy truong hop
    NewFile = TempPath & strFileName & strFileNote & strFileType 'Set toan bo dia chi cua file moi trong Folder Rac
    OldFile = FileName_Path & strFileName & strFileNote & strFileType 'Set duong dan thuc te cua file moi
    ZipFile = NewFile & ".zip" 'Them .ZIP sau File moi trong Folder Rac

    'Xoa het File cu neu co, tranh loi khong can thiet
    If Fso.FileExists(OldFile) Then Fso.DeleteFile (OldFile)
    If Fso.FileExists(NewFile) Then Fso.DeleteFile (NewFile)
    If Fso.FileExists(ZipFile) Then Fso.DeleteFile (ZipFile)
    If Fso.FileExists(vbaProject) Then Fso.DeleteFile (vbaProject)
    'Copy File Moi
    Fso.CopyFile FileExcel, NewFile, True 'Tao file moi voi duong dan la NewFile

    If Fso.FileExists(NewFile) Then 'Neu Duong dan NewFile ton tai thi
        Fso.MoveFile NewFile, ZipFile
        ObjShell.Namespace(TempPath).movehere ObjShell.Namespace(ZipFile).items.Item("xl\vbaProject.bin")         'Cut File vbaProject.bin Trong *.zip ra ngoai Folder
        Do While ObjShell.Namespace(ZipFile & "\xl\") Is Nothing
            Application.Wait (Now + 0.000005)                               ''Cho xu ly cho toi khi ket thuc sau 0.5 giay
        Loop

        Call LockHiddenProject(vbaProject, isLockView)                       ''Xu ly ma hoa chuoi trong File vbaProject.bin
        ObjShell.Namespace(ZipFile & "\xl\").movehere ObjShell.Namespace(TempPath).items.Item("vbaProject.bin")         'Cut File vbaProject.bin Vao File *.zip
        Do Until Not Fso.FileExists(vbaProject)
            Application.Wait (Now + 0.000005)
        Loop

        Fso.MoveFile ZipFile, NewFile
        Do Until Not Fso.FileExists(ZipFile)
           Application.Wait (Now + 0.000002)
        Loop

        Fso.MoveFile NewFile, FileName_Path
        MsgBox "Khóa thành công Code VBA", 64, "Thông Báo"
    End If
    Set ObjShell = Nothing
    Set Fso = Nothing
End Sub

Sub Lock_vbaProject()
    Dim vFile
    vFile = Application.GetOpenFilename("All Files, *.xls; *.xlsx; *.xlsm; *.xlsb;*.xla; *.xlam") 'Hien bang chon file voi cac dinh dang ho tro
    If TypeName(vFile) = "String" Then Call LockHiddenVBA(vFile, True) 'Neu co chon thi se goi sub LockHiddenVBA voi dang True
End Sub

Sub Hidden_Module()
    Dim vFile
    vFile = Application.GetOpenFilename("All Files, *.xls; *.xlsx; *.xlsm; *.xlsb;*.xla; *.xlam") 'Hien bang chon file voi cac dinh dang ho tro
    If TypeName(vFile) = "String" Then Call LockHiddenVBA(vFile, False) 'Neu co chon thi se goi sub LockHiddenVBA voi dang False
End Sub
4. Cách sử dụng Addin
Bạn cần đăng nhập để thấy đính kèm

Các bạn có 2 cách sử dụng Addin:
- Mở trực tiếp lên, chọn các chức năng trong Tab ProtectVBA.
- Add vào như một Addin thông thường để sử dụng lâu dài.

Chọn vào chức năng Khóa Unviewable hoặc Ẩn Module, chọn file cần khóa (Vd: MacroA.xlsb). Chương trình sẽ tạo ra 1 file tương tự thêm tên tương ứng với chức năng khóa (Vd: MacroA_HiddenModule.xlsb) trong cùng thư mục.

Các nguồn tham khảo: Mình tham khảo Code từ bạn Kiều Mạnh, được mình chỉnh sửa, thay đổi code để phù hợp với các phương pháp mà chúng ta đã biết từ 2 bài viết trước của mình. Mình đã cố gắng gắn nhiều chú thích code sao cho bạn dễ hiểu nhất có thể.

Hiện Addin đã có thêm rất nhiều tính năng mới, Click vào Lịch sử Update Addin để có thể tải được phiên bản mới nhất nhé !
: Thêm tính năng đơn giản code, mở khóa Unviewable, công cụ căn lề Code, fix lỗi..
: Thêm mã hóa code, một tính năng năng mở khóa code
Mình sẽ rất vui nếu như chia sẽ của mình đã mang lại thêm cho bạn một kiến thức mới nào đó. Hãy cho mình biết suy nghĩ, thắc mắc của các bạn trong phần trả lời, chúng ta sẽ cùng nhau trao đổi !!
 

tuhocvba

Administrator
Thành viên BQT
Đây là một bài viết vô cùng quý giá, cảm ơn @vothanhthu . Không chỉ đưa ra công cụ, mà còn comment rất cẩn thận vào code, giúp người đọc hình dung được cách nghĩ.
Đây không phải là cách nghĩ (ẩn code, giấu code) mà diễn đàn khuyến khích, vì phương châm của chúng ta là chia sẻ kiến thức, tuy nhiên hiểu được nó để từ đó vận dụng vào những việc khác là quan trọng.
 

vbano1

SMod
Thành viên BQT
Mình vừa thử nghiệm, kết quả như sau:
Unviewable thì hoạt động tốt.
Ẩn Module thì không còn thấy macro hoạt động.
@vothanhthu test thử lại xem sao nhé.
 
V

vothanhthu

Guest
@tuhocvba , @vbano1Mình kiểm tra thấy .xlsb thì hoạt động bình thường, đến .xlsm đúng là có lỗi!. Mình đã sửa lại khai báo 2 FreeFile riêng biệt cho 2 chức năng Unviewable và Hidden Module trong Sub ChangKeys. Mình đã update lại code và file dẫn mới, cả nhà thử lại giúp mình xem còn lỗi nữa không nha. ^^!
 
Sửa lần cuối bởi điều hành viên:

Thái Phúc

Yêu THVBA
1. Giới thiệu
Tiếp nối và mở rộng 2 chủ đề về bảo mật Code VBA mà mình đã đăng từ các bài đăng trước, nếu bạn nào chưa xem 2 bài viết bảo mật VBA mình đã đăng thì các bạn nên xem lại để có cái nhìn tổng quát về 2 kỹ thuật này trước khi xem bài viết của mình, link mình sẽ để bên dưới:



Trong 2 bài viết trước, mình đã hướng dẫn các bạn cách làm thủ công kỹ thuật Unviewable và kỹ thuật ẩn Module bằng cách chỉnh sửa Hex. Lần này, chúng ta sẽ mở rộng vấn đề ra hơn là sẽ tạo ra được một Addin Excel, chỉ cần chọn file cần Unviewable hoặc ẩn module thì code sẽ thực hiện các thao tác chỉnh sửa nhị phân mà không cần chúng ta phải tương tác thủ công. Trong Addin mình đã cố gắng thêm rất nhiều chú thích code giúp mọi người dễ hiểu nhất có thể.

2. Ý tưởng code
Khi chúng ta mở một file bất kì, chúng đều sẽ được lưu tạm thời trong thư mục Temp, cái này chắc các bạn đều biết. Chúng ta sẽ tận dụng thư mục này để tiến hành các thao tác trích xử lý file vbaProject.bin. Các thao tác di chuyển, kiểm tra, lấy thông tin file chúng ta dùng công cụ FSO (FileSystemObject) và dùng Shell để trích file vbaProject.bin trong file gốc của chúng ta ra thư mục Temp để xử lý, sau đó dùng các phương thức đọc, chỉnh sửa nhị phân để chỉnh sửa file vbaProject.bin và cuối cùng cũng dùng Shell để nạp file vbaProject.bin này lại.

3. Toàn bộ code và chú thích code
Mã:
Option Explicit

Private Sub LockHiddenProject(ByVal strBinaryFile As String, ByVal LockUlock As Boolean)
    If LockUlock Then
        Call ChangeKeys(strBinaryFile, True)
    Else
        Call ChangeKeys(strBinaryFile, False)
    End If
End Sub

Private Function FixPath(ByVal sPath As String) As String
    FixPath = sPath & IIf(Right(sPath, 1) <> "\", "\", "")
End Function

Private Sub ChangeKeys(ByRef strBinaryFile As Variant, ByRef isLockView As Boolean)
    Dim F1 As Long, i As Long, bytTemp As Byte, strTemp As String * 5
    Dim F2 As Long, j As Long, bytTemp1 As Byte, strTemp1 As String * 7
  
'mo file vbaProject.bin dang nhi phan
If isLockView Then GoSub Read_Binary Else GoSub Hidden_Module 'Neu IsLockView = True thi tien hanh khoa, nguoc lai thi Hidden Module

Read_Binary:
F1 = FreeFile
Open strBinaryFile For Binary Access Read Write As #F1
        Do
            i = i + 1
            Get #F1, i, bytTemp 'Get bytTemp tai vi tri i
            If bytTemp = 67 Or bytTemp = 68 Or bytTemp = 71 Then 'Neu tim den dung cac vi tri 67,68,71 tuong ung la C, D, G thi
                Get #F1, i, strTemp 'Get StrTemp voi vi tri i
                If strTemp = "CMG=""" Or strTemp = "DPB=""" Or strTemp Like "GC=""*" Then 'Xac nhan lai co dung la cuoi CMG, DPB, GC khong
                       GoSub Lock_VBA
                End If
            End If
        Loop While Not EOF(F1)
      
Lock_VBA:
    For i = Loc(F1) + 1 To LOF(F1)
            Get #F1, i, bytTemp
            If bytTemp = 34 Then 'Neu Hex = 34 (")
                    Exit For 'Thoat For
            Else
                    Put #F1, i, CByte(49) 'Tien hanh ma hoa cac ki tu do thanh 1
            End If
    Next
    Return 'Tro lai Change_Binary
    Close #F1
  
Hidden_Module:
F2 = FreeFile
Open strBinaryFile For Binary Access Read Write As #F2
    Do
            j = j + 1
            Get #F2, j, bytTemp1
            If bytTemp1 = 77 Then 'Neu tim thay hex 4D
                Get #F2, j, strTemp1
                If strTemp1 = "Module=" Then
                    For j = Loc(F2) - 6 To LOF(F2)
                        Get #F2, j, bytTemp1
                        Put #F2, j, CByte(10) 'thay the toan bo thanh 0A
                        If bytTemp1 = 13 Then Exit For 'Hex 0D se thoat for
                    Next
                End If
            End If
        Loop While Not EOF(F2)
    Close #F2
End Sub

Private Sub LockHiddenVBA(ByVal FileExcel As String, ByVal isLockView As Boolean)
    Dim Fso As Object, ObjShell As Object, TempPath
    Dim FileName_Path, ZipFile, vbaProject As String
    Dim sPath As String, NewFile As String, OldFile As String
    Dim strFileName, strFileType, strFileNote
  
    Set ObjShell = CreateObject("Shell.Application")
    Set Fso = CreateObject("Scripting.FileSystemObject") 'Kích hoat cong cu FSO
    If Fso.FileExists(FileExcel) = False Then Exit Sub 'Neu FileExcel khong ton tai se thoat Sub
  
    sPath = Fso.GetFile(FileExcel).ShortPath                                ''Lay ShortPath cua File
    FileName_Path = FixPath(Fso.GetFile(sPath).ParentFolder)                ''Lay ShortPath cua Folder .. xu ly loi khi Folder la Tieng Viet co dau
    'Khai bao Thong tin Su dung
    TempPath = FixPath(Fso.GetSpecialFolder(2))                             ''Lay duong dan Folder Rac
    vbaProject = TempPath & "vbaProject.bin" 'Lay dia chi cua file vbaProject.bin
    strFileName = Fso.GetBaseName(FileExcel) 'Lay ten FileExcel
    strFileType = "." & Fso.GetExtensionName(FileExcel) 'Lay phan mo rong cua FileExcel
    strFileNote = IIf(isLockView, "_Unviewable", "_HiddenModule") 'Ten phan phia sau name cua FileExcel tuy truong hop
    NewFile = TempPath & strFileName & strFileNote & strFileType 'Set toan bo dia chi cua file moi trong Folder Rac
    OldFile = FileName_Path & strFileName & strFileNote & strFileType 'Set duong dan thuc te cua file moi
    ZipFile = NewFile & ".zip" 'Them .ZIP sau File moi trong Folder Rac
  
    'Xoa het File cu neu co, tranh loi khong can thiet
    If Fso.FileExists(OldFile) Then Fso.DeleteFile (OldFile)
    If Fso.FileExists(NewFile) Then Fso.DeleteFile (NewFile)
    If Fso.FileExists(ZipFile) Then Fso.DeleteFile (ZipFile)
  
    'Copy File Moi
    Fso.CopyFile FileExcel, NewFile, True 'Tao file moi voi duong dan la NewFile
  
    If Fso.FileExists(NewFile) Then 'Neu Duong dan NewFile ton tai thi
        Fso.MoveFile NewFile, ZipFile
        ObjShell.Namespace(TempPath).movehere ObjShell.Namespace(ZipFile).items.Item("xl\vbaProject.bin")         'Cut File vbaProject.bin Trong *.zip ra ngoai Folder
        Do While ObjShell.Namespace(ZipFile & "\xl\") Is Nothing
            Application.Wait (Now + 0.000005)                               ''Cho xu ly cho toi khi ket thuc sau 0.5 giay
        Loop
      
        Call LockHiddenProject(vbaProject, isLockView)                       ''Xu ly ma hoa chuoi trong File vbaProject.bin
        ObjShell.Namespace(ZipFile & "\xl\").movehere ObjShell.Namespace(TempPath).items.Item("vbaProject.bin")         'Cut File vbaProject.bin Vao File *.zip
        Do Until Not Fso.FileExists(vbaProject)
            Application.Wait (Now + 0.000005)
        Loop
      
        Fso.MoveFile ZipFile, NewFile
        Do Until Not Fso.FileExists(ZipFile)
           Application.Wait (Now + 0.000002)
        Loop
      
        Fso.MoveFile NewFile, FileName_Path
        MsgBox "Khóa thành công Code VBA", 64, "Thông Báo"
    End If
    Set ObjShell = Nothing
    Set Fso = Nothing
End Sub

Sub Lock_vbaProject()
    Dim vFile
    vFile = Application.GetOpenFilename("All Files, *.xls; *.xlsx; *.xlsm; *.xlsb;*.xla; *.xlam") 'Hien bang chon file voi cac dinh dang ho tro
    If TypeName(vFile) = "String" Then Call LockHiddenVBA(vFile, True) 'Neu co chon thi se goi sub LockHiddenVBA voi dang True
End Sub

Sub Hidden_Module()
    Dim vFile
    vFile = Application.GetOpenFilename("All Files, *.xls; *.xlsx; *.xlsm; *.xlsb;*.xla; *.xlam") 'Hien bang chon file voi cac dinh dang ho tro
    If TypeName(vFile) = "String" Then Call LockHiddenVBA(vFile, False) 'Neu co chon thi se goi sub LockHiddenVBA voi dang False
End Sub
4. Cách sử dụng Addin
Bạn cần đăng nhập để thấy đính kèm

Các bạn có 2 cách sử dụng Addin:
- Mở trực tiếp lên, chọn các chức năng trong Tab ProtectVBA.
- Add vào như một Addin thông thường để sử dụng lâu dài.

Chọn vào chức năng Khóa Unviewable hoặc Ẩn Module, chọn file cần khóa (Vd: MacroA.xlsb). Chương trình sẽ tạo ra 1 file tương tự thêm tên tương ứng với chức năng khóa (Vd: MacroA_HiddenModule.xlsb) trong cùng thư mục.

Các nguồn tham khảo: Mình tham khảo Code từ bạn Kiều Mạnh, được mình chỉnh sửa, thay đổi code để phù hợp với các phương pháp mà chúng ta đã biết từ 2 bài viết trước của mình. Mình đã cố gắng gắn nhiều chú thích code sao cho bạn dễ hiểu nhất có thể.


Mình sẽ rất vui nếu như chia sẽ của mình đã mang lại thêm cho bạn một kiến thức mới nào đó. Hãy cho mình biết suy nghĩ, thắc mắc của các bạn trong phần trả lời, chúng ta sẽ cùng nhau trao đổi !!
Bác cho em hỏi, kỹ thuật ẩn Module thì chỉ cần 1 click nếu sử dụng add in này. Vậy em ẩn xong thì có dễ dàng mở không ạ.
P/s: Còn cái Khóa Unviewable thì em thấy họ có Add in mở khóa lâu rồi ạ (Hình như của bác Thaipv)
 
V

vothanhthu

Guest
@Thái Phúc Về mở khóa VBA thì diễn dẫn cũng có bài viết nói về vấn đề này, bạn có thể tham khảo link mình sẽ để bên dưới.
Về việc hiện lại Module có dễ hay khó mình cũng có đề cập ở cuối bài viết này nha !
 
Sửa lần cuối bởi điều hành viên:

tuhocvba

Administrator
Thành viên BQT
@vothanhthu ơi, nghiên cứu thêm code vào addin thì tốt:
1. Kiểm tra .bin tồn tại chưa thì xóa không cần hỏi.
Hôm qua dùng thử thấy bị lỗi này, lý do là .bin đã tồn tại rồi nên sinh ra lỗi.
2. Khắc phục: Tham khảo bài này:
Mong bản addin mới hoàn thiện hơn.
 

Euler

Administrator
Thành viên BQT
Nhờ @vothanhthu mà tuhocvba.net là diễn đàn vba việt nam đầu tiên công khai chia sẻ một Tool Unviewable (free). Mong Tool hoàn thiện hơn.
Để xóa không cần hỏi, bạn tham khảo:
 
V

vothanhthu

Guest
@tuhocvba @Euler Cảm ơn mọi người đã Test kiểm tra, nhờ đó phát hiện lỗi !
Mình cũng sợ lỗi do file trước đã tồn tại, trong Code mình có dòng này
Mã:
If Fso.FileExists(OldFile) Then Fso.DeleteFile (OldFile)
If Fso.FileExists(NewFile) Then Fso.DeleteFile (NewFile)
If Fso.FileExists(ZipFile) Then Fso.DeleteFile (ZipFile)
Giờ ta thêm 1 dòng nữa, mọi người tải file Test lại giúp mình còn lỗi không nhé !
Mã:
If Fso.FileExists(vbaProject) Then Fso.DeleteFile (vbaProject)
 
V

vothanhthu

Guest
Update ngày 04.02.20: Thêm tính năng mã hóa code, một số tính năng mở khóa...

Thông tin phiên bản Update ProtectVBA ver 2.0:
1. Thêm tính năng mã hóa code: Tính năng này sẽ mã hóa các tên sub, tên biến, tên Function... thành các chuỗi mã hóa khó hiểu (Nguồn sưu tầm và chỉnh sửa).
2. Thêm một số tính năng mở khóa lỡ khi các bạn quên mật khẩu: Mở khóa Sheet, VBAProject.
3. Thay đổi ICON lại cho đẹp mắt hơn.
Bạn cần đăng nhập để thấy đính kèm

NHẤN VÀ ĐỂ TẢI VỀ
Note: Mở khóa ẩn Module và mở khóa Unviewable đang trong giai đoạn phát triển nên hiện tại chưa dùng được các bạn nha.
 
Sửa lần cuối bởi điều hành viên:

tuhocvba

Administrator
Thành viên BQT
Cảm ơn Thứ. Tool mới có vẻ có nhiều tính năng. Cuối tuần rảnh mình sẽ thử.
Về mã hóa code, mình đã hình dung ra ít nhiều. Nhưng nếu có thể, bạn trình bày cách nghĩ như dưới đây thì người đọc sẽ dễ hiểu hơn.
1. Tại sao phải mã hóa code cho khó hiểu. Để làm gì?
2. Cách mã hóa dựa trên suy nghĩ như thế nào? (Logic-cách nghĩ của cách mã hóa)
 
V

vothanhthu

Guest
1. Lúc ngồi viết tính năng này, Thứ cũng khó đắn đo vì nó đi ngược lại với tiêu chí dễ hiểu của Forum chúng ta, làm code dễ hiểu. Mã hóa code một phần nhằm bảo vệ chất xám, một phần làm giảm ham muốn người khác tò mò code. Nhưng mặt trái của nó là sẽ làm cho chính người viết code khó hiểu code thành phẩm của chính mình. Và Thứ khuyên mọi người nếu không thật sự cần dùng đến mã hóa code thì đừng dùng.
2. Trong code Thứ có ghi nguồn này lấy từ nguồn DataSafe. Tác giả viết code này không nhằm mục đích chia sẽ mà gây rối, khó hiểu cho người đọc. Thứ không chỉnh sửa code gốc nhiều một phần do ít thời gian nên mong mọi người thông cảm. Có thời gian Thứ sẽ phiên dịch lại.
Do ít thời gian nên Thứ vẫn chưa hiểu hết cách nghĩ của tác giả trong code này, cách nghĩ của code theo Thứ hiểu là họ sẽ chạy code dò code và đối chiếu với thư viện có sẵn (1 thư viện mã hóa code (A), 1 thư viện bỏ qua không mã hóa(B)) nếu đoạn kí tự đó nằm trong thư viện B thì sẽ bỏ qua không mã hóa, còn lại sẽ mã hóa theo thư viện A.
 
Sửa lần cuối bởi điều hành viên:
V

vothanhthu

Guest
Update ngày 07.02.20: Thêm tính năng đơn giản code, mở khóa Unviewable, công cụ căn lề Code, fix lỗi..
Bạn cần đăng nhập để thấy đính kèm

Thông tin phiên bản Update ProtectVBA ver 2.1:
1. Thêm tính năng đơn giản code: Tính năng này sẽ hoạt động giống với mã hóa code, nhưng các kí tự được mã hóa sẽ chỉ là các kí tự đơn giản (a,b,c...). Tính năng này ra đời kết hợp với công cụ "Căn lề code" sẽ giúp làm code dễ hiểu hơn sau khi đã mã hóa code khó hiểu.
2. Thêm tính năng mở khóa Unviewable: Tính năng này sẽ có thể mở khóa được một số dự án Unviewable bằng cách chỉnh sửa tệp VBAProject.bin.
3. Thêm công cụ "Căn lề Code": Công cụ này sẽ giúp code được cằn lề ngay ngắn theo code trong dự án. Có 2 sự lựa chọn là căn lề theo dự án và theo Module.
Trước khi căn lề:
Bạn cần đăng nhập để thấy đính kèm

Sau khi căn lề:
Bạn cần đăng nhập để thấy đính kèm

4. Fix lỗi: Bẫy lỗi nhiều hơn tính năng "Mã hóa Code", "Mở khóa Sheet" giúp code chạy trơn tru hơn.

Nhấn vào để tải về
 
Sửa lần cuối bởi điều hành viên:
V

vothanhthu

Guest
@Binana Bạn sử dụng Office mấy nhỉ, Addin mình hoạt động như một Đại bình thường thôi, không cần cài đặt gì cả nha. Bạn tái hiện lại thao tác giúp mình biết nhé
 
@Binana Bạn sử dụng Office mấy nhỉ, Addin mình hoạt động như một Đại bình thường thôi, không cần cài đặt gì cả nha. Bạn tái hiện lại thao tác giúp mình biết nhé
Em sử dụng office 2013 ạ
Về thao thác thì em vào DEVELOPER => Add-Ins => Chọn Browse... lấy đường dẫn của cái file tải về bên trên bài của anh ạ
 
V

vothanhthu

Guest
Binana Mình cũng sử dụng Office 2013. Bạn thử đóng hết ứng dụng, rồi mở trực tiếp Addin lên xem có thấy tab ProtectVBA không ?. Nếu được báo mình biết nhé !
 
@vothanhthu cũng đã làm theo anh nói. Nhưng lại không thấy nó có cái Tab đó. Em không hiểu lí do tại sao nữa.
 
V

vothanhthu

Guest
@Binana Bạn thử giúp Thứ tắt hết Addin, chỉ chừa lại mình Addin của Thứ, sau đó đóng Excel mở lại giúp Thứ xem nha. Thứ đang nghi ngờ do xung đột về code tạo Ribbon
 
Trạng thái
Không mở trả lời sau này.
Top