Tài liệu
/
Làm rối VM
/

Browser Environment

Browser Environment

Pro
v7.9.0+

Khai báo cách bản dựng production của bạn được phục vụ để mã được bảo vệ có thể ràng buộc tính toàn vẹn vào đó.

Tùy chọn browserEnvironment khai báo các thông tin về môi trường mà bản dựng production của bạn được phục vụ, để mã được bảo vệ có thể tự ràng buộc vào chúng hoặc phản ứng với chúng. Đây là một đối tượng nhỏ, và mỗi trường chỉ có hiệu lực khi đi cùng một cơ chế bảo vệ cụ thể — tự thân tùy chọn này không làm gì cả:

browserEnvironment: { transport: 'https', hosting: 'remote' }

transport

Giao thức mà môi trường production của bạn dùng để phục vụ bundle — 'http' hoặc 'https'. Có hiệu lực cùng vmSelfDefending.

Với 'https', một bản sao được một kỹ sư dịch ngược phục vụ qua HTTP thuần sẽ không chạy đúng. 'http' hoặc để trống trường này thì không thêm sự bảo vệ đó.

hosting

Nơi bundle production của bạn được phục vụ — 'remote' hoặc 'local'. Có hiệu lực cùng vmDebugProtection, và chỉ trên các target browserbrowser-no-eval. Yêu cầu trình làm rối phiên bản 7.14.0 trở lên.

Với 'remote', bản sao mà một người dịch ngược lấy về và chạy trong môi trường cục bộ của họ sẽ bị coi là không khớp môi trường thực thi, và các cơ chế phòng thủ chống tự động hóa sẽ phản ứng theo cấu hình trong vmDefenseReaction. 'local' hoặc trường không được đặt sẽ không thêm sự bảo vệ đó.

Các target được hỗ trợ

browserEnvironment chỉ áp dụng cho các target browser, browser-no-evalservice-worker. Với node, userscriptbytenode, tùy chọn này bị từ chối — việc làm rối thất bại với lỗi xác thực thay vì âm thầm bỏ qua thiết lập. hosting còn hẹp hơn: được chấp nhận trên service worker nhưng không ràng buộc gì ở đó.

Yêu cầu

  • transport có hiệu lực cùng vmSelfDefending, hosting cùng vmDebugProtection; nếu không, cả hai đều không làm gì.
  • Một target browser, browser-no-eval hoặc service-worker (browser hoặc browser-no-eval đối với hosting).
  • Trình làm rối phiên bản 7.9.0 trở lên cho transport, 7.14.0 trở lên cho hosting.

Ví dụ

JavaScriptObfuscator.obfuscate(code, {
    vmObfuscation: true,
    vmSelfDefending: true,
    vmDebugProtection: true,
    target: 'browser',
    browserEnvironment: { transport: 'https', hosting: 'remote' }
});