Giúp code cấp key bản quyền cho file excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

kcphuong

Thành viên mới
Tham gia
11/2/14
Bài viết
16
Được thích
0
kisper

tai sao khong tao key duoc nhi
 
Lần chỉnh sửa cuối:
Mình có một file excel có code, h do đặt tính công việc mình muốn khóa file này lại bằng 1 serial tương tự như của phần mêm kapesky, và 1 file excel khi mở lên thì phải cấp serial này có thời hạn sử dụng là 1 năm.hết hạn sử dụng thì phải cấp lại số serial mới.
Rất mong nhận được nhiều ý kiến đóng góp của mọi người.

Tôi chưa hình dung được bạn muốn khóa thế nào. Bạn phải dùng code để kiểm tra, mà tôi có thể khóa macro.
 
Upvote 0
Ý mình là :
+ ĐẦu tiên mình muốn có một đoan code để khi lần đầu tiên mở file lên thì phải cung cấp một số serial do mình cài đặt trước và giớ hạn số serial cấp lần đầu đó chỉ sử dụng được file trong thời gian một năm, sau một năm thì file excel đó không sử dụng được nữa -> phải cấp serial lại đó bạn
 
Upvote 0
Ý mình là :
+ ĐẦu tiên mình muốn có một đoan code để khi lần đầu tiên mở file lên thì phải cung cấp một số serial do mình cài đặt trước và giớ hạn số serial cấp lần đầu đó chỉ sử dụng được file trong thời gian một năm, sau một năm thì file excel đó không sử dụng được nữa -> phải cấp serial lại đó bạn

Thế nếu người ta không chạy code của bạn (Disable Macros) rồi bạn làm gì được người ta?
 
Upvote 0
Ý mình là :
+ ĐẦu tiên mình muốn có một đoan code để khi lần đầu tiên mở file lên thì phải cung cấp một số serial do mình cài đặt trước và giớ hạn số serial cấp lần đầu đó chỉ sử dụng được file trong thời gian một năm, sau một năm thì file excel đó không sử dụng được nữa -> phải cấp serial lại đó bạn

Thì tôi đã nói với bạn rồi. Bạn phải có code để kiểm tra. Tức bạn định ghi serial ở "đâu đó" rồi khi tôi mở tập tin thì code của bạn kiểm tra xem serial tôi nhập vào có khớp không, nếu khớp thì thời gian còn không. Thế chứ gì? Nhưng nếu tôi khóa macro thì code của bạn đâu có cơ hội chạy để mà kiểm tra?


Còn nếu bạn cứ mốn làm thì bạn hãy cho vd. bạn ghi serial ở đâu (sẽ dùng để so sánh với serial mà tôi sẽ nhập), và ghi thời gian (dùng để kiểm tra xem đã qua 1 năm chưa) ở đâu. Lúc đó sẽ có người viết code cho bạn. Mà nếu đúng theo như tôi hiểu thì code kiểm tra bạn cũng viết được vì so sánh là chuyện quá dễ.
 
Upvote 0
ok đúng rồi bạn.nhưng có cách nào để khi khóa macro thì code tự động bị delete hết không bạn, nếu có xin chỉ giáo nha.
File dính kiemf bên dưới :
http://www.mediafire.com/download/1916ew1rh2mkns8/thukf.rar
 
Lần chỉnh sửa cuối:
Upvote 0
ok đúng rồi bạn.nhưng có cách nào để khi khóa macro thì code tự động bị delete hết không bạn, nếu có xin chỉ giáo nha.
File dính kiemf bên dưới :
http://www.mediafire.com/download/1916ew1rh2mkns8/thukf.rar

Không có tự động gì cả. Phải có ai đó, cái gì đó làm cái việc kia. Code không tự bốc hơi được. Phải có đoạn code làm cái việc xóa kia. Nhưng nếu người ta khóa macro thì cái code kia có cơ hội đâu để mà "tung hoành"?
 
Upvote 0
Mình có một file excel có code, h do đặt tính công việc mình muốn khóa file này lại bằng 1 serial tương tự như của phần mêm kapesky, và 1 file excel khi mở lên thì phải cấp serial này có thời hạn sử dụng là 1 năm.hết hạn sử dụng thì phải cấp lại số serial mới.
Rất mong nhận được nhiều ý kiến đóng góp của mọi người.

bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko? --=0

dưới đây là số serial được cấp: ACC2.jpg

'- - - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
'- - - - -
pass VBA: phucbugis

'- - - -
thêm file check key 2 (sửa theo #14)
Link: https://www.mediafire.com/?360e4l38wmmwfq8
'- - - -
check CPUID: Bảo vệ file excel (#7) --> nên sửa lại thành Sub để check 1 lần duy nhất khi Open file (khi dùng hàm trực tiếp có thể ảnh hưởng đến file đang chạy)
 
Lần chỉnh sửa cuối:
Upvote 0
bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko? --=0

dưới đây là số serial được cấp:
View attachment 116582

'- - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.

Sao bạn lại cho tôi sử dụng có 7 ngày thôi? Mà bạn đã trả phí chưa mà đòi dùng 1 năm hả?

Mã:
If Not sRng Is Nothing Then
        If sRng.Offset(, 2) < Date Then
            MsgBox ("So serial: ") & TextBox1 & " da~ het han su dung", vbExclamation, "Thong bao'": Exit Sub
        End If
    End If

Theo tôi thời gian nên kiểm tra hơi khác đề phòng trường hợp người ta (láu cá) "táy máy" lùi đồng hồ. Vd. trước khi mở tập tin thì người ta lùi đồng hồ về ngày tháng mua tập tin - trả phí - thời gian bắt đầu sử dụng file.
 
Lần chỉnh sửa cuối:
Upvote 0
Sao bạn lại cho tôi sử dụng có 7 ngày thôi? Mà bạn đã trả phí chưa mà đòi dùng 1 năm hả?
OK rùi a (e đã sửa key) --=0 do e nhầm thứ tự (ưu tiên member nào trả lời bài này trước)

Mã:
If Not sRng Is Nothing Then
        If sRng.Offset(, 2) < Date Then
            MsgBox ("So serial: ") & TextBox1 & " da~ het han su dung", vbExclamation, "Thong bao'": Exit Sub
        End If
    End If
Theo tôi thời gian nên kiểm tra hơi khác đề phòng trường hợp người ta (láu cá) "táy máy" lùi đồng hồ. Vd. trước khi mở tập tin thì người ta lùi đồng hồ về ngày tháng mua tập tin - trả phí - thời gian bắt đầu sử dụng file.

Nếu ko dựa vào time của hệ thống thì check thế nào? bác có cao kiến gì ko?
 
Upvote 0
ờ thì mình copy dán dữ liệu, gửi xong xem lại thấy nó tóe loe vậy nên gửi lại ảnh . Biết có đề tài nói về cách gửi dữ liệu kiểu bảng nhưng chả nhớ . Nhờ bạn chắc không quên nữa đâu, cám ơn bạn !
 
Upvote 0
OK rùi a (e đã sửa key) --=0 do e nhầm thứ tự (ưu tiên member nào trả lời bài này trước)



Nếu ko dựa vào time của hệ thống thì check thế nào? bác có cao kiến gì ko?

Tất nhiên nếu có kết nối mạng thì lấy Date từ NET. Nhưng nếu người ta không bật internet thì sao?

Không thể bắt người ta phải bật internet vì vô lý quá. Mà cũng có thể người ta không dùng, quyền của người ta.
------------
Gọi là làm khó thêm thôi.

Mã:
sRng.Offset(, 2)

là ngày hết hạn. Ta dùng thêm

Mã:
sRng.Offset(, 3)

là ngày mở cuối.

1. Khi mở tập tin ta kiểm tra
Mã:
If Not sRng Is Nothing Then
        If sRng.Offset(, 2) < Date Or Date <= sRng.Offset(, 3) Or Date < Range("E1") Then
            MsgBox ("So serial: ") & TextBox1 & " da~ het han su dung", vbExclamation, "Thong bao'": 

Exit Sub
        End If
    End If

Bởi nếu đk Date <= sRng.Offset(, 3) thỏa thì có nghĩa là ta đã gặp phải thằng láu cá, lùi thời gian. Vì làm gì có lần khởi động sau mà thời điểm lại sớm hơn lần khởi động trước? Rõ ràng ăn gian.

đk Date < Range("E1") cũng cần có vì nếu không có thì vd. E1 = 18-2-2014 mà trước lần khởi động lần đầu "láu cá" lùi đồng hồ về 18-2-2004, rồi các ngày tiếp theo về 19-2-2004, 20-2-2004 ... thì hắn dùng 10 năm mà cả 2 đk kia không bao giờ thỏa.

Sau khi đk không thỏa, tức không có Exit Sub thì ghi Date vào sRng.Offset(, 3)

Như thế thì ở lần khởi động đầu tiên đồng hồ phải có ngày Date >= E1. Do có đk Date <= sRng.Offset(, 3) nên ngày hôm sau khi mở tập tin "hắn" không thể lùi đồng hồ về ngày <= sRng.Offset(, 3) được. Như vậy giá trị của ô sRng.Offset(, 3) cứ tăng dần và sẽ tới lúc sRng.Offset(, 3) >= sRng.Offset(, 2). Nếu là dấu "=" thì ngày tiếp theo sẽ có Date > sRng.Offset(, 3) (nếu <= thì ta phát hiện ra là ăn gian) >= sRng.Offset(, 2), tức Date > sRng.Offset(, 2) --> Exit Sub
------------
Tất nhiên cũng có thể ăn gian cách khác:
1. Khi mua tập tin về thì làm 10 bản sao.
2. Dùng bản 1 cho tới khi hết hạn
3. Lấy bản 2 ra dùng cho tới khi hết hạn
...
11. Lấy bản 10 ra dùng cho tới khi hết hạn

Cứ thế mãi. Tất nhiên khi dùng bản 2, 3, ..., 10 thì ở lần mở đầu lùi đồng hồ về ngày mua, tức E1, các ngày tiếp theo thì tăng đồng hồ thêm 1 ngày.

Vd. mua ngày 18-2-2014, với quyền dùng 1 năm cho tới ngày 18-2-2015 thì:

1. Làm vd. 10 bản sao.
2. Dùng bản sao 1 cho tới ngày 18-2-2015 - không cần lùi đồng hồ.
3. Lùi đồng hồ về 18-2-2014 và dùng bản sao 2, mỗi ngày tiếp theo lùi đồng hồ về 19-2-2014, ..., 18-2-2015. Tức kết thúc bản sao 2 vào ngày 18-2-2016
4. Lùi đồng hồ về 18-2-2014 và dùng bản sao 3, mỗi ngày tiếp theo lùi đồng hồ về 19-2-2014, ..., 18-2-2015. Tức kết thúc bản sao 3 vào ngày 18-2-2017
....
Nếu làm 100 bản sao thì dùng muôn đời.

Tất nhiên đấy là về lý thuyết thôi. Chứ nếu khổ sở lùi đồng hồ mỗi ngày như thế thì rồi "láu cá" cũng phải đầu hàng. Thôi thì trả phí bèo cho nó sướng thân.

Đấy là xét láu cá thôi. Chứ gặp "chuyên gia" thì bó tay. Vì chuyên gia vào mở VBA rồi xóa luôn code kiểm tra cho khỏe người. Gặp chuyên gia thì: "thôi, biếu ông dùng miễn phí ông nhé"
 
Lần chỉnh sửa cuối:
Upvote 0
bác siwtom giải thích thật dễ hiểu ---> e lại có kinh nghiệm hơn trong việc Protect file --=0, cảm ơn bác nhiều nhé!

e nghĩ có key cũng ko quan trọng nhất lắm, quan trọng nhất là phải bảo vệ được code VBA bên trong.
Trong quá trình sử dụng file nhất định sẽ có phát sinh vấn đề viết thêm code ---> phải chỉnh sửa ---> tới lúc đó cũng tìm gặp tác giả thôi :-=
 
Upvote 0
bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko? --=0

dưới đây là số serial được cấp:
View attachment 116588

'- - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
Bạn có thể cho mình tham khảo code của bạn được không.
 
Upvote 0
Nếu người ta Disable Macros thì người ta không thể sử dụng file được thầy ạ. Vì tác giả bảo file này có macro mà.

Thực ra là mọi người muốn "bàn ra" nên nói thế thôi. Vẫn có cách vd. như cách của bạn phucbugis. Có những cách mà ta có thể gọi là đủ. Vì dù cách nào thì cũng có người sẽ phá được, nhưng nếu họ chiếm tỉ lệ rất thấp thì có thể gọi là đủ. Lúc đó ta vẫn có thể kiếm tiền từ số đông.

Vấn đề của bạn chủ chủ đề có 2 khía cạnh: serial và giới hạn thời gian. Nếu chỉ là chống những người không biết serial - phải mua mới biết - thì chỉ cần thiết lập mật khẩu cho tập tin. Mật khẩu này hầu như chưa ai biết phá. Tôi nhấn mạnh "hầu như".

Còn vấn đề giới hạn thời gian, tức có mua và biết serial hay mật khẩu, thì hơi khó. Như tôi đã nói, kẻ "láu cá" vẫn có thể qua mặt được.

Chuyện dùng 10 năm hay dùng "muôn đời" là cách nói phóng đại mà thôi. Là nói về lý thuyết. Ý tôi là tôi có thể dùng 2 hoặc 3 năm nếu tôi muốn, nếu tôi cho là phiên bản hiện hành hoàn toàn thỏa mãn nhu cầu của tôi.

Tất nhiên phần mềm nào thì sau một thời gian cũg có phiên bản mới, nhưng nhiều khi những phiên bản mới đó nó chả thêm được gì có ích, có lợi tới mức mà tôi cần phải có phiên bản mới. Như Delphi, như VB (Visual Basic) hay thậm chí Windows, có những phiên bản mới mà chỉ có một câu: thất bại. Thêm những cái không đâu, mầu mè, multimedia hoặc những cái vớ vẩn, về chức năng thì chả hơn gì bản cũ, có cái còn xấu đi không bằng bản cũ. Ngoài ra có thể những chức năng được thêm vào nó chưa phải loại vượt bậc, chưa phải là bước nhẩy vọt từ máy hơi nước sang động cơ đốt thì rất có thể nhiều người không muốn hoặc không có nhu cầu chuyển sang phiên bản mới. Như tôi đây. Tôi chả làm gì tới mức phải có Excel 2010, 2013, Windows 7, 8. Cũng chả phải làm phim chuyên nghiệp hay đồ họa chuyên nghiệp nên cũng chả cần tới máy phải có cấu hình ngày càng mới, RAM khổng lồ, processor 2 nhân, 4 nhân, với đồng hồ đánh nhịp tới xyz GHz. Vậy tôi vẫn dùng XP, thậm chí không Professional mà chỉ Home Edition. Và Excel 2007. Thậm chí có người vẫn dùng Excel 2003.
Không phải ai khi có mới là họ muốn có mới bằng được. Vậy thì họ có thể mua 1 năm nhưng dùng 2, 3 năm. Hay nói theo cách phóng đại của tôi thì là dùng muôn đời.

Tóm lại thì về mặt lý thuyết có thể phá mọi rào cản nhưng về mặt thực tiễn thì ta chỉ cần chống "gà mờ" là đủ. Vì họ là số đông còn "chuyên gia", "láu cá" là thiểu số. Kiếm tiền từ "gà mờ" cũng là đủ rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
mình thanl mọi người nhiều nha.mấy bữa nay công việc bận quá không lên được h lên thấy mọi người quan tâm vấn đề của mình we}}}}} mình cón một vấn đề muốn hỏi nữa không biết mọi người có cách nào giúp được hem?
Là khi mà mở file check key lên nếu như chế độ macro không bậc thì tự động xoá luôn code không biết có lầm được không, nếu được mong mọi người giúp đỡ nha.--=0
 
Upvote 0
Thực ra là mọi người muốn "bàn ra" nên nói thế thôi. Vẫn có cách vd. như cách của bạn phucbugis. Có những cách mà ta có thể gọi là đủ. Vì dù cách nào thì cũng có người sẽ phá được, nhưng nếu họ chiếm tỉ lệ rất thấp thì có thể gọi là đủ. Lúc đó ta vẫn có thể kiếm tiền từ số đông.

Vấn đề của bạn chủ chủ đề có 2 khía cạnh: serial và giới hạn thời gian. Nếu chỉ là chống những người không biết serial - phải mua mới biết - thì chỉ cần thiết lập mật khẩu cho tập tin. Mật khẩu này hầu như chưa ai biết phá. Tôi nhấn mạnh "hầu như".

Còn vấn đề giới hạn thời gian, tức có mua và biết serial hay mật khẩu, thì hơi khó. Như tôi đã nói, kẻ "láu cá" vẫn có thể qua mặt được.

Chuyện dùng 10 năm hay dùng "muôn đời" là cách nói phóng đại mà thôi. Là nói về lý thuyết. Ý tôi là tôi có thể dùng 2 hoặc 3 năm nếu tôi muốn, nếu tôi cho là phiên bản hiện hành hoàn toàn thỏa mãn nhu cầu của tôi.

Tất nhiên phần mềm nào thì sau một thời gian cũg có phiên bản mới, nhưng nhiều khi những phiên bản mới đó nó chả thêm được gì có ích, có lợi tới mức mà tôi cần phải có phiên bản mới. Như Delphi, như VB (Visual Basic) hay thậm chí Windows, có những phiên bản mới mà chỉ có một câu: thất bại. Thêm những cái không đâu, mầu mè, multimedia hoặc những cái vớ vẩn, về chức năng thì chả hơn gì bản cũ, có cái còn xấu đi không bằng bản cũ. Ngoài ra có thể những chức năng được thêm vào nó chưa phải loại vượt bậc, chưa phải là bước nhẩy vọt từ máy hơi nước sang động cơ đốt thì rất có thể nhiều người không muốn hoặc không có nhu cầu chuyển sang phiên bản mới. Như tôi đây. Tôi chả làm gì tới mức phải có Excel 2010, 2013, Windows 7, 8. Cũng chả phải làm phim chuyên nghiệp hay đồ họa chuyên nghiệp nên cũng chả cần tới máy phải có cấu hình ngày càng mới, RAM khổng lồ, processor 2 nhân, 4 nhân, với đồng hồ đánh nhịp tới xyz GHz. Vậy tôi vẫn dùng XP, thậm chí không Professional mà chỉ Home Edition. Và Excel 2007. Thậm chí có người vẫn dùng Excel 2003.
Không phải ai khi có mới là họ muốn có mới bằng được. Vậy thì họ có thể mua 1 năm nhưng dùng 2, 3 năm. Hay nói theo cách phóng đại của tôi thì là dùng muôn đời.

Tóm lại thì về mặt lý thuyết có thể phá mọi rào cản nhưng về mặt thực tiễn thì ta chỉ cần chống "gà mờ" là đủ. Vì họ là số đông còn "chuyên gia", "láu cá" là thiểu số. Kiếm tiền từ "gà mờ" cũng là đủ rồi.
Mong thầy Siwtom viết đoạn code để em cùng các thành viên học hỏi với ạ!!!
 
Lần chỉnh sửa cuối:
Upvote 0
mình thanl mọi người nhiều nha.mấy bữa nay công việc bận quá không lên được h lên thấy mọi người quan tâm vấn đề của mình we}}}}} mình cón một vấn đề muốn hỏi nữa không biết mọi người có cách nào giúp được hem?
Là khi mà mở file check key lên nếu như chế độ macro không bậc thì tự động xoá luôn code không biết có lầm được không, nếu được mong mọi người giúp đỡ nha.--=0

Thế theo bạn thì "ai, cái gì" sẽ làm 2 việc: "kiểm tra xem có disable macro không, và xóa code?
Theo tôi thì phải có đoạn code nào đó làm 2 việc trên. Nhưng nếu disable macro thì đoạn code đó đâu có cơ hội để "biểu diễn"?
Tôi chịu không tưởng được cái gì khác code mà có thể làm 2 việc trên.
 
Upvote 0
híc --=0 thank. có còn cái cách mà cập nhập ngày theo internet thì làm sao nhỉ
 
Upvote 0
Anh Phucbugis có thể bổ sung thêm đoạn code theo ý tưởng của thầy siwtom để tránh một số người ăn gian ngày tháng không ạ.

Thì ở bài $14 tôi đã chỉ ra cách dùng "muôn đời" (dùng bởi "láu cá cao thủ"), và cả cách chống "láu cá gà mờ" - có đề nghị code sửa.

Nhưng đề nghị tác giả phucbugis hãy sửa lại trong tập tin và test xem có đúng không. Vì code viết trong notepad, sau khi dán từ tập tin Excel vào notepad thì tôi chỉ viết thêm đk thôi, chưa test.

Hãy sửa cho những người sau này bạn nhé. Còn nếu bạn thấy không cần sửa thì nói một câu cho mọi người biết để khỏi nài nỉ.
 
Upvote 0
Thì ở bài $14 tôi đã chỉ ra cách dùng "muôn đời" (dùng bởi "láu cá cao thủ"), và cả cách chống "láu cá gà mờ" - có đề nghị code sửa.

Nhưng đề nghị tác giả phucbugis hãy sửa lại trong tập tin và test xem có đúng không. Vì code viết trong notepad, sau khi dán từ tập tin Excel vào notepad thì tôi chỉ viết thêm đk thôi, chưa test.

Hãy sửa cho những người sau này bạn nhé. Còn nếu bạn thấy không cần sửa thì nói một câu cho mọi người biết để khỏi nài nỉ.

ok, do hôm nay e bận quá, đáng lẽ là xong khi chiều mà đến h mới xong (do test đk của bác gặp 1 tí sự cố), + thêm đang nghiên cứu cái cách kết nối Internet. --=0

bác xem file e mới thêm ở #8 ---> thế có ổn hơn ko :-=
 
Lần chỉnh sửa cuối:
Upvote 0
ok đúng rồi bạn.nhưng có cách nào để khi khóa macro thì code tự động bị delete hết không bạn, nếu có xin chỉ giáo nha.
File dính kiemf bên dưới :
http://www.mediafire.com/download/1916ew1rh2mkns8/thukf.rar

Mình có làm 1 chương trình phục vụ công việc rất hay và cũng thực hiện kiểm tra bản quyền như sau:
khi mở file excel lên nó sẽ kiểm tra 1 file gì đó VD

Private Sub Workbook_Open()
If Dir("C:\Windows\XXXX.dll") = "" Then
MsgBox "Ban chua dang ky su dung phan mem nay!"
UnprotectVBProj "xxxxxxxx"
DeleteAllCode
ActiveWorkbook.Close SaveChanges:=True
End If
Sheets("Main").Activate
ActiveSheet.ScrollArea = "A1:L39"
End Sub

Sub DeleteAllCode()

Dim x As Integer
Dim Proceed As VbMsgBoxResult
Dim Prompt As String
Dim Title As String

Prompt = "Are you certain that you want to delete all the VBA Code from " & _
ActiveWorkbook.Name & "?"
Title = "Verify Procedure"

Proceed = MsgBox(Prompt, vbYesNo + vbQuestion, Title)
If Proceed = vbNo Then
MsgBox "Procedure Canceled", vbInformation, "Procedure Aborted"
Exit Sub
End If

On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents.Remove .VBComponents(x)
Next x
For x = .VBComponents.Count To 1 Step -1
.VBComponents(x).CodeModule.DeleteLines _
1, .VBComponents(x).CodeModule.CountOfLines
Next x
End With
On Error GoTo 0

End Sub
bạn tham khảo nha, đã thực hiện hoàn hảo
 
Upvote 0
Mình có làm 1 chương trình phục vụ công việc rất hay và cũng thực hiện kiểm tra bản quyền như sau:
khi mở file excel lên nó sẽ kiểm tra 1 file gì đó VD

Private Sub Workbook_Open()
If Dir("C:\Windows\XXXX.dll") = "" Then
MsgBox "Ban chua dang ky su dung phan mem nay!"
UnprotectVBProj "xxxxxxxx"
DeleteAllCode
ActiveWorkbook.Close SaveChanges:=True
End If
Sheets("Main").Activate
ActiveSheet.ScrollArea = "A1:L39"
End Sub

Sub DeleteAllCode()

Dim x As Integer
Dim Proceed As VbMsgBoxResult
Dim Prompt As String
Dim Title As String

Prompt = "Are you certain that you want to delete all the VBA Code from " & _
ActiveWorkbook.Name & "?"
Title = "Verify Procedure"

Proceed = MsgBox(Prompt, vbYesNo + vbQuestion, Title)
If Proceed = vbNo Then
MsgBox "Procedure Canceled", vbInformation, "Procedure Aborted"
Exit Sub
End If

On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents.Remove .VBComponents(x)
Next x
For x = .VBComponents.Count To 1 Step -1
.VBComponents(x).CodeModule.DeleteLines _
1, .VBComponents(x).CodeModule.CountOfLines
Next x
End With
On Error GoTo 0

End Sub
bạn tham khảo nha, đã thực hiện hoàn hảo
Mình vẫn chưa biết cách áp dụng. Bạn có thể đưa 1 File ví dụ không?
 
Upvote 0
ok, do hôm nay e bận quá, đáng lẽ là xong khi chiều mà đến h mới xong (do test đk của bác gặp 1 tí sự cố), + thêm đang nghiên cứu cái cách kết nối Internet. --=0

bác xem file e mới thêm ở #8 ---> thế có ổn hơn ko :-=

Ơ, bạn chuot0106 có nhu cầu chứ tôi có đâu?
Bạn chuot0106 test rồi báo kết quả nhé. Chả nhẽ mọi việc mọi người đều làm hộ rồi sản phẩm dâng cho bạn?
 
Upvote 0
Ơ, bạn chuot0106 có nhu cầu chứ tôi có đâu?
Bạn chuot0106 test rồi báo kết quả nhé. Chả nhẽ mọi việc mọi người đều làm hộ rồi sản phẩm dâng cho bạn?

Code của anhPhucbugis sửa lại theo ý tưởng của thầy Siwtom rất tốt rồi ạ. Em vừa mới test xong. Cảm ơn thầy Siwtom và anh Phucbugis rất nhiều ạ.
 
Upvote 0
ok, để mình tặng bạn nha, nhớ là phải copy file Dangky.dll vào C:\Windows trước nha, và xóa file này đi thì khi mở file excel lên nó sẽ xóa toàn bộ code
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Mình vẫn chưa biết cách áp dụng. Bạn có thể đưa 1 File ví dụ không?

Bạn không hiểu thì cũng đúng thôi. Vì người ta chỉ cho 1 đoạn code thôi.
Bạn có thấy code đăng ký không? Tức có cái gì đó hiện lên và yêu cầu nhập serial, password, cái gì đó?

Nếu tôi hiểu được đời thì ít ai đính kèm DLL rồi yêu cầu khách hàng copy vào thư mục Windows. Thường thì ai đó có thể làm thế này: có code mời đăng ký (Auto_Open?). Nếu đăng ký đúng thì tạo tập tin XXXX.dll trong "C:\Windows". Sau đó code "ở đâu đó" kiểm tra xem có tập tin không, nếu không có tức là trước đó không đăng ký, đăng ký không đúng. Thế thôi.

Mà nếu tôi hiểu được đời thì cái tập tin XXXX.dll kia nó chỉ là tập tin văn bản (TXT) mà thôi. Bạn có thể: chuột phải trên tập tin bất kỳ hichic.txt, hichic.jpg, hichic.avi --> chọn rename --> gõ hichc.dll. Tập tin sẽ có biểu tượng của thư viện động DLL nhưng không có nghĩa đó là thư viện DLL. Ví như công tử nọ mặc váy, tô môi, độn ngực nhưng lõi vẫn là đực rựa. DLL nhưng lõi vẫn là TXT, JPG, AVI, tức văn bản, ảnh, phim. Tôi mà gặp những tập tin lạ thì thường tò mò "chuột phải" --> Open With ... --> chọn notepad, Paint, Media Player Classic ... để xem thế nào.

Thế sao khi không đăng ký thì không xóa luôn hết code mà lại tạo tập tin trong Windows và sau đó code "ở đâu đó" kiểm tra xem có tập tin không cho mệt người? Cũng có thể họ có lựa chọn: Đăng ký hoặc cho dùng thử 30 ngày (khách dùng thử thấy hay quá nên sẽ mua?). Vậy họ ghi tập tin TXT với nội dung là ngày hiện hành. Sau đó code mà mỗi lần mở tập tin thì kiểm tra xem ngày hiện hành và lõi tập tin TXT có khác nhau >= 30 ngày không, nếu không thì thay lõi TXT bằng ngày hiện hành. Nếu đúng thì xóa code.

Đại loại là thế. Có nhiều cách làm nên tôi cũng chả muốn đoán là họ sẽ làm theo cách nào.
Thậm chí có người còn không ghi ở Windows cơ. Vì trong Windows có ít tập tin nên nếu ai rành và kiểm tra thường xuyên thì sẽ phát hiện tập tin lạ. Vì thế nhiều ngườn còn ghi vào "C:\Windows\System32" cơ.

Vị trí code đăng ký có thể khác, chi tiết kỹ thuật có thể khác nhưng triết lý thì như tôi nói.
Tất nhiên ta giả thiết là ta chỉ chống "gà mờ".
 
Lần chỉnh sửa cuối:
Upvote 0
mình cảm ơn mọi người nhiều nha}}}}} thực sự thì mình cũng chỉ muốn chống gà mờ thui keke, vây mọi người cho mình hỏi làm sao để khi vba project không còn được bảo vệ bằng mật khẩu tức là đã bị hack mật khẩu thì auto delete module không?)(&&@@
 
Upvote 0
mọi người cho mình hỏi làm sao để khi vba project không còn được bảo vệ bằng mật khẩu tức là đã bị hack mật khẩu thì auto delete module không?)(&&@@

Thôi thì bạn hãy.. quên đi ý nghĩ đó cho đở mệt người. Nói tóm lại là: không có cách nào để gọi là "chống phá" trong VBA đâu
Để dành hơi sức làm việc khác có ý nghĩa hơn
 
Lần chỉnh sửa cuối:
Upvote 0
Thôi thì bạn hãy.. quên đi ý nghĩ đó cho đở mệt người. Nói tóm lại là: không có cách nào để gọi là "chống phá" trong VBA đâu
Để dành hơi sức làm việc khác có ý nghĩa hơn
Em thấy thầy ndu96081631 không khoái mấy vụ này lắm nhỉ?
Em nghĩ tác giả cũng mong muốn 90% người sử dụng không phá được pass là OKE quá rồi
.--=0 10 % còn lại tác giả chắc phải làm từ thiện thôi.--=--
 
Upvote 0
Em thấy thầy ndu96081631 không khoái mấy vụ này lắm nhỉ?
Em nghĩ tác giả cũng mong muốn 90% người sử dụng không phá được pass là OKE quá rồi.--=0 10 % còn lại tác giả chắc phải làm từ thiện thôi.
--=--

a ndu chỉ ra tay khi thấy vấn đề hợp lý thôi --=0.

mình nghĩ tác giả này cũng tàn nhẫn thật thích dùng cách phá huỷ code chứ ko muốn Protect code. :-=
 
Upvote 0
Mình phá khóa file của bạn Phucbugis vì bạn ấy đưa file để mọi người phá thử, nếu không phá làm gì ! Mình phá khóa để bạn ấy biết rằng " vô ích thôi !", với vài sao quay mình đã phá chẳng khó khăn gì, thì các Cao thủ liệu có làm khó họ được không ? Nếu muốn xem code thì người ta xem trước khi code hoạt động , làm sao đã kịp xóa !
 
Upvote 0
Em thấy thầy ndu96081631 không khoái mấy vụ này lắm nhỉ?
Em nghĩ tác giả cũng mong muốn 90% người sử dụng không phá được pass là OKE quá rồi
.--=0 10 % còn lại tác giả chắc phải làm từ thiện thôi.--=--

Không phải vấn đề KHOÁI hay KHÔNG KHOÁI.
Liệu chúng ta có cần bỏ công sức ra để làm chuyện vô bổ không? Bạn tự suy nghĩ, tự trả lời nhé
Cũng câu hỏi về key bản quyền, nhưng nếu lập trình trên VB, C... thì đó lại là chuyện nên nghiên cứu, riêng trên VBA ---> Miễn bàn!
Con số 10% và 90 % ấy bạn đã nói ngược rồi. Tôi tin chỉ có 10% là không biết phá pass thôi (google dùng để làm gì, search 1 phát ra cả đống giải pháp)
-----------------
Chắc là đây là File cần bảo mật, tác giả không muốn người khác biết hoặc tác giả định kinh doanh
a01.gif
VBA cò con mà đòi kinh doanh cái giống gì không biết
 
Lần chỉnh sửa cuối:
Upvote 0
Chính xác như bác NDU nói, tuy Viết VBA thì mình không biết chứ phá thì mình biết ah --=0
 
Upvote 0
Nói túm lại chuyện bảo mật ở Office thì miễn bàn nếu như bạn không muốn thời gian của mình bị mất đi vô ích.
 
Upvote 0
Vị trí code đăng ký có thể khác, chi tiết kỹ thuật có thể khác nhưng triết lý thì như tôi nói.
Tất nhiên ta giả thiết là ta chỉ chống "gà mờ".

tui thì giấu pass ngay trong excel luôn, cầu kỳ một tí nữa thì mã hoá. trong các file excel tui thường dùng 1 sheet ẩn (very hidden) để ghi nhận các khai báo, options, pass...
với xp về trước có 256 sheets thì bạn có thể dò được chứ từ 2007 về sau số lượng sheets không nhất đình, khó mà biết có cái sheets ẩn này.
thực ra thì khoá gì cũng có người phá được, khoá cũng chỉ là với người ngay thôi.

@ndu: tại sao cò con không thể kiếm tiền, flappy bird là cò con đấy thôi.
 
Upvote 0
ẩn cỡ nào cũng lôi được bạn ạ, hi vọng ta giấu được 90% gà mờ thôi ha
 
Upvote 0
Tôi nhớ mang máng trên một thớt khác cũng tương tự như thế này, có một thành viên đặt câu hỏi:

"Bạn nghĩ sao khi bạn đi xin không code của người khác để gộp vào bán code của mình?"
 
Upvote 0
tui thì giấu pass ngay trong excel luôn, cầu kỳ một tí nữa thì mã hoá. trong các file excel tui thường dùng 1 sheet ẩn (very hidden) để ghi nhận các khai báo, options, pass...
với xp về trước có 256 sheets thì bạn có thể dò được chứ từ 2007 về sau số lượng sheets không nhất đình, khó mà biết có cái sheets ẩn này.
thực ra thì khoá gì cũng có người phá được, khoá cũng chỉ là với người ngay thôi.

@ndu: tại sao cò con không thể kiếm tiền, flappy bird là cò con đấy thôi.

Tôi nói: "Thường thì ai đó có thể làm thế này". Vì tôi đã gặp trường hợp này, bài trên GPE, nhưng lâu rồi không nhớ tác giả.

Bản thân tôi khi lập trình trong Delphi cũng không bao giờ tôi giấu thông tin trong tập tin trên đĩa, trong registry hay thậm chí trong resource (compile với project). Tôi giấu trong ruột EXE thôi.

Gọi là làm khó dễ mà thôi. Mà cũng chỉ làm một lần cho biết,. Gọi là học, "vọc" xong mảng kiến thức về bảo vệ bản quyền chứ không có ý định làm rào cản gì.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi nói: "Thường thì ai đó có thể làm thế này". Vì tôi đã gặp trường hợp này, bài trên GPE, nhưng lâu rồi không nhớ tác giả.

Bản thân tôi khi lập trình trong Delphi cũng không bao giờ tôi giấu thông tin trong tập tin trên đĩa, trong registry hay thậm chí trong resource (compile với project). Tôi giấu trong ruột EXE thôi.

Gọi là làm khó dễ mà thôi. Mà cũng chỉ làm một lần cho biết,. Gọi là học, "vọc" xong mảng kiến thức về bảo vệ bản quyền chứ không có ý định làm rào cản gì.

siwtom bác ở đâu cho em lĩnh giáo và vấn đề, em ở Hà nội. Email: ngocanhwin@gmail.com
Cảm ơn bác đã đọc bài
 
Upvote 0
Tôi nói: "Thường thì ai đó có thể làm thế này". Vì tôi đã gặp trường hợp này, bài trên GPE, nhưng lâu rồi không nhớ tác giả.

Bản thân tôi khi lập trình trong Delphi cũng không bao giờ tôi giấu thông tin trong tập tin trên đĩa, trong registry hay thậm chí trong resource (compile với project). Tôi giấu trong ruột EXE thôi.

Gọi là làm khó dễ mà thôi. Mà cũng chỉ làm một lần cho biết,. Gọi là học, "vọc" xong mảng kiến thức về bảo vệ bản quyền chứ không có ý định làm rào cản gì.
"Giấu trong ruột EXE" là sao anh? Có phải là trong code của Delphi, VB6, ... không?.
"Gọi là làm khó dễ mà thôi": đúng rồi, chỉ làm khó đối với người mới học VBA thôi. Và em đã làm khó được vanle33 tại đây, cứ vào VBA là VBA biến mất, he he.
 
Upvote 0
"Giấu trong ruột EXE" là sao anh? Có phải là trong code của Delphi, VB6, ... không?.
"Gọi là làm khó dễ mà thôi": đúng rồi, chỉ làm khó đối với người mới học VBA thôi. Và em đã làm khó được vanle33 tại đây, cứ vào VBA là VBA biến mất, he he.

Tôi bỏ trò này từ lâu lắm lắm rồi nên không biết có nhớ nhầm không.
Thực ra mình cứ làm theo cách nào đó mà mọi người ít ngờ là được. Mà thực ra là ngăn người ngay thôi nên cứ làm vài cái constant là được. Người ta có EXE chứ có tập tin PAS - mã nguồn đâu mà nhìn thấy.

Nhưng có một lần tôi tò mò thí nghiệm xem làm theo cách "này này" thì có được không. Tức nếu "làm thế" thì EXE có chạy được không. Nếu tôi nhớ không lầm thì làm xong EXE vẫn chạy bình thường.

Cái tôi vọc do tò mò là: dùg EXE khác, gọi là gan_duoi.exe đọc độ lớn EXE "thí nghiệm". Giả sử nó có x [bai], dữ liệu cần giấu" là y [bai]. Tôi tạo chuỗi bai gồm y [bai] dữ liệu + 4 [bai]. Tôi ghi vào 4 bai cuối này giá trị DWORD = y. Tôi đọc EXE "thí nghiệm vào RAM dưới đang data (vd. dùng hàm CreateFile) --> ghi (y + 4) bai kia vào sau bai cuối cùng của EXE. Tất nhiên trong mã nguồn có code làm: Khi cần dữ liệu thì EXE đang chạy load tập tin EXE (chính nó) từ đĩa vào RAM --> nhẩy xuống vị trí A có offset = offset (của bai cuối cùng) - 3 và đọc ra 4 bai cuối, tức có độ lớn của dữ liệu, tức y. Từ A lùi về đầu y bai và đọc ra "chuỗi" y bai, tức chuỗi dữ liệu.

Gọi là vọc thôi chứ ghi ở đâu chả được. Ghi trong resource cũng chả sao. Bản thân tôi có 1 EXE làm việc mã hóa bất cứ tập tin nào (vì tập tin nào cũng chỉ là một chuỗi bai ghi trên đĩa) và giải mã. Tôi dùng cái này cho cá nhân để mã những tập tin mật hoặc nhậy cảm. Có lựa chọn "Mã / Giải mã". Nếu chọn "Giải mã" thì EXE bắt nhập mật khẩu, mà mật khẩu chuẩn tôi mã xong rồi thêm vào resource. Tôi làm thế vì nhiều khi phải ghi ra CD / DVD mà CD / DVD tôi không giấu bao giờ. Cất giấu thì có ngày mở ra nhưng quên "không khóa", thì cũng bằng không.

Gọi là tò mò thôi chứ đã là EXE thì "người thường" nào đọc được?
 
Upvote 0
bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko? --=0

dưới đây là số serial được cấp: View attachment 116588

'- - - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
'- - - - -
pass VBA: phucbugis

'- - - -
thêm file check key 2 (sửa theo #14)
Link: https://www.mediafire.com/?360e4l38wmmwfq8
'- - - -
check CPUID: Bảo vệ file excel (#7) --> nên sửa lại thành Sub để check 1 lần duy nhất khi Open file (khi dùng hàm trực tiếp có thể ảnh hưởng đến file đang chạy)
mã máy em lấy được "BFEBFBFF000306A9" add vào code. Mở file lên lần đầu pase "BFEBFBFF000306A9" là dùng mãi mãi ko hỏi nữa!
 
Upvote 0
bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko? --=0

dưới đây là số serial được cấp: View attachment 116588

'- - - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
'- - - - -
pass VBA: phucbugis

'- - - -
thêm file check key 2 (sửa theo #14)
Link: https://www.mediafire.com/?360e4l38wmmwfq8
'- - - -
check CPUID: Bảo vệ file excel (#7) --> nên sửa lại thành Sub để check 1 lần duy nhất khi Open file (khi dùng hàm trực tiếp có thể ảnh hưởng đến file đang chạy)
Anh ơi, em đang dùng code này của anh, mà sao khi nhập key đúng, thì các sheet sẻ mở, riêng sheet account phải ẩn thì mới bảo mật ạ. (hiện tại sheet acount mở) anh chỉnh lại giúp e với ạ.
Do file lâu ngày đã hết hạn sử dụng, e chỉnh lại key =1 để a đăng nhập rồi ạ
Mong nhận được giúp đỡ của anh. em cảm ơn ạ
 

File đính kèm

Upvote 0
Muốn bảo mật thì kiếm cái tool chuyển vba tới dll, dll là c++ thì ok rồi!
 
Upvote 0

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

Back
Top Bottom