Vấn đề bảo mật VBA trong Excel có vấn đề nghiêm trọng.

Liên hệ QC

giaiphap

==(^o^)==
Tham gia
12/3/07
Bài viết
5,805
Được thích
6,359
Donate (Momo)
Donate
Giới tính
Nam
Các cao thủ cho mình hỏi xem, theo mình thấy bất kỳ File Excel nào chứa code VBA và đặt mật khẩu đều được bé khóa rất dễ dàng. Vậy vấn đề bảo mật Code VBA là không thể đúng không (Ở đây không đề cập đến DLL)? Chính vì vậy đa số code VBA mình đều chuyển sang Project unviewable, vậy những file đã chuyển sang Project unviewable có bị bẻ khóa dễ dàng hay không?
 
Các cao thủ cho mình hỏi xem, theo mình thấy bất kỳ File Excel nào chứa code VBA và đặt mật khẩu đều được bé khóa rất dễ dàng. Vậy vấn đề bảo mật Code VBA là không thể đúng không (Ở đây không đề cập đến DLL)? Chính vì vậy đa số code VBA mình đều chuyển sang Project unviewable, vậy những file đã chuyển sang Project unviewable có bị bẻ khóa dễ dàng hay không?
Câu trả lời có trên GPE ...........Bao la...........
 
Các cao thủ cho mình hỏi xem, theo mình thấy bất kỳ File Excel nào chứa code VBA và đặt mật khẩu đều được bé khóa rất dễ dàng. Vậy vấn đề bảo mật Code VBA là không thể đúng không (Ở đây không đề cập đến DLL)? Chính vì vậy đa số code VBA mình đều chuyển sang Project unviewable, vậy những file đã chuyển sang Project unviewable có bị bẻ khóa dễ dàng hay không?

lúc trước mình "mở" cho 1 bạn ở GPE nhờ bài này (#4), ko phải dễ ăn đối với 1 người bình thường --=0

http://www.mrexcel.com/forum/excel-questions/474204-project-unviewable-excel-add.html
 
Bảo mật trên excel mà tra trên GPE thì có mà hàng ... đống và kết quả đều là 'bẻ phát một' ( ngay cả bản quyền win còn crack được thì nói chi tới máy cái excel cỏn con này ) . Nhớ lại lúc trước mới biết được VBA thì suốt ngày mình cứ chạy theo code két bảo mật thành quả mình làm được nhưng tham gia GPE 1 thời gian thì thấy để thời gian đó ngồi nguyên cứu những vấn đề lạ, tìm cách tối ưu nhất cho code ... thì còn hữu ích hơn.
 
Có một cách Mình nghĩ cũng không tốt lắm....cho File Excel vào USB xong.... cho vào két Sắt 500kg khóa lại .......xong gặp mấy anh hàm gió đá .....khò két thì cũng Tèo téo teo....--=0--=0:=\+
 
Không có gì là không thể cả, bạn thử nhìn đoạn code minh họa một Sub dưới đây xem có ý niệm gì không nhé.
Mã:
Sub Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡å(): Dim Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø: Application.EnableEvents = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: Application.CutCopyMode = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: Application.ScreenUpdating = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: ActiveSheet.Unprotect ActiveSheet.name: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø = Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ž).Row - Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Select: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Copy: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Insert: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø + Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü).ClearContents: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿å & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø + Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü).ClearContents: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø = Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßð).End(xlDown).RowIf Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø > Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßñ ThenRange(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßö).Value = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß§If Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø > Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß÷ Then Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßø).AutoFill Destination:=Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßû & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø)End If: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßä = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: ActiveSheet.Protect ActiveSheet.name: Application.CutCopyMode = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Application.ScreenUpdating = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Application.EnableEvents = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Activate: End Sub
Với các ngôn ngữ dạng script (không thể biên dịch thành mã máy) thì hiện nay người ta có kỹ thuật làm rối code khiến cho việc đọc - hiểu mã là rất khó khăn ngay cả với chính người tạo mã gốc.
 
Lần chỉnh sửa cuối:
Không biết code bài 9 trên Excel có chạy được không .... nếu được bạn cho một code test thử
xin cảm ơn
 
Lần chỉnh sửa cuối:
Không có gì là không thể cả, bạn thử nhìn đoạn code minh họa một Sub dưới đây xem có ý niệm gì không nhé.
Mã:
Sub Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡å(): Dim Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø: Application.EnableEvents = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: Application.CutCopyMode = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: Application.ScreenUpdating = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: ActiveSheet.Unprotect ActiveSheet.name: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø = Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ž).Row - Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Select: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Copy: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Insert: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø + Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü).ClearContents: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿å & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø + Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü).ClearContents: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø = Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßð).End(xlDown).RowIf Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø > Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßñ ThenRange(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßö).Value = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß§If Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø > Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß÷ Then Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßø).AutoFill Destination:=Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßû & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø)End If: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßä = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: ActiveSheet.Protect ActiveSheet.name: Application.CutCopyMode = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Application.ScreenUpdating = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Application.EnableEvents = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Activate: End Sub
Với các ngôn ngữ dạng script (không thể biên dịch thành mã máy) thì hiện nay người ta có kỹ thuật làm rối code khiến cho việc đọc - hiểu mã là rất khó khăn ngay cả với chính người tạo mã gốc.

học tiểu học thì không thể giải toán trung học
như bài #3 của bạn HyperLink, mấy bạn mới vào nghề cũng đổ mồ hôi hột chứ ko chơi
cách của bác tôi tin là những người chuyên nghiệp cũng có cách hóa giải
vỏ quýt dầy thì có móng tay nhọn mà.........
ăn thua là móng của mình nhọn tới đâu thôi
 
Bảo mật trên excel mà tra trên GPE thì có mà hàng ... đống và kết quả đều là 'bẻ phát một' ( ngay cả bản quyền win còn crack được thì nói chi tới máy cái excel cỏn con này ) . Nhớ lại lúc trước mới biết được VBA thì suốt ngày mình cứ chạy theo code két bảo mật thành quả mình làm được nhưng tham gia GPE 1 thời gian thì thấy để thời gian đó ngồi nguyên cứu những vấn đề lạ, tìm cách tối ưu nhất cho code ... thì còn hữu ích hơn.
Vậy bạn biết bẻ khóa file đã được Project unviewable chỉ cách được không? Gợi ý cũng được.
lúc trước mình "mở" cho 1 bạn ở GPE nhờ bài này (#4), ko phải dễ ăn đối với 1 người bình thường --=0
http://www.mrexcel.com/forum/excel-questions/474204-project-unviewable-excel-add.html
Cái này chỉ sử dụng cho Excel 2003 thôi, bây giờ người ta sử dụng Excel 2013 nhiều lắm rồi bạn.
 
Lần chỉnh sửa cuối:
Không có gì là không thể cả, bạn thử nhìn đoạn code minh họa một Sub dưới đây xem có ý niệm gì không nhé.
Mã:
Sub Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡å(): Dim Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø: Application.EnableEvents = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: Application.CutCopyMode = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: Application.ScreenUpdating = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: ActiveSheet.Unprotect ActiveSheet.name: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø = Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ž).Row - Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Select: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Copy: Rows(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßï & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Insert: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø + Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü).ClearContents: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿å & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø + Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ü).ClearContents: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø = Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßð).End(xlDown).RowIf Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø > Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßñ ThenRange(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßö).Value = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß§If Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø > Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß÷ Then Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßø).AutoFill Destination:=Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßû & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø)End If: Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßä = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ý: ActiveSheet.Protect ActiveSheet.name: Application.CutCopyMode = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Application.ScreenUpdating = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Application.EnableEvents = Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ßå: Range(Þߧäåæçëíîïðñö÷øûüýÿœšžƒµ¡¿ß & Þߧäåæçëíîïðñö÷øûüýÿœšžƒµßø).Activate: End Sub
Với các ngôn ngữ dạng script (không thể biên dịch thành mã máy) thì hiện nay người ta có kỹ thuật làm rối code khiến cho việc đọc - hiểu mã là rất khó khăn ngay cả với chính người tạo mã gốc.
Cái này , một lần mình đã gặp và không biết người ta chuyển đổi thế nào ? Cái hay là nó chuyển riêng một code nào đó mà không ảnh hưởng đến font của các code khác . Không biết bạn bạn sưu tầm được code này, hay đã tự chuyển đổi được ? Nếu không có gì bí mật bạn có thể bật mí được không ?
 
Cái dạng đó là có 1 phần mền chuyển hoá code thành các kí tự, cái này mấy năm trước tôi cũng có tìm hiểu, nhưng phần mềm chuyển code thì phải tốn tiền mua mới chuyển được. Chưa kiếm được cái nào free hết
 
Lần chỉnh sửa cuối:
Không dại gì đụng đầu vào tường đau lắm.
Người giỏi thì chẳng thèm đọc code người khác. Người kém thì có đọc cũng như lạc vào rừng rậm thôi. Mã hóa mần chi cho mệt chứ.
 
Không dại gì đụng đầu vào tường đau lắm.
Người giỏi thì chẳng thèm đọc code người khác. Người kém thì có đọc cũng như lạc vào rừng rậm thôi. Mã hóa mần chi cho mệt chứ.
Vẫn có những thứ hiếu kỳ chứ bạn ? Khó quá cũng biết nó vượt sức mình , lần sau không "đụng..." nữa .
 
học tiểu học thì không thể giải toán trung học
như bài #3 của bạn HyperLink, mấy bạn mới vào nghề cũng đổ mồ hôi hột chứ ko chơi
cách của bác tôi tin là những người chuyên nghiệp cũng có cách hóa giải
vỏ quýt dầy thì có móng tay nhọn mà.........
ăn thua là móng của mình nhọn tới đâu thôi
Không biết bạn suy nghĩ thế nào chứ tôi có niềm tin rằng những người có đủ khả năng, để lần mò ra logic những đoạn code được mã hóa này sẽ chẳng bao giờ đi làm những công việc mà họ cho là tầm phào đó đâu. Thay vì bỏ công sức, thời gian ra để giải mã những thứ lằng nhằng đó thì họ có thể dùng điều đó để tạo ra những thứ có giá trị hơn nhiều lần lắm. --=0

Code minh họa lỗi khi trải qua copy/paste 2 lần (source->web->source)nên tôi gửi 1 file minh họa nguyên gốc. Hiển nhiên là file này bị giản lược nên không có gì chạy được. Bạn có thể thử test riêng lẻ xem có sub nào chạy được không (hình như có mấy cái sub đơn giản cuối cùng chay được ấy).
 

File đính kèm

Vẫn có những thứ hiếu kỳ chứ bạn ? Khó quá cũng biết nó vượt sức mình , lần sau không "đụng..." nữa .

Hình như nguyên tắc của ngôn ngữ lập trình là biến không được có khoảng trắng, cho nên nếu gặp biến mì tôm cua thì mình sẽ thử dùng chiêu replace để xử chắc là được. Nhưng có lẽ là không thử vì làm biếng lắm.
Mình thấy học được thuật toán của các anh chị em trên GPE để phục vụ cho công việc là hạnh phúc lắm rồi.
 
Web KT

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

Back
Top Bottom