Bắt đầu
Obfuscator.io biến mã nguồn dễ đọc của bạn thành một phiên bản được bảo vệ, khó hiểu và khó dịch ngược. Đây là công cụ lý tưởng để bảo vệ các thuật toán độc quyền, logic cấp phép và mã quan trọng đối với hoạt động kinh doanh.
Chào mừng đến với Obfuscator.io
Hướng dẫn này sẽ dẫn bạn qua việc làm rối tệp đầu tiên, chọn một preset và hiểu bảng tùy chọn. Để tìm hiểu sâu hơn, hãy xem các phần Làm rối VM, Làm rối cơ bản và Thực hành tốt nhất.
Bắt đầu nhanh
1. Dán mã của bạn
Nhập mã JavaScript của bạn vào bảng soạn thảo bên trái. Bạn có thể dán mã trực tiếp hoặc dùng tính năng tải tệp lên để xử lý hàng loạt.
2. Chọn một preset
Chọn một preset từ danh sách thả xuống trong bảng Tùy chọn. Bắt đầu với
Low Obfuscationđể thay đổi tối thiểu hoặcMedium Obfuscationđể có mức bảo vệ cân bằng. Các preset VM cung cấp mức bảo mật mạnh nhất.3. Nhấn "Obfuscate"
Nhấn nút Obfuscate để biến đổi mã của bạn. Kết quả được bảo vệ sẽ xuất hiện ở bảng bên phải.
4. Sao chép hoặc tải xuống
Dùng nút Sao chép hoặc Tải xuống để lấy mã đã làm rối. Kết quả đầu ra sẵn sàng để dùng trong môi trường thực tế.
Tương thích mã Quan trọng
Làm rối (cả VM lẫn không dùng VM) biến đổi mã của bạn theo những cách ảnh hưởng đến một số hành vi khi chạy của JavaScript. Mã của bạn không được phụ thuộc vào các tính năng sau:
function.toString()/class.toString()Làm rối thay đổi hoàn toàn cách biểu diễn mã nguồn. Mã phân tích cú pháp hoặc so sánh mã nguồn của hàm sẽ hỏng.
function.name/class.nameTên hàm và tên lớp được đổi thành các định danh ngẫu nhiên. Mã dựa vào
.nameđể ghi log, tuần tự hóa hoặc reflection sẽ nhận được các tên đã bị làm rối.
// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name); // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"
// After obfuscation
console.log(calculatePrice.name); // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code
Các tùy chọn cơ bản
Trước khi làm rối, hãy cấu hình các tùy chọn cơ bản sau để phù hợp với môi trường mục tiêu của bạn.
Target target
Chỉ định môi trường thực thi cho mã đã làm rối:
browser(mặc định) - môi trường trang web tiêu chuẩn. Mã đầu ra giống hệt vớinode, nhưng một số tùy chọn dành riêng cho trình duyệt không được phép dùng với targetnode.browser-no-eval- giốngbrowser, nhưng mã đầu ra không dùngeval(). Dùng khi trang mục tiêu có Content Security Policy cấmeval/unsafe-eval.node- môi trường Node.js. Các tùy chọn dành riêng cho trình duyệt bị vô hiệu hóa (chúng cầnwindow/documentvà sẽ không có tác dụng hoặc ném lỗi trong Node). Một số cơ chế phòng thủvmSelfDefendingdựa vào các API chỉ có trên trình duyệt - phát hiện trình duyệt headless, khôi phục realm sạch dựa trên iframe, kiểm tra chống inspector/DOM - không được phát ra cho target này.service-worker- ngữ cảnh Service Worker. Không cówindow, không códocument, biến toàn cụcselfkhác biệt.userscript- sandbox của trình quản lý userscript (ví dụ Tampermonkey). Các cơ chế phòng thủvmSelfDefendingđược điều chỉnh tương ứng. Yêu cầu obfuscator v6.9.0+.bytenode- dành cho mã sẽ được biên dịch thành.jscbằng bytenode. Yêu cầu obfuscator v6.13.0+.
Strict Mode strictMode
Kiểm soát cách trình làm rối xử lý chế độ strict của JavaScript:
Auto(mặc định) - Tự động phát hiện chế độ strict từ mã. Trình làm rối phân tích mã của bạn để tìm chỉ thị"use strict"Enable- Buộc áp dụng chế độ strict cho toàn bộ mã, bất kể có"use strict"hay khôngDisable- Chỉ những chỉ thị"use strict"xuất hiện tường minh trong mã nguồn mới được coi là chế độ strict
Hiểu về các preset
Preset là các tổ hợp tùy chọn đã được cấu hình sẵn. Có hai nhóm riêng biệt:
Preset VM Pro (ảo hóa bytecode)
| Preset | Bảo mật | Hiệu năng | Tính năng |
|---|---|---|---|
VM Low | Tốt | ~10x | VM cơ bản, điều phối gián tiếp |
VM Medium | Mạnh | ~12-15x | + Xáo trộn opcode, mã hóa, mồi nhử |
VM High | Rất mạnh | ~15-18x | + Mã chết, opcode có trạng thái, mã hóa stack |
VM Ultra High | Tối đa | ~20x+ | + Các lớp làm rối không dùng VM |
Các con số hiệu năng là giá trị trung bình - mức ảnh hưởng thực tế phụ thuộc nhiều vào mã (ví dụ, mã dùng nhiều đệ quy hoặc vòng lặp nóng sẽ chậm hơn rõ rệt).
Preset không dùng VM (làm rối tiêu chuẩn)
| Preset | Bảo vệ | Hiệu năng | Tính năng |
|---|---|---|---|
Default | Cơ bản | Tối thiểu | String array, đơn giản hóa |
Low | Nhẹ | ~1.1x | + Self-defending, tắt console |
Medium | Vừa phải | ~1.5x | + Luồng điều khiển, mã chết, base64 |
High | Mạnh | ~2x | + Debug protection, mã hóa rc4 |
Tổng quan giao diện
- Trình soạn thảo đầu vào - Dán hoặc nhập mã nguồn JavaScript của bạn. Kéo và thả tệp hoặc dùng nút tải lên. Các tệp HTML có script nội tuyến cũng được hỗ trợ Pro.
- Bảng kết quả - Hiển thị kết quả đã làm rối. Dùng nút Sao chép hoặc Tải xuống để lấy mã được bảo vệ.
- Bộ chọn preset - Chọn preset VM hoặc không dùng VM. Các preset VM được nhóm ở trên cùng. Preset xác định các tùy chọn cơ sở mà bạn có thể tùy chỉnh.
- Bảng tùy chọn - Tinh chỉnh các thiết lập làm rối. Nhấn biểu tượng
?bên cạnh bất kỳ tùy chọn nào để xem tài liệu của nó. - Nút Obfuscate - Biến đổi mã của bạn bằng các tùy chọn đã chọn. Các preset VM được xử lý phía máy chủ; các preset không dùng VM chạy trong trình duyệt của bạn.
- Tải lên nhiều tệp Pro - Xử lý nhiều tệp cùng lúc và tải xuống dưới dạng ZIP.
- Bảng lịch sử Pro - Truy cập các lần làm rối trước đó và khôi phục đầu vào/đầu ra.
