VM Self Defending
Xem
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
Tùy chọn vmSelfDefending bổ sung cho runtime của VM nhiều lớp phát hiện can thiệp, kiểm tra tính toàn vẹn của mã, chống hooking và bảo vệ chống dịch ngược. Khi kết hợp với vmDebugProtection, nó khiến cả phân tích thủ công lẫn phân tích có AI hỗ trợ trở nên khó hơn đáng kể.
Tùy chọn này buộc bật vmBytecodeArrayEncoding và làm tăng chi phí thực thi của VM. Hãy đo trên chính các đường chạy nóng của bạn.
Cách mỗi lần phát hiện phản ứng - và cách báo cáo các lần phát hiện về backend của bạn thay vì chỉ làm hỏng mã - được trình bày trong Telemetry và phản ứng phòng thủ VM; vmSelfDefending phát ra các lần phát hiện trong các danh mục phản ứng automation, debugger, tamper và integrity.
Khuyến nghị: Dùng cùng với vmDebugProtection, vmBytecodeArrayEncodingKey và vmBytecodeArrayEncodingKeyGetter để có mức bảo vệ tối đa.
Tương thích môi trường chạy
Phát hiện môi trường nhạy cảm
Tùy chọn này ràng buộc mã đã làm rối với môi trường chạy mục tiêu của nó và dùng kỹ thuật lấy dấu vân tay trình duyệt nâng cao để phát hiện các công cụ tự động hóa. Mã được bảo vệ bằng tùy chọn này sẽ cố ý bị hỏng khi chạy trong:
- Trình duyệt headless (headless Chrome/Chromium, PhantomJS)
- Công cụ tự động hóa trình duyệt (Puppeteer, Playwright, Cypress, Selenium/ChromeDriver, Nightmare)
- Node.js (khi
targetđược đặt làbrowser) - jsdom hoặc các môi trường giả lập DOM phía máy chủ tương tự
- Môi trường mà các hàm dựng sẵn gốc của trình duyệt đã bị hook hoặc bị thay thế (trừ khi được khai báo bằng
browserEnvironment.hookedBuiltins)
Mã sẽ hoạt động bình thường trong các trình duyệt thông thường (Chrome, Firefox, Safari, Edge), kể cả khi được tải bên trong iframe, tiện ích mở rộng trình duyệt (content script) và Web Worker.
Hãy chọn target theo môi trường chạy thực tế. Bản dựng Browser và Node chứa các cơ chế phòng thủ khác nhau: target node bỏ qua những cơ chế dựa vào API chỉ có trên trình duyệt, còn một bản dựng browser chạy dưới Node sẽ bị hỏng như đã liệt kê ở trên.
Khi browserEnvironment.hookedBuiltins được đặt thành true (v7.15.0+), Self Defending chấp nhận một môi trường chạy thay thế hợp lệ các hàm dựng sẵn gốc bằng lớp bọc JavaScript thay vì coi chúng là can thiệp, nhờ đó mã được bảo vệ vẫn chạy được ở đó. Điều này cố ý nới lỏng việc phát hiện hook trên hàm dựng sẵn; ảo hóa VM, chống gỡ lỗi và các cơ chế bảo vệ tính toàn vẹn không bị ảnh hưởng. Trường transport của cùng tùy chọn đó ràng buộc bản dựng với giao thức mà nó được phục vụ qua.
Self Defending kiểm tra tính toàn vẹn của chính đầu ra của nó, vì vậy đừng rút gọn, định dạng lại hay viết lại mã đã làm rối theo bất kỳ cách nào sau đó. Hãy chạy các công cụ đó trên mã nguồn trước bước làm rối.
Kiểm thử và CI
Các cơ chế phòng thủ này cũng tác động lên chính các agent, công cụ tự động hóa và trình gỡ lỗi của bạn. Chúng có thể dừng việc thực thi, ném ra các lỗi không liên quan, hoặc tạo ra kết quả sai. Tùy chọn này được thiết kế để ngăn phân tích tự động và không thể dùng an toàn với bất kỳ framework tự động hóa nào, vì vậy hãy chạy kiểm thử chức năng trên một bản dựng kiểm thử riêng với vmSelfDefending bị tắt. Kiểm thử và CI liệt kê đầy đủ các giá trị ghi đè cho bản dựng đó.
