Giải mã hóa code VBA EXCEL

Liên hệ QC

BinhTrong2019

Thành viên mới
Tham gia
8/9/19
Bài viết
17
Được thích
4
Em xin chào Anh/Chị thành viên nhóm ạ,
Em đoạn code vba mã hóa,em muốn giải mã code nhờ Anh/Chị hỗ trợ em ạ,Ib em gửi code qua,em gửi chi phí lại anh/chị/

Em xin chân thành cám ơn.
 
Em xin chào Anh/Chị thành viên nhóm ạ,
Em đoạn code vba mã hóa,em muốn giải mã code nhờ Anh/Chị hỗ trợ em ạ,Ib em gửi code qua,em gửi chi phí lại anh/chị/

Em xin chân thành cám ơn.
Úp hết code lên phơi bày trên Đây nếu rảnh và khả năng làm được thì làm cho ... còn phí thì cần lấy mà xài là ok rồi đó he :p
 
Copy hết code úp lên ... File to thì code cho vào file txt úp lên .... mạnh ko xài mail & abcdxyz
Code két vui & nếu làm được thì làm thôi còn lại ko mưu cầu chi khác
Capture.JPG
 
Em gửi ạ,nhờ anh xem giúp em với nha,hoặc hưỡng dẫn giúp em với ạ.

Function IlIIllII(lIIIllII As Variant) As String
On Error Resume Next
Dim IlllIlII As Object, lIllIlII As Long, IIllIlII As String
Set IlllIlII = CreateObject("Scripting.dictionary")
IIllIlII = vbNullString
For lIllIlII = LBound(llI, 1) To UBound(llI, 1)
If Not IlllIlII.exists(CStr(llI(lIllIlII, 1))) Then IlllIlII.Add CStr(llI(lIllIlII, 1)), ""
Next
For lIllIlII = LBound(lIIIllII, 1) To UBound(lIIIllII, 1)
If Not IlllIlII.exists(lIIIllII(lIllIlII, 1)) Then IIllIlII = IIllIlII & CStr(lIIIllII(lIllIlII, 1)) & vbNewLine
Next
IlIIllII = IIllIlII
cái này là lọc dữ liệu không thế ạ. có khi bạn gửi cả file lên. người ta code lại cho có khi còn ngon hơn code cũ ấy
 
Em xin chào Anh/Chị thành viên nhóm ạ,
Em đoạn code vba mã hóa,em muốn giải mã code nhờ Anh/Chị hỗ trợ em ạ,Ib em gửi code qua,em gửi chi phí lại anh/chị/

Em xin chân thành cám ơn.
1/ Bạn gửi cả file đó lên đây.
2/ Treo luôn giải thưởng là bao nhiêu, x*10^6 hay x*10^7 VND?
3/ Những bài này phải đăng vào mục "Thành viên giúp nhau", nếu không lại bay vào thùng rác.
 
Em gửi ạ,nhờ anh xem giúp em với nha,hoặc hưỡng dẫn giúp em với ạ.

Function IlIIllII(lIIIllII As Variant) As String
On Error Resume Next
Dim IlllIlII As Object, lIllIlII As Long, IIllIlII As String
Set IlllIlII = CreateObject("Scripting.dictionary")
IIllIlII = vbNullString
For lIllIlII = LBound(llI, 1) To UBound(llI, 1)
If Not IlllIlII.exists(CStr(llI(lIllIlII, 1))) Then IlllIlII.Add CStr(llI(lIllIlII, 1)), ""
Next
For lIllIlII = LBound(lIIIllII, 1) To UBound(lIIIllII, 1)
If Not IlllIlII.exists(lIIIllII(lIllIlII, 1)) Then IIllIlII = IIllIlII & CStr(lIIIllII(lIllIlII, 1)) & vbNewLine
Next
IlIIllII = IIllIlII
Find and replace nhe
 
Em gửi ạ,nhờ anh xem giúp em với nha,hoặc hưỡng dẫn giúp em với ạ.

Function IlIIllII(lIIIllII As Variant) As String
On Error Resume Next
Dim IlllIlII As Object, lIllIlII As Long, IIllIlII As String
Set IlllIlII = CreateObject("Scripting.dictionary")
IIllIlII = vbNullString
For lIllIlII = LBound(llI, 1) To UBound(llI, 1)
If Not IlllIlII.exists(CStr(llI(lIllIlII, 1))) Then IlllIlII.Add CStr(llI(lIllIlII, 1)), ""
Next
For lIllIlII = LBound(lIIIllII, 1) To UBound(lIIIllII, 1)
If Not IlllIlII.exists(lIIIllII(lIllIlII, 1)) Then IIllIlII = IIllIlII & CStr(lIIIllII(lIllIlII, 1)) & vbNewLine
Next
IlIIllII = IIllIlII
Quăng file lên và nói luôn là muốn làm gì, người khác viết code mới cho nó nhanh :)
 
gợi ý đơn giản nhất cho chủ thớt xong thử quậy coi sao nhé
Trong VBE bôi đen IIllIlII xong nhấn Ctrl +F xong làm theo hình sau
Lưu ý có code người ta làm Dim bien ... cái bien này họ tách ra nhiều từ khác nhau xong nối lại thành cái bien...
chịu mò đi là thấy VD: b & i & e & n = bien

Nên tôn trọng tác giả hỏi người ta một tẹo xem sao .... xong tính tiếp !!!

xx.JPG
 
Lần chỉnh sửa cuối:
Em xin chào Anh/Chị thành viên nhóm ạ,
Em đoạn code vba mã hóa,em muốn giải mã code nhờ Anh/Chị hỗ trợ em ạ,Ib em gửi code qua,em gửi chi phí lại anh/chị/

Em xin chân thành cám ơn.
Bạn tìm các bài viết của bạn huuthang_bd trên diễn đàn này , hay liên hệ với bạn ấy để tìm cách giải quyết vấn đề của bạn.
 
gợi ý đơn giản nhất cho chủ thớt xong thử quậy coi sao nhé
Trong VBE bôi đen IIllIlII xong nhấn Ctrl +F xong làm theo hình sau
Lưu ý có code người ta làm Dim bien ... cái bien này họ tách ra nhiều từ khác nhau xong nối lại thành cái bien...
chịu mò đi là thấy VD: b & i & e & n = bien
Không đơn giản thế đâu. Họ sẽ có vd. IIIIIIIIIIIIIIII_III_IIIIIIIIIIII_II & III_IIIIIIIIIIIIIIIIIII_I & I_I_I_IIIIIIIIIIIII & II_II_II_IIIIIIIIIIIIIIIIII_I. Trong đó có 4 HẰNG với giá trị là b, i, e, n

Replace xong thì có xx & yy & zz & aa (dễ nhìn hơn) mà trong đó 4 HẰNG xx, yy, zz, aa có giá trị là b, i, e, n.

Nhưng để biết là thế thì phải tìm trong 1 rừng code xem xx, yy, zz, aa nó ở đâu và có giá trị thế nào rồi ghép bằng tay mới có "bien". xx & yy & zz & aa không tự thành "bien" được. Khi chạy code thì VBA sẽ tính được xx & yy & zz & aa = "bien" chứ chưa chạy code thì làm sao xx & yy & zz & aa tự thành "bien" được. Phải dò rồi ghép tay thôi. Họăc viết code để biến những chỗ xx & yy & zz & aa thành 1 giá trị duy nhất. Nhưng việc này không dễ như ăn kẹo đâu nhé.

Nguyên tắc thì như kieu manh nói nhưng không hề đơn giản như kieu manh viết. Replace All? Nên nhớ là có thể có nhiều hằng cùng tên nhưng khác giá trị ở nhiều module khác nhau. Thậm chí trong một module có thể có hằng/biến toàn cục và hằng/biến cùng tên cục bộ ở trong các sub/function. Vân vân và mây mây. Ví dụ có 3 hằng có tên khác nhau abcdegh = 1, axxgh = 2 và bcde = 3. Nếu trước hết tìm bcde và chuyển thành xx thì sẽ có 3 tên axxgh = 1, axxgh = 2 và xx = 3. Rõ ràng khai báo axxgh = 1, axxgh = 2 sẽ có lỗi. Để tránh trường hợp này thì phải tìm và thay tên dài nhất, sau đó tìm và thay tên ngắn hơn. Ngoài ra còn nhiều vấn đề nữa về nối chuỗi trong code các sub/function. Vd. có đoạn
Mã:
Range("A1").Value = "Ngay mai em đi. Biển nhớ tên em gọi về"
Sau khi mã hóa sẽ là
Mã:
Range("A1").Value = ... & ... & ... & ... & ... & ... & ...  & ...  & ...  & ... & ... & ... & ChrW(...) & ... & ... & ... & ... & ... & ChrW(...) & ... & ... & ... & ... & ChrW(...) & ... & ... & ChrW(...) & ... & ... & ... & ... & ... & ... & ChrW(...) & ... & ... & ... & ChrW(...)

Tức <12 ...><1 ChrW(...)><5 ...><1 ChrW(...)><4 ...><1 ChrW(...)><2 ...><1 ChrW(...)<6 ...><1 ChrW(...)><3 ...><1 Chrw(...)>

Trong đó các ... là các tên hằng, các hằng có giá trị là chữ cái. Các ... trong ngoặc () là các tên hằng, các hằng là mã - số của ký tự tiếng Việt. Sau khi giải mã thì vẫn có dạng <12 ...><1 ChrW(...)><5 ...><1 ChrW(...)><4 ...><1 ChrW(...)><2 ...><1 ChrW(...)<6 ...><1 ChrW(...)><3 ...><1 Chrw(...)> chỉ khác cái là thay vì III_IIIIIII_IIIIIIIIIIII_II_I thì ta có xx, yy, zz. Thế thôi. Không thể về dạng "Ngay mai em đi. Biển nhớ tên em gọi về" được. Phải dò "tay + mắt" xem xx, yy, zz ở đâu và bằng bao nhiêu rồi tự tính và gộp tay thành "Ngay mai em đi. Biển nhớ tên em gọi về". Làm bằng "tay + mắt" có lẽ chết mất. Mà làm bằng code không hề đơn giản. Vì rất dễ bỏ sót, chưa lường hết các trường hợp. Vân vân và mây mây.


huuthang_bd mã hóa nhiều code của mình. Nếu bây giờ huuthang_bd tiết lộ cách giải mã thì huuthang_bd còn mã hóa code của mình làm gì? Mà chưa chắc huuthang_bd có code giải mã. Vì đơn giản là huuthang_bd không cần. Khi mã hóa code của mình thì huuthang_bd luôn lưu tập tin nguồn. Lúc nào huuthang_bd cần thì lấy tập tin lưu thôi chứ cần gì giải mã?

Nếu là tôi thì tôi thậm chí chả lưu tập tin nguồn làm gì cho tốn chỗ. Có thể làm như sau: Thêm module hichic -> code chỉ là văn bản nên toàn bộ code tôi "tuồn" qua một thuật toán "mã hóa văn bản bất kỳ" -> kết quả là văn bản "đầu trâu mặt ngựa" tôi dán vào module hichic ở dạng comment. Khi cần code nguồn thì lại "tuồn" văn bản "đầu trâu mặt ngựa" từ module hichic qua một thuật toán "mã hóa văn bản bất kỳ" để có văn bản - code nguồn. Thế thôi.
 
Lần chỉnh sửa cuối:
Đai ý nó sẻ có 1 vài cái như thế này ... lò tò mò đi sai rồi sửa khắc sẻ biết
Khuyên nên làm tí một xong thử code xem nếu có sai quay lại bước trước đó ...
Nếu ko là ko biết đường mà mò .... xong thà rằng xóa đi hết ta làm lại từ đầu -0-0-0-
Quy luật đại khái thế bàn vào tán ra sẻ có người viết thành hàm hay Or phương pháp giải mã hay chăng .............
lót dép ngồi Hóng ;):p

Mã:
Public Const ss = "S"
Public Const hh = "h"
Public Const ee = "e"
Public Const ll = "ll"
Public Const xy = "."
Public Const aa = "A"
Public Const pp = "pp"
Public Const l = "l"
Public Const i = "i"
Public Const cc = "c"
Public Const ax = "a"
Public Const tt = "t"
Public Const oo = "o"
Public Const nn = "n"
Public Const n11n = &H1A&
Public Const z1 = "abc"
Public Const x1 = "."
Public Const y1 = "dat"
Public Const File = "\" & z1 & x1 & y1

Sub DaiYNoSeNhuVay()
    MsgBox CreateObject(ss & hh & ee & ll & xy & aa & pp & l & i & cc & ax & tt & i & oo & nn).Namespace(&H1A&).Self.Path & "\abc.dat"
    MsgBox CreateObject("S" & "H" & "E" & "L" & "L" & "." & "A" & "PP" & "L" & "I" & "C" & "A" & "T" & "I" & "O" & "N").Namespace(&H1A&).Self.Path & "\abc.dat"
    MsgBox File
End Sub
 
Lần chỉnh sửa cuối:
Đai ý nó sẻ có 1 vài cái như thế này ... lò tò mò đi sai rồi sửa khắc sẻ biết
Khuyên nên làm tí một xong thử code xem nếu có sai quay lại bước trước đó ...
Nếu ko là ko biết đường mà mò .... xong thà rằng xóa đi hết ta làm lại từ đầu -0-0-0-
Quy luật đại khái thế bàn vào tán ra sẻ có người viết thành hàm hay Or phương pháp giải mã hay chăng .............
lót dép ngồi Hóng ;):p

Mã:
Public Const ss = "S"
Public Const hh = "h"
Public Const ee = "e"
Public Const ll = "ll"
Public Const xy = "."
Public Const aa = "A"
Public Const pp = "pp"
Public Const l = "l"
Public Const i = "i"
Public Const cc = "c"
Public Const ax = "a"
Public Const tt = "t"
Public Const oo = "o"
Public Const nn = "n"
Public Const n11n = &H1A&
Public Const z1 = "abc"
Public Const x1 = "."
Public Const y1 = "dat"
Public Const File = "\" & z1 & x1 & y1

Sub DaiYNoSeNhuVay()
    MsgBox CreateObject(ss & hh & ee & ll & xy & aa & pp & l & i & cc & ax & tt & i & oo & nn).Namespace(&H1A&).Self.Path & "\abc.dat"
    MsgBox CreateObject("S" & "H" & "E" & "L" & "L" & "." & "A" & "PP" & "L" & "I" & "C" & "A" & "T" & "I" & "O" & "N").Namespace(&H1A&).Self.Path & "\abc.dat"
    MsgBox File
End Sub
ANH MÒ RA CHƯA THẤY CÁCH ANH NÓI CHẮC LÀ MÒ NÁT RỒI PHẢI KHÔNG. ANH @batman1 NÓI ĐÚNG Ý. CÁI ADD IN CỦA ANH @huuthang_bd RẤT HAY. EM CŨNG CÓ MÀY MÒ LÀM 1 CÁI MÀ CHƯA ƯNG Ý LẮM. NẾU HOOK ĐƯỢC EDIT CELL THÌ ?><???
 
Nhiều khi "biểu thức" rất phức tạp. Nhưng ta xét một dòng tương đối đơn giản.
Mã:
sArr = WorkSheets(...).Range(...).Value
Code phân tích đoạn text trên nhưng không được phép "lấy" "WorkSheets", "Range", "Value" mà phải tìm ra 2 chỗ ...

Ở mỗi chỗ ... phải xét: có hằng, biến cục bộ nào có tên như thế không. Nếu không thì có hằng, biến toàn cục trong cùng module có tên như thế không. Tiếp theo xét có hằng, biến toàn cục trong các module khác không. Có Name nào có tên như thế không. Cũng có thể nó đã chính là giá trị rồi, vd. "DuLieu", "A3:C16" mà người ta cố tình chỗ đó không mã để làm khó người khác (chỗ mã chỗ không mã). Ở chỗ ... cũng có thể là gọi hàm - hàm trả về chuỗi. Thay cho Range có thể là vd. Shapes. Lúc đó chỗ ... là tên Shape. Người ta thậm chí đổi tên các Shapes trên sheert thành dạng IIIIIIIIIIII_I_IIII_IIIIIIIIIIIIIII_I rồi ở chỗ ... nhập tên đó vào. Tương tự thì người ta có thể đổi tên các control trên Form rồi không còn ComboBox1_Change, ListBox1_Click, Command1_Click ... nữa mà chỉ có dạng IIIIIIIIIIIIIIIIIIIIIII_III_I_II_IIIII_Click, IIIIIIIIIIIIIIIIIIIII_III_I_II_IIIII_Change. Những lúc đó thì ... không chỉ là tên hằng, biến, hàm mà là tên shape, tên control.

Ngồi bây giờ có thể khó nghĩ ra các trường hợp nhưng cứ thử làm thì sẽ thấy các khó khăn trùng trùng điệp điệp. Bởi như tôi đã nói: rất dể bỏ sót, rất khó đoán và lường hết các trường hợp. Vì thế để làm được thì mất hơi bị nhiều thời gian và suy nghĩ đấy.

Chủ thớt không cho toàn bộ code nên tôi không biết người ta mã tới mức độ nào. Nếu chỉ vài chỗ và code ít thì làm theo cách cần cù của kieu manh chắc được. Còn nếu họ mã "tổng lực" thì mất nhiêu thời gian đấy, và không làm tay được. Những chỗ kiểu "Scripting.dictionary" thì huuthang_bd không tha đâu. :D Cũng biến thành <20 ...> đấy. Thậm chí cùng là "i" nhưng có thể dùng 4 hằng khác nhau dạng IIIIIIIIIIIIIII_III_IIIIIIIIIIII_I_II, và cả 4 hằng với tên khác nhau đó cùng có giá trị "i". Với cách đó thì để giải mã "i" thì không chỉ làm 1 lần với Replace được mà phải dùng 4 lần Replace. Làm thế để tăng gấp bội số lần Replace bằng tay, với mục đích làm nản chí người giải mã bằng tay. :D
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom