Tài liệu
/

Bắt đầu

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ảnThự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ặc Medium 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.name

    Tê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ới node, 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 target node.
  • browser-no-eval - giống browser, nhưng mã đầu ra không dùng eval(). Dùng khi trang mục tiêu có Content Security Policy cấm eval/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ần window/document và sẽ không có tác dụng hoặc ném lỗi trong Node). Một số cơ chế phòng thủ vmSelfDefending dự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ục self khá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 .jsc bằ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ông
  • Disable - 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)

PresetBảo mậtHiệu năngTính năng
VM LowTốt~10xVM cơ bản, điều phối gián tiếp
VM MediumMạnh~12-15x+ Xáo trộn opcode, mã hóa, mồi nhử
VM HighRất mạnh~15-18x+ Mã chết, opcode có trạng thái, mã hóa stack
VM Ultra HighTố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)

PresetBảo vệHiệu năngTính năng
DefaultCơ bảnTối thiểuString array, đơn giản hóa
LowNhẹ~1.1x+ Self-defending, tắt console
MediumVừa phải~1.5x+ Luồng điều khiển, mã chết, base64
HighMạ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.