JavaScriptLàm rối bằng VM

Biến mã của bạn thành bytecode tùy chỉnh chạy trên một máy ảo JS - nay có thêm Self Defending nâng cao, Debug Protection và các biện pháp đối phó chống LLM/CDP.

Xem làm rối VM hoạt động

Chương trình vẫn hoạt động y hệt như trước. Chỉ đơn giản là không còn gì để đọc nữa.

Trước

Mã nguồn dễ đọc

battle-simulator.js

Sau

Bytecode được bảo vệ bằng VM

battle-simulator.protected.js

Logic gốc được chuyển thành bytecode tùy chỉnh mà chỉ máy ảo được nhúng mới có thể thực thi. Các công cụ phân tích tĩnh không thể hiểu được mã nếu chưa dịch ngược toàn bộ máy ảo.

Các lớp phòng thủ chống dịch ngược bằng LLM/CDP

Được xây dựng để chặn hầu hết các cách một LLM tấn công mã đã làm rối.

claude

researcher@MacBook % claude
▐▛███▜▌ Claude Code
▝▜█████▛▘ Opus 4.8 (1M context) with xhigh effort
▘▘ ▝▝ ~/Projects/deobfuscate

❯

Hãy dịch ngược script obfuscated.js, cho biết nó làm gì và khôi phục mã gốc

⏺︎

Trước tiên tôi sẽ đọc tệp này.

vài giờ sau

⏺︎

Tôi đã đốt cả phiên làm việc vào việc này mà chẳng đi tới đâu.

Tôi đã thử mọi bài quen thuộc - phân tích tĩnh, đo đạc lúc chạy, hooking, chạy trong sandbox, công cụ tự viết. Về mặt tĩnh thì bytecode không thể tách ra: khóa giải mã nó chỉ được tạo ra bên trong chương trình đang chạy. Nên tôi thử dump trực tiếp bằng trình gỡ lỗi CDP - và các cơ chế phòng thủ anti-CDP phát hiện inspector ngay khoảnh khắc nó gắn vào, đầu độc trạng thái hoặc chặn hẳn lần chạy.

Mọi lối vào đều bị theo dõi. Cách tĩnh chỉ để lại cho tôi một khối mờ đục, còn chuyển sang cách động để mở nó ra lại chính là thứ mà lớp anti-CDP được dựng lên để bắt.

Tôi xin dừng ở đây. Chỉ từ tệp này, tôi không thể khôi phục mã nguồn.

❯

Hàng trăm nghìn token, mà nó còn chẳng vào nổi bên trong...

* Dịch ngược mã được làm rối bằng preset vm-high-obfuscation với các biện pháp phòng thủ chống LLM/CDP được bật. Việc kiểm tra bộ nhớ khi chạy luôn khả thi trong môi trường JS - các lớp phòng thủ của chúng tôi làm tăng chi phí để tiếp cận được nó.

Cơ chế đằng sau

Hai lớp phòng thủ độc lập - cùng các biện pháp đối phó chống LLM/CDP tích hợp sẵn - phối hợp với nhau để việc phân tích và dịch ngược trở nên bất khả thi trên thực tế

VM Self Defending

Runtime của VM tự xác minh tính toàn vẹn ở mọi giai đoạn - mọi sửa đổi, chèn hook hay chặn bằng proxy đều bị phát hiện và vô hiệu hóa.

Xác minh tính toàn vẹn của mã

Phát hiện hook trên hàm

Bẫy proxy và chặn lệnh gọi

Kiểm tra ngăn xếp lời gọi

Phá vỡ quy trình của agent

VM Debug Protection

Vô hiệu hóa công cụ dành cho nhà phát triển, điểm dừng và việc kiểm tra khi chạy - khiến việc chạy từng bước hoặc quan sát quá trình thực thi của VM trở nên cực kỳ khó khăn.

Phát hiện và phản ứng với DevTools

Vô hiệu hóa điểm dừng

Lấy dấu môi trường

Đánh lạc hướng bằng bytecode mồi

Phòng thủ chống phân tích bằng LLM/CDP

Làm rối cơ bản so với làm rối VM

So sánh chi tiết từng tính năng

Tính năngCơ bảnLàm rối VM

String Array Encryption

Control Flow Flattening

Dead Code Injection

Đơn giản

Nâng cao

Self Defending

Đơn giản

Nâng cao

Debug Protection

Đơn giản

Nâng cao

Ảo hóa bytecode

Mã hóa bytecode

Kiểm tra toàn vẹn mã

Chống hooking & chống can thiệp

Phòng thủ chống LLM/CDP

Các trường hợp sử dụng bảo vệ mã JavaScript

Từ game HTML5 đến ứng dụng doanh nghiệp - bảo vệ JavaScript của bạn khỏi bị đánh cắp và dịch ngược

Game HTML5

Ngăn người chơi gian lận hoặc đối thủ đánh cắp logic game của bạn. Làm rối VM khiến việc dịch ngược trở nên cực kỳ khó khăn.

Ứng dụng SaaS

Bảo vệ các thuật toán frontend độc quyền và logic nghiệp vụ khỏi những đối thủ có thể xem mã phía client của bạn.

Phần mềm có bản quyền

Bảo vệ khâu xác thực giấy phép, các tính năng cao cấp và cơ chế chống vi phạm bản quyền bằng bytecode có khả năng chống can thiệp.

Tiện ích mở rộng trình duyệt

Che chắn mã tiện ích của bạn khỏi những kẻ sao chép và các sửa đổi độc hại. Giữ an toàn cho tài sản trí tuệ của bạn.

Được xây dựng cho các nhóm

Chỗ cho thành viên, preset dùng chung và khóa dịch vụ của nhóm, để việc bảo vệ trở thành tiêu chuẩn của cả nhóm thay vì thiết lập của một người.

Lưu một cấu hình một lần và dùng lại cho mọi sản phẩm và pipeline

Khóa dịch vụ thuộc về nhóm dành cho CI, vẫn hoạt động khi thành viên bị xóa

Bắt buộc một phiên bản obfuscator và một preset cho cả nhóm

Ghim mọi bản dựng vào một phiên bản chính xác, hoặc một phạm vi linh hoạt bám theo các bản phát hành minor và patch

Sẵn sàng bảo vệ mã của bạn?

Xem các gói giá

Câu hỏi thường gặp