Mã độc có thể phát hiện ra chúng đang chạy trong môi trường máy ảo do một số đặc điểm của môi trường này và tìm cách ẩn mình để tránh bị phát hiện.
Chẳng hạn như các máy ảo VMware chạy hệ điều hành Windows sẽ có các khóa sau trong registry:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\DriverDesc,
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\ProviderName.
Các cấu trúc bộ nhớ Store Interrupt Descriptor Table (SIDT) nằm tại vùng nhớ nhất định, các tiến trình và tệp đặc thù (VMwareService.exe, VMwareTray.exe), các thuộc tính phần cứng hay địa chỉ MAC cũng có thể là dấu hiệu giúp nhận biết môi trường VMWare.
Chẳng hạn như máy ảo VMWare thường có địa chỉ MAC bắt đầu bằng 00-05-69, 00-0c-29, 00-1c-14 hay 00-50-56. BIOS serial number của các máy ảo VMWare sẽ có chuỗi ‘VMware’. Để đánh lừa mã độc, người ta đã nghĩ ra các biện pháp chặn và thay đổi giá trị do API trả về .
Tuy nhiên, cuộc chạy đua vẫn chưa chấm dứt. Trong quá trình phân tích, chuyên gia nghiên cứu cao cấp Caleb Fenton của công ty SentinelOne vừa phát hiện một kỹ thuật mới của mã độc. Loại mã độc mà ông xem xét không chịu kích hoạt vì máy ảo mà ông dùng để thử nghiệm (chưa từng mở một tài liệu Word nào).
Ông nói rằng, phần lớn người dùng từng mở nhiều hơn hai văn bản Word. Tuy nhiên, trên máy ảo dùng để bẫy mã độc thì không có dấu tích nào, vì chẳng có ai sử dụng máy đó để làm việc. Ngoài ra, các nhà nghiên cứu thường khôi phục máy ảo về trạng thái gốc khi bắt tay vào xem xét một loại mã độc mới.
Vì thế, lịch sử của trình soạn thảo văn bản sẽ trống. Nhờ nhận biết đang ở trong môi trường thử nghiệm nên mã độc sẽ tránh thực hiện các hành vi đáng ngờ, phá hoại và tránh bị phát hiện. Trên những máy có lịch sử soạn thảo văn bản, mã độc sẽ kích hoạt và tải thêm những cấu phần phá hoại.