PDA

View Full Version : Xem mã nguồn các VBA Project đã khoá



longnh
07-10-06, 09:25 PM
Mặc dù rất bận xong tôi biết có nhiều bạn rất cần những đoạn code để học hỏi nâng cao trình độ.
điều vướng mắc là đôi khi TA QUÊN MẤT PASSWORD PROJECT :)
Vì vậy tôi mở luồng này cố gắng một ngày sẽ view một project.
yêu cầu:
- Bài yêu cầu cần mô tả về chức năng project tại đây (http://geosoftvn.com/forum/topic.asp?TOPIC_ID=279)
- Để lại đường link tôi có thể down load ( tôi không giúp các file gửi vào email. Xin các bạn thông cảm vì lý do...)
- có thể để lại địa chỉ Email hoặc gửi địa chỉ email để tôi trả lời. vào địa chỉ longnh@geosoftvn.com
- kết quả có được xin chia sẻ trong luồng này để các mem tham khảo học tập
- Việc sử dụng code có được do người dùng chịu trách nhiệm.
Xin nhắc lại đây là mục đích học hỏi. Và xác xuất xem được code là 50% nếu bạn nào không đạt nguyện vọng xin thông cảm.
Xin cảm ơn, chúc các bạn vui vẻ.

nvson
07-10-06, 09:58 PM
Chào anh Long!
Tôi có file Excel nhưng bị quên Password không mở được (password của tôi đặt dài hơn 8 ký tự bao gồm cả ký tự số, chữ và symbol...). Anh có thể mở được file này không?
Thanks!

Nguyễn Duy Tuân
09-10-06, 09:20 AM
Cảm ơn bạn Longnh đã có nhã ý giúp đỡ các bạn học Excel. Vấn đề mở Password của Project (VBA) có rất nhiều người có nhu cầu! Vì quên hay vì muốn xem code của người khác? Vấn đề này rất nhạy cảm. Nếu mở code của người khác mà họ cho phép hay tác giả quên Pass thì không sao. Nếu việc làm không đúng như đã nói thì vấn đề sẽ rất nghiêm trọng.
Với lý do trên mong bạn Longnh cần xác minh rõ xem Project có phải là của người cần Pass hay không trước khi giúp đỡ.

longnh
10-10-06, 10:30 PM
Chào anh Long!
Tôi có file Excel nhưng bị quên Password không mở được (password của tôi đặt dài hơn 8 ký tự bao gồm cả ký tự số, chữ và symbol...). Anh có thể mở được file này không?
Thanks!
Chào anh.
Anh có thể nói rõ đó là phiên bản nào 97,2000,2003... Khi đã mở được :) không phải "bẻ" nhé thì không phân biệt là cái loại ký tự gì.
Do thời gian tôi không có nhiều nên chủ yếu chỉ xem được trên diễn đàn do tôi quản lý. Tất nhiên vẫn muốn chia sẽ ở đây vì trang của tôi chủ yế về địa chất
anh cứ gửi file đó cho tôi. Mong rằng sẽ thành công



Cảm ơn bạn Longnh đã có nhã ý giúp đỡ các bạn học Excel. Vấn đề mở Password của Project (VBA) có rất nhiều người có nhu cầu! Vì quên hay vì muốn xem code của người khác? Vấn đề này rất nhạy cảm. Nếu mở code của người khác mà họ cho phép hay tác giả quên Pass thì không sao. Nếu việc làm không đúng như đã nói thì vấn đề sẽ rất nghiêm trọng.
Với lý do trên mong bạn Longnh cần xác minh rõ xem Project có phải là của người cần Pass hay không trước khi giúp đỡ.

Cảm ơn anh, tôi cũng là dân lập trình nên tôi hiểu về vấn đề bản quyền. tôi cũng đã đọc hết luật bản quyền. Tất nhiên còn có một xu hướng Open phải không anh. Tôi muốn chơi theo một tinh thần "Fair". Chắc anh cũng biết điêu khoản cho phép copy để học hỏi. Tôi cũng không bẻ khoá, không làm thay đổi nội dung file còn việc tại sao tôi view được source thì không ai có thể cấm. hơn nữa chẳng có một ai đứng ra "copy right cho source" anh ạ một chương trình có "copy right" chỉ được bảo vệ giao diện, hình thức còn thuật toán chẳng hạn thì không có điều đó.
Về vấn đề này chúng ta nên thảo luận ở một chỗ khác
Tôi xin nhắc lại. Tôi không bẻ khoá, không thay đổi nội dung file gốc. Không Decode, debug. Chỉ nhìn thấy code và đọc vậy thôi. không ai cấm mở một file bằng Hex Editor hay được mở chỉ bằng chương trình này hay chương trình kia cả.
Còn việc chia sẻ và dùng code sau đó như thế nào thì tôi không thấy quan trọng.

Các bạn cần giúp đỡ xin đọc kỹ bài hướng dẫn của tôi phí trên.
Chúc trình độ chúng ta ngày càng nâng cao.

hai2hai
11-10-06, 09:33 AM
Có lẽ cậu ko hiểu ý của Tuân.
Bạn có thể đọc lại:

Vấn đề mở Password của Project (VBA) có rất nhiều người có nhu cầu! Vì quên hay vì muốn xem code của người khác? Vấn đề này rất nhạy cảm. Nếu mở code của người khác mà họ cho phép hay tác giả quên Pass thì không sao. Nếu việc làm không đúng như đã nói thì vấn đề sẽ rất nghiêm trọng.

Ở đây ko cần phải kể kinh nghiệm vì có rất nhiều người làm IT từ những năm 90 đến tận nay - họ cũng ko nói gì nhiều về chuyện "tôi làm IT" cả. Ý của Tuân nói là nếu giúp đỡ ai mở password thì bạn chỉ cần xem đó là file gì mà thôi. Ví dụ: Nếu 1 người gửi cho bạn 1 file cá nhân vì họ quên password thì chuyện giúp đỡ là đáng khen mặc dù ai cũng biết mấy công cụ mở pws có đầy trên Internet (ví dụ như: ElcomSoft Advanced Passsword Recovery Studio 2006 -> Recover tất cả các loại pws của hầu hết các ứng dụng như office (doc, xls, mdb,...), compresssion (rar, zip...),...). Nhưng nếu người nào đó gửi cho bạn chương trình của 1 công ty nào đó chẳng hạn (có thể là Excel hay chương trình viết trên ASM đi chăng nữa) thì bạn cũng nên xem xét xem có nên "giúp" người ta hay ko. Còn dĩ nhiên bạn mở khóa để dùng riêng cá nhân ko dùng vào mục đích kinh doanh, phát tán cộng đồng,... mà chỉ mục đích học hỏi kinh nghiệm thì cũng ko ai nói gì.

Còn nếu bạn muốn nói là có nhiều kinh nghiệm về IT với các thứ như WinHex hay bất cứ công cụ Hex Editor cùng với các công cụ ko thể thiếu của dân cr*ker như WinHex, Resource Hacker, WinDASM, Numega SoftIce, v.v... thì cứ thử mở 1 trong các file game mà mình đã từng compiled & compack & pe encryption trên diễn đàn wkt để xem bất cứ cái của nó xem có được ko.

Đương nhiên CR*ck & Decompile là 2 việc hoàn toàn khác nhau và mình đã thử tất cả các decompile trên thế giới rồi, hầu như chả xem được cái gì cả. Còn view file dưới dạng Hex edditor thì làm sao mà xem code ở trong đó được. Đấy là chưa kể nếu file đã bị PE encrypted rồi thị thậm chí mấy công cụ Hex Edditor kia chỉ mở ra và xem...rác mà thôi.

longnh
11-10-06, 06:37 PM
Có lẽ cậu ko hiểu ý của Tuân.
ElcomSoft Advanced Passsword Recovery Studio 2006 -> Recover tất cả các loại pws của hầu hết các ứng dụng như office (doc, xls, mdb,...),

Mấy cái này đã mở được thì nói làm gì /-*+/ nếu mấy cái đó không mở được cơ.



Đấy là chưa kể nếu file đã bị PE encrypted rồi thị thậm chí mấy công cụ Hex Edditor kia chỉ mở ra và xem...rác mà thôi.

Một nguyên lý chung nhất là đã có xuôi sẽ có ngược. Luôn luôn là như vậy.

Tôi đã Viết rất To @$@!^%@$@!^%và màu đỏ dòng chữ "Ta quên mất pass word"
Thực ra mới tham gia diễn đàn có gì không đúng anh cứ bỏ qua một bên chúng ta giữ lấy mục tiêu chung vì lợi ích học tập của các mem.

hai2hai
11-10-06, 07:53 PM
Chỉ nhìn thấy code và đọc vậy thôi. không ai cấm mở một file bằng Hex Editor hay được mở chỉ bằng chương trình này hay chương trình kia cả.



Một nguyên lý chung nhất là đã có xuôi sẽ có ngược. Luôn luôn là như vậy.


Thôi thì kỹ thuật 1 chút về thế nào là Cr*ck & thế nào là DeCompile vậy. Coi như đây là buổi nói chuyện giữa tôi và Long, mọi người đừng coi đây là bài liên quan đến Excel và nên bỏ qua bài này khi đọc.

Để xem được code của file đã dịch ra Exe, DLL thì phải DeCompile chứ ko phải CR*.

Có lẽ bạn hiểu nhầm chuyện xuôi ngược ở đây rồi, ko phải là chống CR mà là ko thể dịch ngược để xem mã nguồn được. Tôi chưa từng thấy công cụ Hex Edditor nào có thể xem được mã nguồn như bạn nói.

Ko những thế, ở đây ko chỉ là chuyện mã hóa mà quan trọng là thay đổi cấu trúc header của file để các công cụ khác không thể mở ra được. Đúng là Cr*cker có thể làm mọi điều để cr*ck nhưng ko phải là họ dịch ngược ra mã nguồn (mã gốc của nhà phát triển) - chắc chắn là như thế vì hồi trẻ tôi đã đọc rất nhiều tài liệu hướng dẫn CR của tất cả các thể loại (Reg, S*ial, K*ygen, p*tch,...). Ngay cả khi chương trình khi dịch = VB, sau đó được thay đổi hoàn toàn header của file thì có lẽ Microsoft có trình dịch ngược của họ cũng ko dịch lại thành mã nguồn VB được - vì nếu làm được thì cả thế giới này sống trong sự ko an toàn rồi - mã nguồn của bộ Windows 2000 1 thời đã đầy dẫy trên thị trường nhưng đó là do MS đã chuyển giao toàn bộ mã nguồn cho TQ và TQ đã ko làm đúng trách nhiệm về chính sách bảo mật).

Người ta có thể dịch ngược ra ASM (nhưng rất hiếm có DeASM nào có khả năng đọc được file đã thay đổi hẳn cấu trúc header của file exe. Tôi đã đưa ra file do 1 hãng làm thay đổi hẳn cấu trúc file exe cho 1 diễn đàn cr*cker nổi tiếng trên thế giới và hầu hết trong số họ phải công nhận là những công cụ DeAssembler hiện thời có thể dịch ngược ra mã ASM (chứ ko phải mã nguồn nguyên bản)), có thể dùng SoftIce để theo dõi các giá trị của các thanh ghi để làm ke*ygen. Rất nhiều phần mềm đã thay đổi hẳn PE Header file nên hầu hết các công cụ dạng Hex Editor, DeASM ko thể mở để mà dịch ngược được.

Các Decompiler ở trên thị trường hiện thời hoạt động hầu như là ko có ý nghĩa gì cả. DeCompiler của VB chỉ dịch ngược được những file Exe dịch ở dạng PCODE (ko phải dạng mã máy) chứ ko dịch ngược được những file đã dịch sang mã máy. Còn DeASM thì chỉ dịch ngược được file mã máy ra mã dạng ASM thôi chứ làm sao dịch thành original code để mà "Chỉ nhìn thấy code và đọc vậy thôi. không ai cấm mở một file bằng Hex Editor hay được mở chỉ bằng chương trình này hay chương trình kia cả.".


Tôi đã Viết rất To và màu đỏ dòng chữ "Ta quên mất pass word"

Thì Tuân cũng chỉ nhắc nhở bạn là nếu có recover password thì hãy để ý xem người nhờ có mục đích gì, file để recover là loại file gì thôi mà (để tránh chuyện phá pws của file có dữ liệu quan trọng của người khác mà người nhờ vả không có quyền sử dụng hoặc phá pws của phần mềm thương mại nào đó chẳng hạn).

Đào Việt Cường
12-10-06, 08:04 AM
Dear all,
--------
Theo em, chủ đề này không thuộc phạm vi của www.Giaiphapexcel.com (http://www.Giaiphapexcel.com). Chúng ta có thể tìm hiểu và thoả luận vấn đề này trên các diễn đàn chuyên về tin học khác có liên quan.
Có lẽ như vậy sẽ hiệu quả hơn.
Em mạn phép sửa lại tên đề tài cho phù hợp để các thành viên tiện theo dõi. Nếu bạn Long còn có dự án nào khác thì chúng ta sẽ thảo luận trong chủ đề khác.

PhanTuHuong
12-10-06, 10:10 AM
C­ường ơi, chủ đề chính ở đây là VBA Project cơ mà. Long có nhã ý giúp các bạn lập 1 công việc nào đó trên Excel dưới sự hỗ trợ của VBA. Còn mấy cái khóa thì không quan trọng đâu.

skyonline
12-10-06, 10:43 AM
Em cũng nghĩ mấy cái đó không quan trọng . Trên diễn đàn nếu có người nào muốn chia sẽ với mọi người các kiến thức, công việc trên excel hỗ trợ VBA cũng tốt. Không cần đến các diễn đàn chuyên về tin học khác. Nói chung cữ hễ đụng đến Excel, đụng đến VBA thì mình có thể đem ra trao đổi.

hai2hai
12-10-06, 11:04 AM
Tôi cũng chưa bao giờ có ý định nói gì ngoài Excel trên đây cả vì thực sự làm gì có nhiều time để mà nói, mà viết. Chỉ có điều bài viết của Tuân rất đơn giản về việc cần phải chú ý khi mở pws "giúp người khác" nhưng Long lại hiểu khác đi và thêm 1 chút về kỹ thuật là IT, là Hex Editor, v.v... để xem mã nguồn nên tôi muốn giải thích cho rõ thôi (là chỉ xem được mã nguồn của Excel VBA thôi chứ ko xem được mã nguồn của các file đã dịch thành mã máy). Thực ra, viết bài trên diễn đàn là 1 hình thức mất nhiều thời gian nhất trong các công việc giải trí của tôi và của bao nhiêu người nên tôi cũng rất hạn chế giải thích về kỹ thuật khác (và thực sự chỉ muốn quên đi những gì về kỹ thuật đã từng biết để cho nhẹ đầu thôi :)). Mọi người cũng có thể xóa tất cả các bài của tôi và của Long trên topic này nếu thấy ko phù hợp mà.


C­ường ơi, chủ đề chính ở đây là VBA Project cơ mà. Long có nhã ý giúp các bạn lập 1 công việc nào đó trên Excel dưới sự hỗ trợ của VBA. Còn mấy cái khóa thì không quan trọng đâu.

Nếu đọc kỹ #1 thì nội dung của bài đó ko phải là VBA Project mà là việc Long muốn giúp đỡ mở pws giúp người khác các file "lỡ quên pws".

longnh
12-10-06, 12:06 PM
1./ :) Mở box này mấy hôm rùi mà không có cái gì làm chứng tỏ bà con không có nhu cầu. :) hãy nghĩ đến bảo mật và tói ưu ngay khi bắt đầu một dự án.
2./ Nếu có được một người để học hỏi thêm đó cũng là một may mắn.
Từ trứớc đến giờ Tôi không có được may mắn thứ 2.

Ai có thì tớ giúp nhé.

hai2hai
12-10-06, 12:27 PM
1./ :) Mở box này mấy hôm rùi mà không có cái gì làm chứng tỏ bà con không có nhu cầu. :) hãy nghĩ đến bảo mật và tói ưu ngay khi bắt đầu một dự án.
2./ Nếu có được một người để học hỏi thêm đó cũng là một may mắn.
Từ trứớc đến giờ Tôi không có được may mắn thứ 2.

Ai có thì tớ giúp nhé.

Có nhu cầu đây :)

Long hãy thử làm giúp mình 1 file Excel cùng hướng dẫn để tạo file đó mà ko 1 phần mềm nào phổ cập trên thị trường có thể phá để xem được code bên trong (món Excel này tôi ko thạo lắm). Hiện thời mình chưa nghĩ được cách nào đơn giản hơn ngoài cách phải viết lại phần lớn các code trong Excel thành DLL.

Đây cũng là nhu cầu mà khá nhiều người trên diễn đàn này mong muốn được biết đấy.

longnh
12-10-06, 08:07 PM
Viết thành dll cũng không ăn thua. Vì vẫn phải gọi các hàm từ Excel. Mà mã nguồn trên Excell vẫn còn nguyên vậy là có thể gọi đến các hàm trên dll một cách vô tư. :) lại có thêm thư viện cho bà con dùng thôi. Cái lỗi xem được mã nguồn là do Microsoft bị thủng từ hồi Ex 97 cơ anh ạ. Bây giờ tuy có mã đến 128 hay có đến 1024 bit thì cũng chết ở chỗ tương thích ngược về các phiên bản trước (chỗ này chắc anh cũng biết). Nhưng anh cứ yên tâm phát triển bởi không phải lúc nào ta cũng bảo vệ được tất cả. Giả sử có bị lộ 20% cũng là thành công rồi không có an toàn 100% đâu. nếu chương trình hay thì người ta sẵn sàng trả tiền để dùng.
Với chương trình của anh cách đơn giản nhất khuyên anh là: đổi tên toàn bộ tên biến, hằng... trước khi đóng gói. bỏ toàn bộ chú thich với bản thương phẩm dồn dòng sát nhau. Nói thực tôi có xem đựoc code loại đó cũng thấy ngán lên đến tân óc :)). Đến code mình viết ra nhiều khi luận mãi mới hiểu đấy chứ

Dim 2347532hdkjshdjsah as Long
Dim sdhfjkdsh837485974938 as Double
Dim hdkjsahkdhsa as Long
hkdhsakhd=200
hdkjsahdj=10
sdhfjkdsh837485974938 = 2347532hdkjshdjsah ; sdhfjkdsh837485974938 = 2347532hdkjshdjsah + hdkjsahkdhsa

if 2347532hdkjshdjsah*2=1000 then...
for hdkjsahkdhsa=hdkjsahdj to hkdhsakhd do...


Hỏi thật anh có hiểu được nếu có 1000 dòng lệnh như vậy không?

Oánh kiểu du kích này khó chịu lắm. Chúc anh luôn vui vì chương trình của mình vẫn còn bảo vệ được.

hai2hai
13-10-06, 12:22 PM
Đúng rồi, gọi DLL chỉ là ko cho họ xem được lõi của phần mềm thôi chứ phần gọi nó ra thì khi đã mở được code VBA thì đương nhiên là xem được cách gọi.

Có lẽ em vẫn chưa hiểu ý anh: Là bảo mật code lõi của chương trình chứ ko phải chống CR*ck. Nếu các code chính viết trong DLLs thì coi như yên tâm vì họ chỉ ăn cắp được DLL mà ko hiểu nội dung nó viết gì. Mà hầu hết Business lại nằm trong DLL.

Ở đây anh ko cần bảo mật dạng cr*ck mà quan trọng là bảo mật code thôi. Nghĩa là họ ko thể xem được code bên trong DLL của mình viết ra. Còn code của VBA thì hầu như là xem được. Cách thay đổi code, remove comments thì anh đã biết từ lâu nhưng ... mệt lắm. Chuyện mã hóa anh ko nói đến Excel mà cũng ko care đến bảo mật trên Excel nhiều mà chủ yếu là muốn phần chương trình của mình nằm ngoài excel. Với cách đó thì anh yên tâm vì làm sao dịch ngược DLL thành code được chứ (sau khi đã compact DLL). Còn chuyện chống CR thì mình chỉ đẩy càng cao càng tốt thôi chứ làm sao chống được hoàn toàn. Mà KH bây giờ ko dám mua PM CR* mà ko có support nên anh ko sợ mất lisence lắm mà lo nhất là mất code thôi. (Kiểu như các công ty hiện nay toàn xuất thân từ Fast ra ấy)

tqt37c2
16-10-07, 10:43 PM
Vụ đặt tên biến theo kiểu loằng ngoằng đánh đố theo tui cũng k tác dụng lắm. Chỉ cần Ctrl+H một lúc là lòi hết ra--=0