Обнаружение VMWare (анти) EXCEPTION_PRIV_INSTRUCTION?

Можно ли избежать обнаружения VMWare следующим методом?

Я обнаружил, что этот код используется очень часто:

                  push    edx
            push    ecx
            push    ebx
    
            mov     eax, 'VMXh'
            mov     ebx, 0          // anything but 'VMXh'
            mov     ecx, 10         // get VMWare version
            mov     edx, 'VX'       // port number
            in      eax, dx         // read port
            cmp     ebx, 'VMXh'     // is it a reply from VMWare?
            je      lblInVMWare
    
            xor     ecx, ecx        // not in VMWare - clear return value
    
        lblInVMWare:
            mov     [nVersion], ecx // vmware product type
            pop     ebx
            pop     ecx
            pop     edx

Есть описание как это работает:https://www.codeproject.com/Articles/9823/Detect-if-your-program-is-running-inside-a-Virtual

Короче говоря, этот «волшебный»/специальный порт (in eax, dx // read port) что-то дает и это невозможно запустить на реальном компьютере из-за исключения (привилегированная инструкция)

Согласно этой статье я попытался использовать несколько параметров в своем файле VMX:

      monitor_control.disable_directexec = true"
monitor_control.disable_chksimd = "true"
monitor_control.disable_ntreloc = "true"
monitor_control.disable_selfmod = "true"
monitor_control.disable_reloc = "true"
monitor_control.disable_btinout = "true"
monitor_control.disable_brmemspace = "true"
monitor_control.disable_btpriv = "true"
monitor_control.disable_btseg = "true"
isolation.tools.getPtrLocation.disable = "true"
isolation.tools.setPtrLocation.disable = "true"
isolation.tools.setVersion.disable = "true"
isolation.tools.getVersion.disable = "true"

и удалил VMWare Tools, но не удалось

(Я использую x32dbg, чтобы посмотреть, что происходит - код успешно работает на виртуальной машине и не дает мне никаких исключений)

0 ответов

Другие вопросы по тегам