• 绕过SE的虚拟机检测


    https://www.52pojie.cn/thread-598022-1-1.html

    第一处:
    特征码81 7D E4 68 58 4D 56
            cmp dword ptr ss:[ebp-0x1Ch],0x564D5868h //把564D5868随便改一下就行了
            jnz L0069B0FF
            push -0x4h
            pop eax
            jmp L0069B101
    L0069B0FF:
            xor eax,eax
    L0069B101:
            call L006B3C4C
            retn//这里把eax赋值0也可以
    原理:in eax,dx这个大家都知道
    第二处:
    特征码55 8B EC 83 EC 14

            push ebp//直接mov eax,0  retn
            mov ebp,esp
            sub esp,0x14h
            push ebx
            push esi
            jmp L0069AFA9

    原理:关键部分vm了,不清楚检测方式,无意中发现的
    -----------------

    第一个是检测注册表
    [HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemBIOS]
    "SystemManufacturer"="VMware, Inc."
    564D5868h既是"VMware, Inc."ascii的hash值
    这个注册表的好像会在重启之后被vmware恢复 目前我的办法是写个.reg 每次启动虚拟机时手动覆盖一次

    第二个检测是cpuid的1号功能 ecx的最高位
    .vmx文件中添加
    cpuid.1.ecx = "0111:1111:1101:1010:1111:1011:1011:1111"
    即可直接过掉 这个检测好像是从vmp3.x学来的

    评论有


    是这个吧? se和vmp3不太一样,se直接改ecx最高位可以,但vmp好像不行。

    int m;
    __asm {
    mov eax, 0x1
    cpuid
    mov m, ecx
    }

    if (m & 0x80000000)
       printf("vmware ");

    vmp3.x中还有另外一个检测
    win7及以上 EnumSystemFirmwareTables + GetSystemFirmwareTable 获取FirmwareTableBuffer
    xp NtOpenSection OBJECT_ATTRIBUTES.ObjectName == "devicephysicalmemory" + NtMapViewOfSection打开物理内存
    然后从获取到的buffer里直接搜索特征字符串"VMware" "VirtualBox" "Parallels" 判断点可以搜索特征cmp byte[edx], 56h定位
    这个检测目前我也没有什么好的办法永久解决 可能需要用到一些修改硬件信息的软件 目前我是手动让api调用返回失败来临时bypass这个检测

    参考:
    https://forum.tuts4you.com/topic/38701-vmprotect-ultimate-308/

  • 相关阅读:
    Flex 布局
    vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤
    vue学习起步:了解下
    vue学习一:新建或打开vue项目(vue-cli2)
    adb环境变量配置
    数据类型判断和数据类型转换代码工具
    日期工具集合
    postman变量的使用和设置
    浮点数运算和金额处理
    07- Linux常用命令
  • 原文地址:https://www.cnblogs.com/dhjy123/p/13039249.html
Copyright © 2020-2023  润新知