V
vothanhthu
Guest
Bài viết được viết đựa trên những gì Thứ hiểu và biết về thế giới bảo mật code VBA. Bảo mật mạnh hay yếu là do khả năng mỗi người, nên mọi nội dung mang tính chủ quan của Thứ. Các bạn đọc làm tư liệu tham khảo, rồi từ đó nghiên cứu để tìm được phương pháp bảo mật code tốt nhất cho bản thân mình. Oke, chúng ta bắt đầu nào !.
Khi ta lập trình một chương trình, một Tool VBA là cả một công sức, quá trình đầu tư chất xám, bảo vệ chất xám là một nhu cầu không thể chối cãi được trong xã hội nói chung và trong lập trình VBA nói riêng. Do đó, Thứ xin phép được tổng hợp lại các phương pháp bảo mật VBA trên thế giới hiện vẫn đang sử dụng. Trong bài viết, chúng ta đi từ cấp độ bảo vệ thấp đến cao cho dễ hình dung!
1. VBAProject
Phải nói, đây là cấp độ bảo mật đơn giản, sơ khai nhất trong VBA. Nó nằm sẵn trong các chức năng bảo mật của VBA trong Excel
2. Unviewable
Đây là cấp độ bảo mật cực kì thông dụng. Phương pháp này sẽ mã hóa một số Byte làm cho ta không thể mở được dự án VBA để xem được code bên trong. Phương pháp này cũng cũng có rất nhiều cách thực hiện, mỗi cách sẽ lại cần một vài biến hóa nếu như muốn mở khóa.
3. Mã hóa code (Encrypt code)
Đây là phương pháp được dùng để mã hóa các tên, biến có thể đổi tên được thành các chuỗi kí tự cực kì khó hiểu, việc này làm cho việc đọc và hiểu code trở nên cực kì khó khăn. Thứ xếp phương pháp này tốt hơn Unviewable là bởi vì, code được mã hóa mặc dù có thể replace nhưng việc đọc để hiểu là rất mệt...
4. Ẩn Module
Đây là phương pháp sẽ ẩn toàn bộ Module (chỉ Module, không bao gồm Class Module và UserForm) trong dự án VBA. Về mặt tổng thể, phương pháp này khá khó để mở khóa vì cần biết chính xác tên các Module, nếu như gặp người ẩn Module có năng lực ẩn luôn mọi nguồn xem tên Module sẽ là cực kì khó khăn khi bạn muốn hiện Module lại.
Cả 3 phương pháp bảo mật trên đều nằm trong
5. Tạo file Exe cho VBA
Đây là phương pháp được dùng để nén một file Excel vào trong một file .Exe. Phương pháp này bắt buộc dùng phần mềm bên thứ 3 để thực hiện việc nén, khi tạo ra file .exe thì không cần phần mềm bên thứ 3 vẫn mở được bình thường chỉ cần có Excel . Khi chạy file .exe, file excel sẽ được giải nén và mở lên như một file excel thông thường nhưng không thể xem dự án VBA bên trong (mất hoàn toàn dự án VBA trong file). Khi Save as vẫn sẽ tạo ra file .exe luôn.
6. Lập trình DLL cho VBA
Đây có thể nói là phương pháp bảo mật cao nhất tính đến thời điểm hiện tại. Toàn bộ Code chủ đạo của bạn sẽ nằm trong file DLL, khả năng bảo mật như thế nào là do file DLL ấy quyết định. Do khả năng bảo mật của code phụ thuộc hoàn vào DLL, cho nên ngôn ngữ viết ra file DLL đó là cực kì quan trọng quyết định khả năng bảo mật. Thứ sẽ xếp loại chúng lần lượt từ thấp đến cao như sau:
6.1. VB6 cho VBA
Đây là ngôn ngữ láng giềng với VBA, cấu trúc code nhìn chung là rất giống nhau, nên lập trình DLL trên VB6 cho VBA là cực kì dễ dàng. Thứ cũng có một bài viết nói về lập trình DLL cho VBA trên VB6 tại
6.2. VB.NET cho VBA
Khác với VB6, VB.Net được Bác Bill chăm sóc rất kỹ và vẫn còn đang được phát triển tính đến thời điểm hiện tại. VB.Net hỗ trợ đa nền tảng từ 32bit cho đến 64bit. Cấu trúc VB.Net và VB6 có nhiều điểm tương đồng, không quá giống nhau nhưng cũng không quá khó để làm quen nếu như các bạn đã quen với cấu trúc VB6. Nếu như bạn đã hiểu cách viết DLL cho VBA trên VB6 thì việc viết DLL trên VB.Net là tương đối dễ. Khả năng bảo mật khi viết DLL trên VB.Net là cao hơn nhiều so với VB6
6.3. C/C++ cho VBA
Đây là ngôn ngữ viết DLL cho VBA cực kì tốt. Một file DLL viết bằng C/C++ sẽ cho ra khả năng bảo mật cao, rất khó dịch ngược. Tuy nhiên, hạn chế là về cấu trúc của C/C++ hoàn toàn khác so với VBA. Học C/C++ so với VBA chẳng khác gì việc ta đang người Việt Nam mà học Tiếng Trung Quốc. Đó là hạn chế lớn khi viết C/C++ cho VBA, nhưng đổi lại là khả năng bảo mật tuyệt vời của nó.
6.4. Delphi cho VBA
Tương tự như viết C/C++ cho VBA. Bảo mật cao, nhưng cấu trúc code khác hoàn toàn VBA.
Vậy theo bạn, đâu là phương pháp bảo mật tốt nhất?, hãy cho mình biết qua phần thảo luận nhé !
Hy vọng bạn đã có được những kiến thức bổ ích từ bài viết Thế nào là bảo vệ code VBA tốt nhất ?
Khi ta lập trình một chương trình, một Tool VBA là cả một công sức, quá trình đầu tư chất xám, bảo vệ chất xám là một nhu cầu không thể chối cãi được trong xã hội nói chung và trong lập trình VBA nói riêng. Do đó, Thứ xin phép được tổng hợp lại các phương pháp bảo mật VBA trên thế giới hiện vẫn đang sử dụng. Trong bài viết, chúng ta đi từ cấp độ bảo vệ thấp đến cao cho dễ hình dung!
1. VBAProject
Phải nói, đây là cấp độ bảo mật đơn giản, sơ khai nhất trong VBA. Nó nằm sẵn trong các chức năng bảo mật của VBA trong Excel
Bạn cần đăng nhập để thấy đính kèm
2. Unviewable
Đây là cấp độ bảo mật cực kì thông dụng. Phương pháp này sẽ mã hóa một số Byte làm cho ta không thể mở được dự án VBA để xem được code bên trong. Phương pháp này cũng cũng có rất nhiều cách thực hiện, mỗi cách sẽ lại cần một vài biến hóa nếu như muốn mở khóa.
Bạn cần đăng nhập để thấy đính kèm
3. Mã hóa code (Encrypt code)
Đây là phương pháp được dùng để mã hóa các tên, biến có thể đổi tên được thành các chuỗi kí tự cực kì khó hiểu, việc này làm cho việc đọc và hiểu code trở nên cực kì khó khăn. Thứ xếp phương pháp này tốt hơn Unviewable là bởi vì, code được mã hóa mặc dù có thể replace nhưng việc đọc để hiểu là rất mệt...
Bạn cần đăng nhập để thấy đính kèm
4. Ẩn Module
Đây là phương pháp sẽ ẩn toàn bộ Module (chỉ Module, không bao gồm Class Module và UserForm) trong dự án VBA. Về mặt tổng thể, phương pháp này khá khó để mở khóa vì cần biết chính xác tên các Module, nếu như gặp người ẩn Module có năng lực ẩn luôn mọi nguồn xem tên Module sẽ là cực kì khó khăn khi bạn muốn hiện Module lại.
Cả 3 phương pháp bảo mật trên đều nằm trong
Bạn cần đăng nhập để thấy link
do Thứ viết, các bạn có thể xem tại
Bạn cần đăng nhập để thấy link
Bạn cần đăng nhập để thấy hình ảnh
5. Tạo file Exe cho VBA
Đây là phương pháp được dùng để nén một file Excel vào trong một file .Exe. Phương pháp này bắt buộc dùng phần mềm bên thứ 3 để thực hiện việc nén, khi tạo ra file .exe thì không cần phần mềm bên thứ 3 vẫn mở được bình thường chỉ cần có Excel . Khi chạy file .exe, file excel sẽ được giải nén và mở lên như một file excel thông thường nhưng không thể xem dự án VBA bên trong (mất hoàn toàn dự án VBA trong file). Khi Save as vẫn sẽ tạo ra file .exe luôn.
Bạn cần đăng nhập để thấy đính kèm
6. Lập trình DLL cho VBA
Đây có thể nói là phương pháp bảo mật cao nhất tính đến thời điểm hiện tại. Toàn bộ Code chủ đạo của bạn sẽ nằm trong file DLL, khả năng bảo mật như thế nào là do file DLL ấy quyết định. Do khả năng bảo mật của code phụ thuộc hoàn vào DLL, cho nên ngôn ngữ viết ra file DLL đó là cực kì quan trọng quyết định khả năng bảo mật. Thứ sẽ xếp loại chúng lần lượt từ thấp đến cao như sau:
6.1. VB6 cho VBA
Đây là ngôn ngữ láng giềng với VBA, cấu trúc code nhìn chung là rất giống nhau, nên lập trình DLL trên VB6 cho VBA là cực kì dễ dàng. Thứ cũng có một bài viết nói về lập trình DLL cho VBA trên VB6 tại
Bạn cần đăng nhập để thấy link
, các bạn có thể ghé qua đọc nha. Trong bài viết mình cũng nói rất rõ, VB6 chỉ hỗ trợ nền tảng 32bit và đã bị Bác Bill ngưng hỗ trợ từ năm 1998 nên khả năng bảo mật phương pháp này chỉ trên ẩn Module và Exe cho VBA một chút.6.2. VB.NET cho VBA
Khác với VB6, VB.Net được Bác Bill chăm sóc rất kỹ và vẫn còn đang được phát triển tính đến thời điểm hiện tại. VB.Net hỗ trợ đa nền tảng từ 32bit cho đến 64bit. Cấu trúc VB.Net và VB6 có nhiều điểm tương đồng, không quá giống nhau nhưng cũng không quá khó để làm quen nếu như các bạn đã quen với cấu trúc VB6. Nếu như bạn đã hiểu cách viết DLL cho VBA trên VB6 thì việc viết DLL trên VB.Net là tương đối dễ. Khả năng bảo mật khi viết DLL trên VB.Net là cao hơn nhiều so với VB6
6.3. C/C++ cho VBA
Đây là ngôn ngữ viết DLL cho VBA cực kì tốt. Một file DLL viết bằng C/C++ sẽ cho ra khả năng bảo mật cao, rất khó dịch ngược. Tuy nhiên, hạn chế là về cấu trúc của C/C++ hoàn toàn khác so với VBA. Học C/C++ so với VBA chẳng khác gì việc ta đang người Việt Nam mà học Tiếng Trung Quốc. Đó là hạn chế lớn khi viết C/C++ cho VBA, nhưng đổi lại là khả năng bảo mật tuyệt vời của nó.
6.4. Delphi cho VBA
Tương tự như viết C/C++ cho VBA. Bảo mật cao, nhưng cấu trúc code khác hoàn toàn VBA.
Vậy theo bạn, đâu là phương pháp bảo mật tốt nhất?, hãy cho mình biết qua phần thảo luận nhé !
Hy vọng bạn đã có được những kiến thức bổ ích từ bài viết Thế nào là bảo vệ code VBA tốt nhất ?
Sửa lần cuối bởi điều hành viên: