Khóa VBA với mật khẩu mở

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

YêuCN

Thành viên thường trực
Tham gia
17/7/19
Bài viết
378
Được thích
141
Đây là chương trình nhỏ mình đang nghiên cứu cho bảo mật code VBA thông qua mật khẩu mở tập tin Excel. Các bạn có quan tâm cho mình ý kiến, xin đừng ném đá.
*Lưu ý:
-Tập tin Trusted_Backup.reg dùng phục hồi đường dẫn tin cậy trong Excel.
-Khi file chứa mật khẩu được mở macro bên ngoài sẽ bị tắt. Dùng ResetVBA.exe để bật lại macro !

 

File đính kèm

  • KHOAVBA.rar
    1.6 MB · Đọc: 62
Lần chỉnh sửa cuối:
Vấn đề 2 tôi nghĩ nếu file Excel trên 5mb bản thân khi mở đã chậm !
Vấn 3 pass sẽ theo từng người!
1/ chốt lại thay vì nhập Pass Open khi mở file thì chuyển nó vào file DLL xong dùng Workbook.open mở nó lên nhập cái Pass thôi chứ không có gì đặc biệt cả

2/ còn chuyện khóa VBE loại ra 1 bên

3/ còn File RunMe.xlsb là chuyển Code VBA vào DLL và dấu pass trong đó xong dùng Workbook.open mở nó lên thôi
 
Upvote 0
Có cách đơn giản là dùng mật khẩu bí mật của Office ấy. Có mật khẩu mở file nhưng khi mở file không cần nhập mật khẩu -> khóa VBA ngon.
 
Upvote 0
Có cách đơn giản là dùng mật khẩu bí mật của Office ấy. Có mật khẩu mở file nhưng khi mở file không cần nhập mật khẩu -> khóa VBA ngon.
Chịu ................................ chưa biết :p

còn cách của bài số 1 là dấu PassOpen trong DLL thôi rồi dùng WorkBook.Open mở nó lên xong dùng hàm API trong File RunMe.xlsb chạy vòng lặp liên tục không cho xem VBA đồng thời ngăn đổi pass hay xóa Pass khi mở File thôi
 
Upvote 0
Cách
Có cách đơn giản là dùng mật khẩu bí mật của Office ấy. Có mật khẩu mở file nhưng khi mở file không cần nhập mật khẩu -> khóa VBA ngon.
Cách này không an toàn dễ bị bẻ.
Bài đã được tự động gộp:

Chịu ................................ chưa biết :p

còn cách của bài số 1 là dấu PassOpen trong DLL thôi rồi dùng WorkBook.Open mở nó lên xong dùng hàm API trong File RunMe.xlsb chạy vòng lặp liên tục không cho xem VBA đồng thời ngăn đổi pass hay xóa Pass khi mở File thôi
Bạn đoán không đúng rồi!
 
Upvote 0
Nếu không khoá vbe họ vào xem code dc hoặc chạy code trong đó như cái vb7.dll mà Thangcuanh đã crack !
 
Upvote 0
Mình thấy nó

Tại sao không bạn !
thử tạo mã lỗi xong chạy nó xem

còn mở File PassOpen chắc chắn là dùng WorkBook.Open rồi còn cách khác tôi không biết

1683776833686.png

Mã:
Sub MoFileExcelBangPassword()
    Dim filePath As String
    Dim password As String
    filePath = "Đường_dẫn_tới_file_excel"
    password = "Mật_khẩu_mở_file"
   
    ' Tạo một đối tượng Workbook để đại diện cho tệp Excel
    Dim wb As Workbook
    Set wb = Workbooks.Open(filePath, False, True,,, password)
   
    ' Thực hiện các thao tác với tệp Excel đã mở ở đây
   
    ' Đóng tệp Excel
    wb.Close SaveChanges:=False
End Sub

Cách 2: Sử dụng phương pháp Application.Union

Mã:
Sub MoFileExcelBangPassword()
    Dim filePath As String
    Dim password As String
    filePath = "Đường_dẫn_tới_file_excel"
    password = "Mật_khẩu_mở_file"
   
    ' Mở ứng dụng Excel
    Dim excelApp As Object
    Set excelApp = CreateObject("Excel.Application")
   
    ' Tạo một đối tượng Workbook để đại diện cho tệp Excel
    Dim wb As Object
    Set wb = excelApp.Workbooks.Open(filePath)
   
    ' Gửi mật khẩu để mở tệp
    excelApp.Union("password").Range("A1").Value = password
   
    ' Xác nhận mật khẩu
    excelApp.Union("password").Range("A1").Select
    excelApp.SendKeys "^{ENTER}"
   
    ' Thực hiện các thao tác với tệp Excel đã mở ở đây
   
    ' Đóng tệp Excel
    wb.Close SaveChanges:=False
   
    ' Đóng ứng dụng Excel
    excelApp.Quit
End Sub

Lưu ý rằng khi sử dụng mã VBA để mở tệp Excel bảo vệ mật khẩu, bạn cần chắc chắn rằng bạn đã cung cấp mật khẩu chính xác. Nếu mật khẩu không đúng, quy trình mở tệp sẽ không thành công.

1683776998356.png
 
Lần chỉnh sửa cuối:
Upvote 0
Thronged

Trước khi phân phối bạn phải kiểm soát lỗi rồi đóng gói chứ còn nếu không khoá vbe thì đâu cần bảo vệ làm gì nữa.
hiểu sai ý tôi rồi cứ cho là bạn làm hoàn hảo đi thì họ mở file của bạn lên xong họ mở tiếp file của họ lên rồi chạy mã cố tình làm lỗi thì sao

chốt lại mở File có Password Open xong chạy code thì ai đặt Pas đó dùng xong không cho ai cả là tốt nhất

và file lớn trên 5 MB + code họ viết trong đó nữa vvv ... rảnh tôi vẽ ra cho mà tính thôi
 
Upvote 0
hiểu sai ý tôi rồi cứ cho là bạn làm hoàn hảo đi thì họ mở file của bạn lên xong họ mở tiếp file của họ lên rồi chạy mã cố tình làm lỗi thì sao

chốt lại mở File có Password Open xong chạy code thì ai đặt Pas đó dùng xong không cho ai cả là tốt nhất

và file lớn trên 5 MB + code họ viết trong đó nữa vvv ... rảnh tôi vẽ ra cho mà tính thôi
Nói chung nhiều trường hợp xảy ra nên cần các bạn dùng thử và cho ý kiến thì sẽ trực quan hơn!
 
Upvote 0
Nói chung nhiều trường hợp xảy ra nên cần các bạn dùng thử và cho ý kiến thì sẽ trực quan hơn!
Rảnh viết và khám phá được gì cứ làm vừa là thú vui và làm việc có ích mà suy cho cùng không viết không phá làm sao ra

còn chuyện nói a nói b thì kệ người ta .............. vấn đề là ai nói đúng thì nên cảm ơn còn sai thì nói lại hay giải thích cho ai đó biết

đừng vì đó mà buồn hay phật cảm sẽ không bao giờ tiến bộ được ... thông qua gạch đá tìm ra giải pháp mới có tính thiết phục người khác
 
Upvote 0
Giải pháp bảo mật của tôi là:
1. Viết dll bằng VB6.
2. Ghi Mã máy và Mã kích hoạt của người dùng lên Registry.
3. Mã hóa Mã máy + giải mã Mã kích hoạt ở bước 2.
4. So khớp 2 kết quả ở bước 3:
- Nếu khớp: User đã có bản quyền -> tiếp tục dùng.
- Không khớp: Ghi số lần dùng code lên đâu đó ở Registry
+ Cảnh báo số lần còn được dùng (nếu còn)
+ Xóa file nếu cố dùng tiếp đến mức quá số lần quy định.

Tất nhiên là giải pháp không hoàn hảo vì nếu người dùng tìm ra được khóa Registry thì có thể đặt lại số lần dùng về 0, nhưng liệu người dùng có tìm ra đúng chỗ trong rừng khóa Registry kia? Còn với dll thì chỉ dịch ngược để xem (nếu dịch được) chứ không thể sửa dll để vô hiệu hóa code phòng thủ trong đó.
 
Upvote 0
Còn với dll thì chỉ dịch ngược để xem (nếu dịch được) chứ không thể sửa dll để vô hiệu hóa code phòng thủ trong đó.

Chỗ này có cái gọi là bẻ khóa (crack), rồi dùng thoải mái. :)

Tất nhiên là giải pháp không hoàn hảo vì nếu người dùng tìm ra được khóa Registry thì có thể đặt lại số lần dùng về 0, nhưng liệu người dùng có tìm ra đúng chỗ trong rừng khóa Registry kia?

Chỗ này rất đơn giản, người ta xuất registry trước và sau 1 lần chạy bất kỳ, đối chiếu sự sai khác là tìm ra, rồi chỉ cần 1 đoạn code trước khi chạy code chính thì ghi lại giá trị khóa registry là được.

Cách hay hơn là cấp bản quyền từ server, yêu cầu phải có internet.
 
Upvote 0
Upvote 0
Bẻ khóa dll nhưng có sửa được không @befaint ?

Cái này phổ biến lắm mà anh. Người ta bẻ khóa phần mềm tràn lan trên mạng đó. Windows còn bẻ khóa được nữa là.
Ví dụ một phần mềm: ollydbg

Cái này có vẻ giống việc kiểm tra phiên bản ứng dụng rồi tự động cập nhật phải không befaint?
Kiểu như vậy anh.
Cần một nơi lưu thông tin người dùng, thời hạn sử dụng, loại phiên bản, các thông tin khác... Trước khi chạy ứng dụng thì đối chiếu thông tin, hợp lệ thì chạy tiếp. Từ server mình có thể cấp loại bản quyền, thời gian sử dụng, thông tin cập nhật phần mềm...
 
Upvote 0
Cái này phổ biến lắm mà anh. Người ta bẻ khóa phần mềm tràn lan trên mạng đó. Windows còn bẻ khóa được nữa là.
Ví dụ một phần mềm: ollydbg
Xem sơ qua cách người ta dùng ollydbg thì quả là chỉ có dân chuyên chứ tay mơ thì đọc cách làm còn chưa hiểu được nữa là.
 
Upvote 0
Cần một nơi lưu thông tin người dùng, thời hạn sử dụng, loại phiên bản, các thông tin khác... Trước khi chạy ứng dụng thì đối chiếu thông tin, hợp lệ thì chạy tiếp. Từ server mình có thể cấp loại bản quyền, thời gian sử dụng, thông tin cập nhật phần mềm...
Tôi cũng dùng cách cập nhật ứng dụng qua internet mà lại tại sao không không nghĩ ra việc lưu luôn các thông tin bản quyền trên đây nhỉ """:::":\
Screen Shot 2023-05-11 at 14.41.21.png
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom