Tool ProtectVBA - Kiểm tra bảo mật mã nguồn VBA

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

vothanhthu

Guest
Tool mới nhất các bạn download ở đây:
====================================
1. Đặt vấn đề
Bài viết này của Thứ là một phần mở rộng của bài viết này . Do Thứ thấy Addin này đã phát triển nhiều hơn so với dự kiến ban đầu của nó và tên của tiêu đề cũng không còn phù hợp hết với các chức năng của Addin, nên Thứ quyết định trích Tool này thành một bài mới rõ ràng hơn. Các Update về Tool sau này của Thứ sẽ Update ở đây nhé !

Tool ProtectVBA sẽ bao gồm các tính năng bảo mật, mở khóa bảo mật... Tool này được sử dụng cho mục đích kiểm tra bảo mật code của các bạn, Thứ tuyệt đối không khuyến nghị các bạn dùng Tool vào mục đích xấu với bất cứ lý do gì.

2. Các chức năng chính:

Bạn cần đăng nhập để thấy hình ảnh

Khóa Unviewable: Tool sẽ tiến hành khóa dự án Excel của bạn dạng khóa Unviewable bằng cách chỉnh sửa byte.
Bạn cần đăng nhập để thấy hình ảnh


Ẩn Module: Module trong toàn bộ dự án bạn chọn (chỉ bao gồm Module, không bao gồm Class Module và Userform) sẽ được ẩn bằng các chỉnh sửa byte, bạn sẽ không thể xem cũng như chỉnh sửa code khi đã ẩn module

Bạn cần đăng nhập để thấy đính kèm


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. Có 2 dạng mã hóa: Mã hóa file mới và mã hóa file đang mở.

Bạn cần đăng nhập để thấy hình ảnh


Mở khóa Unviewable: Ngược lại với khóa Unviewable, tính năng này sẽ mở khóa một số dự án khóa dạng Unviewable.

Mở khóa VBAProtect: Tính năng này sẽ mở khóa password của các dự án khóa dạng VBAProject.

Hiện Module: Đang trong giai đoạn phát triển, hiện chưa dùng được.

Mở khóa Sheet: Tính năng này sẽ mở khóa Sheet hiện hành dạng khóa Protect Sheet.

Đơ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ăn lề code" sẽ giúp Code trở nên dễ đọc hơn sau khi đã mã hóa code khó hiểu.

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 hình ảnh

Sau khi căn lề:
Bạn cần đăng nhập để thấy hình ảnh


3. Tải Tool
Tool ProtectVBA
sẽ là công cụ hữu hiệu giúp các bạn trong tình huống khó khăn như: quên mật khẩu, tò mò khóa quên luôn cách mở... Và Thứ thật sự không khuyến nghị các bạn dùng Tool vào mục đích xấu.

NHẤN VÀO ĐỂ TẢI TOOL VỀ
20: Thay đổi giao diện từ Ribbon sang dạng Sheet, thêm ngôn ngữ Tiếng Anh
20: Chỉnh sửa Addin (.xlam) lại thành dạng Tool (.xlsb), fix lỗi hàm MsgUni trên 64bit
: Thêm tính năng đơn giản code, mở khóa Unviewable, công cụ căn lề Code, fix lỗi..
20: Thêm mã hóa code, một tính năng năng mở khóa code
Chúc các bạn có được những công cụ hữu ích trong VBA từ Tool ProtectVBA - Kiểm tra mã nguồn VBA
 

tuhocvba

Administrator
Thành viên BQT
Mở ra bị lỗi.
Bạn cần đăng nhập để thấy đính kèm


Nội dung thông báo lỗi:
Bạn cần đăng nhập để thấy đính kèm


Do đó nên tham khảo topic này để tìm cách khắc phục:

Thêm lỗi Ribbon:
Bạn cần đăng nhập để thấy đính kèm

Hiện trạng không mở file nào ngoài file addin này. Và máy mình thì không có addin nào khác.
Góp ý: Không nên xài Addin. Nên để dạng Tool (xlsm). Khi nào cần thì mở Tool lên thôi. Addin thường dùng cho những công cụ có tần suất sử dụng cao, ứng dụng trên nhiều workbook.
 
V

vothanhthu

Guest
Cảm ơn @tuhocvba nhé, Hàm API MsgUni này đúng là Thứ đã sơ sót bỏ qua khi chạy trên nền 64bit và 32bit.
Về góp ý, Thứ nhận thấy đúng như @tuhocvba nói, Addin sử dụng cho số lần làm việc có tần suất cao. Thứ sẽ nghiên cứu chuyển code lại sang dang TOOL (vì nhiều Code đang thực thi dạng với cấu trúc Addin).
 
V

vothanhthu

Guest
Update ngày 08.02.19: Chỉnh sửa Addin (.xlam) lại thành dạng Tool (.xlsb), fix lỗi hàm MsgUni trên 64bit
 

giaiphapvba

Administrator
Thành viên BQT
Vẫn chưa được đâu, Thứ ơi.
Bạn cần đăng nhập để thấy đính kèm
 

tuhocvba

Administrator
Thành viên BQT
Thử chức năng làm cho code khó hiểu, thì báo lỗi biên dịch code.
Bạn cần đăng nhập để thấy đính kèm
 

tuhocvba

Administrator
Thành viên BQT
Đây nhé:
Bạn cần đăng nhập để thấy đính kèm
 

Euler

Administrator
Thành viên BQT
Xem lại điều kiện để sử dụng StrPtr đi bạn ơi.
Bạn cần đăng nhập để thấy đính kèm
 
V

vothanhthu

Guest
Cảm ơn mọi người đã nhiệt tình kiểm tra lỗi. Do Thứ sài 32bit nên 64bit Thứ không Test trực tiếp được !
Mọi người giúp Thứ sửa đoạn code thành thế này
Mã:
#If Win64 Then
    Public Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, ByVal wType As Long) As Long
#Else
    Public Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, ByVal wType As Long) As Long
#End If

Public Function MsgUni(ByVal Chuoi As String, Optional Bieutuong As VbMsgBoxStyle = 64, _
                        Optional ByVal Tieude As String = "ProtectVBA", _
                        Optional ByVal Khac As LongPtr = 0) As VbMsgBoxResult
                        
MsgUni = MessageBoxW(Khac, StrPtr(UniVBA(Chuoi)), StrPtr(UniVBA(Tieude)), Bieutuong)
End Function
Nếu vẫn không được Thứ sẽ tìm hiểu thêm ><!
 

tuhocvba

Administrator
Thành viên BQT
Báo lỗi ở đây, vẫn không được:
Bạn cần đăng nhập để thấy đính kèm
 
V

vothanhthu

Guest
@tuhocvba Thứ tái cái trúc, viết lại toàn bộ hàm Msgbox Unicode cho VBA. Mọi người thử lại giúp Thứ. Thay toàn bộ đoạn này
Mã:
#If Win64 Then
    Public Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, ByVal wType As Long) As Long
#Else
    Public Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, ByVal wType As Long) As Long
#End If

Public Function MsgUni(ByVal Chuoi As String, Optional Bieutuong As VbMsgBoxStyle = 64, _
                        Optional ByVal Tieude As String = "ProtectVBA", _
                        Optional ByVal Khac As LongPtr = 0) As VbMsgBoxResult
                       
MsgUni = MessageBoxW(Khac, StrPtr(UniVBA(Chuoi)), StrPtr(UniVBA(Tieude)), Bieutuong)
End Function
Thành đoạn này:

Mã:
#If VBA7 Then
    Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
    Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#Else
    Private Declare Function GetActiveWindow Lib "user32" () As Long
    Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#End If

Function MsgUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly + vbInformation, Optional ByVal TitleUni As String = "ProtectVBA") As VbMsgBoxResult
   Dim BStrMsg, BStrTitle
   BStrMsg = StrConv(PromptUni, vbUnicode)
   BStrTitle = StrConv(TitleUni, vbUnicode)
   MsgUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
Kiểm tra giúp Thứ còn lỗi không nha, cố gắng hết sức !
 

tuhocvba

Administrator
Thành viên BQT
Có vẻ không có lỗi nữa. Thấy code đã được chuyển đổi theo kiểu tạp phế lù rồi.
Bạn cần đăng nhập để thấy đính kèm


Tuy nhiên thấy ra thông báo này mà không hiểu là gì?
Bạn cần đăng nhập để thấy đính kèm
 

Thanh Binh PV

Yêu THVBA
Em thử chạy mã hóa code với 1 file nhưng em thấy báo lỗi ở dòng này ạ (Lỗi can't find project or library). Anh xem giúp em thử.
Em tìm hiểu thì bị lỗi thiếu thư viện nhưng em vào tool -> references ... kiểm tra thì không có cái nào missing cả ạ. Em cảm ơn.

Mã:
Private Function are_different_files(f1_in As String, f2_in As String) As Boolean

    Dim f1 As String
    Dim f2 As String
    Dim result As Boolean

    f1 = Trim(LCase(f1_in))
    f2 = Trim(LCase(f2_in))

    If (Not has_prefix(f1, PS())) Then f1 = PS() & f1
    If (Not has_prefix(f2, PS())) Then f2 = PS() & f2

    If (has_suffix(f1, f2) Or has_suffix(f2, f1)) Then
        result = False
    Else
        result = True
    End If

    are_different_files = result

End Function
 
Sửa lần cuối:
V

vothanhthu

Guest
@Thanh Binh PV Bạn thử bật các dấu tích như hình nhé, đặc biệt là 2 vùng tô đỏ
Bạn cần đăng nhập để thấy hình ảnh
 

Kieu Manh

Yêu THVBA
1. Đặt vấn đề
Bài viết này của Thứ là một phần mở rộng của bài viết này . Do Thứ thấy Addin này đã phát triển nhiều hơn so với dự kiến ban đầu của nó và tên của tiêu đề cũng không còn phù hợp hết với các chức năng của Addin, nên Thứ quyết định trích Tool này thành một bài mới rõ ràng hơn. Các Update về Tool sau này của Thứ sẽ Update ở đây nhé !

Tool ProtectVBA sẽ bao gồm các tính năng bảo mật, mở khóa bảo mật... Tool này được sử dụng cho mục đích kiểm tra bảo mật code của các bạn, Thứ tuyệt đối không khuyến nghị các bạn dùng Tool vào mục đích xấu với bất cứ lý do gì.

2. Các chức năng chính:

Bạn cần đăng nhập để thấy hình ảnh

Khóa Unviewable: Tool sẽ tiến hành khóa dự án Excel của bạn dạng khóa Unviewable bằng cách chỉnh sửa byte.
Bạn cần đăng nhập để thấy hình ảnh


Ẩn Module: Module trong toàn bộ dự án bạn chọn (chỉ bao gồm Module, không bao gồm Class Module và Userform) sẽ được ẩn bằng các chỉnh sửa byte, bạn sẽ không thể xem cũng như chỉnh sửa code khi đã ẩn module

Bạn cần đăng nhập để thấy đính kèm


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. Có 2 dạng mã hóa: Mã hóa file mới và mã hóa file đang mở.

Bạn cần đăng nhập để thấy hình ảnh


Mở khóa Unviewable: Ngược lại với khóa Unviewable, tính năng này sẽ mở khóa một số dự án khóa dạng Unviewable.

Mở khóa VBAProtect: Tính năng này sẽ mở khóa password của các dự án khóa dạng VBAProject.

Hiện Module: Đang trong giai đoạn phát triển, hiện chưa dùng được.

Mở khóa Sheet: Tính năng này sẽ mở khóa Sheet hiện hành dạng khóa Protect Sheet.

Đơ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ăn lề code" sẽ giúp Code trở nên dễ đọc hơn sau khi đã mã hóa code khó hiểu.

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 hình ảnh

Sau khi căn lề:
Bạn cần đăng nhập để thấy hình ảnh


3. Tải Tool
Tool ProtectVBA
sẽ là công cụ hữu hiệu giúp các bạn trong tình huống khó khăn như: quên mật khẩu, tò mò khóa quên luôn cách mở... Và Thứ thật sự không khuyến nghị các bạn dùng Tool vào mục đích xấu.

NHẤN VÀO ĐỂ TẢI TOOL VỀ
: Chỉnh sửa Addin (.xlam) lại thành dạng Tool (.xlsb), fix lỗi hàm MsgUni trên 64bit
: 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
Chúc các bạn có được những công cụ hữu ích trong VBA từ Tool ProtectVBA - Kiểm tra mã nguồn VBA
Eo ôi có Ghi Kieu Manh trong đó tề hehehe
Code đó Mình tham khảo và viết thêm bên GPE
 

giaiphapvba

Administrator
Thành viên BQT
Dear anh/chị @Kieu Manh ,
Trước hết cảm ơn những đóng góp của anh/chị trong giới VBA nước nhà, chúng tôi rất biết ơn những cống hiến của anh chị trong suốt thời gian qua, mặc dù không phải trên diễn đàn này, nhưng khách quan, chúng tôi coi đóng góp của anh/chị là vô cùng quý báu để thế hệ hôm nay và mai sau tiếp nối tri thức đó. Trong khuôn khổ topic này, BTV @vothanhthu đã sử dụng nguồn từ anh/chị để thực hiện dự án này.

Vì đây là quy định của diễn đàn, trích dẫn đầy đủ đoạn code lấy từ đâu, của ai, cho nên có thể chủ topic đã trích dẫn như vậy.
Trong trích dẫn nếu có thiếu sót gì, mong anh/chị phản hồi với chúng tôi trong Box .
Rất mong nhận được sự hợp tác và lý giải của anh/chị.
 
Trạng thái
Không mở trả lời sau này.
Top