Trình giải mã mã JavaScript (JavaScript Deobfuscator)
Chỉ cần dán một đoạn mã JavaScript đã được mã hóa (gồm các chuỗi được mã hóa bằng hệ số thập phân, tên biến chỉ gồm một chữ cái và một vòng lặp giải mã ở phần đầu), công cụ sẽ tự động phân tích từng lớp cấu trúc bên trong: giải mã các chuỗi bị mã hóa, đưa mảng tra cứu vào nội dung văn bản, đổi tên các biến thành các giá trị thay thế dễ đọc, gỡ bỏ các lớp bao bọc không cần thiết và làm đẹp kết quả hiển thị. Công cụ này rất hữu ích khi phân tích những đoạn mã đáng ngờ mà bạn lấy từ một trang web hoặc từ liên kết pastebin đã được dán vào.
Cách giải mã mã JavaScript
-
1
Dán mã nguồn đã được mã hóa
Đã được thu nhỏ, đóng gói hoặc xuất từ các công cụ theo kiểu `javascript-obfuscator.io`.
-
2
Hãy để bộ phân tích thực hiện việc xử lý dữ liệu.
Các mảng chuỗi được giải mã, các dãy số được tính toán, và các nhánh mã không hoạt động được loại bỏ.
-
3
Áp dụng đặt tên mới
Các biến có ký tự đơn `a`/`b`/`c` được đổi tên thành `var1`, `var2`, v.v. – đây là các tên thay thế dễ đọc, không nhất thiết mang ý nghĩa cụ thể.
-
4
Nâng cao vẻ đẹp
Định danh các đoạn mã, thêm dòng mới, và xuất ra mã có thể được đọc hiểu và phân tích một cách chính xác.
Các kỹ thuật mà công cụ giải mã bí mật sử dụng để đảo ngược quá trình mã hóa
| Phù duối | Ngược chiều |
|---|---|
| Các văn bản chuỗi được mã hóa theo định dạng hex | Giải mã \x48\x69 thành "Hi" |
| Các định danh được mã hóa theo Unicode | \u006E\u0061\u006D\u0065 -> name |
| Mảng chuỗi + hàm giải mã | Đặt mảng vào vị trí nội tuyến và gọi hàm giải mã khi phân tích |
| Phép gấp nếp hằng số số | 0x1F3 + 5 -> 504 |
Các bộ đóng gói eval(...) |
Di chuyển mã bên trong lên cấp cao nhất |
| Phẳng hóa dòng kiểm soát (máy trạng thái) | Phát hiện các điểm chuyển đổi và tái tạo dòng thực thi |
| Mã lỗi / các điều kiện ba giá trị vô ích | Xóa các nhánh không bao giờ được thực thi |
Tên kiểu _0x1a2b3c() |
Thay bằng các tên kiểu tăng dần như var1, var2 |
Giới hạn: những điều công cụ không hỗ trợ
- Phục hồi tên biến gốc. Sau khi
userEmailđược đổi thànha, không công cụ nào có thể suy ra tên ban đầu của nó. Bạn sẽ nhận được cấu trúc dễ đọc, chứ không phải ý nghĩa gốc của các biến đó. - Giải đóng gói các trình ảo hóa tùy chỉnh. Các công cụ làm rối mã thương mại hạng nặng (như JScrambler hoặc các phiên bản dành cho doanh nghiệp của Obfuscator.io) đưa vào một máy ảo tùy chỉnh để thông dịch bytecode; việc vượt qua chúng đòi hỏi phải dịch ngược thủ công.
- Thực thi mã tùy ý: Công cụ giải mã mã đánh giá các biểu thức thuần túy một cách tĩnh; nó không truy xuất tài nguyên từ xa, tạo các phần tử DOM hay giao tiếp với mạng.
Các trường hợp sử dụng điển hình
- Nghiên cứu bảo mật: phân tích kỹ lưỡng một script đáng ngờ xuất hiện trong email hoặc được phát hành từ một CDN bị xâm nhập.
- Khoa học cổ vật mã nguồn: khôi phục các đoạn mã cũ khi duy nhất còn lại là một tập tin được nén nhỏ gọn.
- Học tập: hiểu rõ cách thức mà phương pháp làm mờ dữ liệu ở cấp độ hướng dẫn thực sự hoạt động bên trong hệ thống.
An toàn và đạo đức
Tuyệt đối không chạy các đoạn mã JavaScript không đáng tin cậy trong tab trình duyệt khi đang truy cập vào bất kỳ tài khoản hay hệ thống quan trọng nào – những đoạn mã này có thể đọc cookie, gọi các API nội bộ và thu thập thông tin trạng thái hệ thống. Bản công cụ giải mã tự động hoạt động trên mã nguồn dưới dạng văn bản; nó không thực thi trực tiếp đoạn mã mà bạn nhập.
Chỉ có thể giải mã các đoạn mã mà bạn được ủy quyền phân tích. Việc thực hiện kỹ thuật ngược trên phần mềm có giấy phép có thể bị hạn chế tại khu vực pháp lý của bạn.
Câu hỏi thường gặp
Không. Khi công cụ mã hóa đổi tên userEmail thành _0x1a2b3c, tên gốc sẽ bị mất đi. Công cụ giải mã sẽ cung cấp các giá trị thay thế có thể đọc được (ví dụ: var1, var2) cùng cấu trúc chính xác, nhưng không bao gồm các tên ngữ nghĩa ban đầu.
Không. Hệ thống phân tích mã nguồn dưới dạng cây biểu thức ngữ pháp (AST) và thực hiện các biến đổi tĩnh. Các biểu thức thuần túy (như 0x1F3 + 5) được xử lý gọn gàng, nhưng không tác động đến mạng lưới, cookie hay DOM.
Đúng vậy, nhưng kết quả từ công cụ bundler được rút gọn thay vì bị che giấu một cách cố ý; do đó, kết quả thu được chỉ là mã nguồn được tối ưu hóa hơn mà các lớp bao quanh mô-đun vẫn được giữ nguyên. Nếu bản đồ mã nguồn có sẵn riêng biệt, chúng sẽ cung cấp các tên gọi rõ ràng và dễ hiểu hơn nhiều.
Các công cụ thương mại mạnh mẽ (như Enterprise JScrambler hay các máy ảo tùy chỉnh) tích hợp một trình diễn giải bytecode mà phân tích tĩnh không thể giải mã được. Công cụ này chỉ thu thập được lớp bề mặt, trong khi lôgic cốt lõi vẫn còn bí ẩn nếu không thực hiện quá trình đảo ngược mã thủ công.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Bảng tra cứu nhanh Markdown
Tài liệu Markdown thực dụng với bản xem trước thực tế và ví dụ có thể sao chép cho tiêu đề, danh sách, bảng, mã, liên kết, hình ảnh và cú pháp GFM.
Trình định dạng HTML
Định dạng HTML cục bộ trong trình duyệt với thụt lề hai hoặc bốn khoảng trắng. HTML không được tải lên hoặc xác thực.
Công cụ đổi PX sang PT
Đổi giá trị pixel CSS không âm sang điểm chữ theo công thức 1 px = 0,75 pt. Kết quả hiển thị tối đa bốn chữ số thập phân.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Deobfuscator JavaScript [ID]
- JavaScriptデオブファスカータ [JA]
- เครื่องถอดรหัส JavaScript [TH]
- JavaScript-Deobfuscator [DE]
- 자바스크립트 디오프스버커 [KO]
- Deobfuskator JavaScriptu [PL]
- Desofuscador de JavaScript [PT]
- Desofuscador de JavaScript [ES]
- JavaScript-deobfuscator [SV]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- Déobfuscateur JavaScript [FR]
- JavaScript-deobfuscator [NL]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]
- JavaScript反混淆工具 [ZH]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]