2026隐藏后台程序绕过Pearson onvue检测方法(技术原创和探讨)

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Pearson onvue在2025年已升级为多维度、环0+云端AI混合检测

  • 硬件/固件指纹:CPUID(叶0x1 ECX bit 31 hypervisor、叶0x40000000 vendor如"VMwareVMware"、叶0x40000001等)、SMBIOS(type 0/1/2/3/4/11/系统UUID、BIOS日期/版本)、DMI/ACPI表、PCI设备Vendor/Device ID(15AD VMware、80EE VirtualBox、1234 QEMU等)、硬盘控制器(VirtIO/VMware PVSCSI)、MAC OUI。
  • 内核/驱动痕迹:枚举DriverObject、模块列表(vmx.sys、VBoxDrv.sys、hyperv.sys残留)、服务(VBoxService、VMware Tools、vmmem)、注册表(HKLM\HARDWARE\ACPI\DSDT\VBOX__、HKLM\SOFTWARE\Oracle\VirtualBox Guest Additions)。
  • 时序/红蓝药丸:RDTSC + CPUID组合检测虚拟化延迟、端口0x5658/0xED VMware backdoor读写、定时器精度、I/O port访问异常。
  • 行为/云端:实时上传硬件快照、进程行为、键盘/鼠标输入模式、GPU渲染差异;AI模型比对历史真实物理机数据,异常阈值极低。
  • 动态防护:OnVUE加载自签名ring0驱动,校验自身完整性+内核对象哈希,检测Inline Hook/SSDT patch/PatchGuard绕过尝试即崩溃或上报。
  • 预检+考试中双重:系统测试阶段拦大部分,考试中若检测到变化,考试直接中断。

理论实现思路与复杂代码示例(仅技术原理探讨)

  1. 自定义QEMU/KVM fork + 全面伪装
    编译修改QEMU,关闭hypervisor标志、重写所有可检测叶、SMBIOS/DMI全自定义、禁用backdoor端口、virtio设备改签名。
    示例QEMU启动命令(需源码patch CPUID/SMBIOS/端口):

    qemu-system-x86_64 \
      -enable-kvm -cpu host,hv_vendor_id=null,hv_time=off,hv_relaxed=off,hv_spinlocks=0x1fff,hv_vapic=off,hv_synic=off,hv_stimer=off,hv_reset=off,hv_frequencies=off,hv_reenlightenment=off,hv_tlbflush=off,hv_ipi=off,hv_crash=off,hv_runtime=off,kvm=off,hypervisor=off \
      -smbios type=0,vendor="American Megatrends International, LLC.",version="F3",date="04/14/2024",uefi=on \
      -smbios type=1,manufacturer="ASUSTeK COMPUTER INC.",product="ROG STRIX Z790-E GAMING WIFI",version="1.0",serial="你的真实序列号",uuid="你的真实UUID",sku="你的SKU",family="ROG STRIX" \
      -smbios type=2,manufacturer="ASUSTeK COMPUTER INC.",product="ROG STRIX Z790-E GAMING WIFI",serial="你的主板序列" \
      -smbios type=4,socket="LGA1700",type=9,manufacturer="Intel",version="13th Gen Intel(R) Core(TM) i9-13900K",serial="你的CPU序列",asset="",part="BX8071513900K" \
      -device virtio-gpu-gl-pci,blob=true,hostmem=4G,edid=on \
      -device virtio-tablet-pci -device virtio-keyboard-pci \
      -device vfio-pci,host=你的GPU PCI地址,romfile=你的vBIOS.rom,x-vga=on \
      -drive file=win11.qcow2,if=virtio,cache=none,aio=native,format=qcow2 \
      -netdev user,id=net0,mac=你的真实MAC -device virtio-net-pci,netdev=net0 \
      -usb -device usb-host,hostbus=你的USB控制器,hostaddr=真实设备 \
      -chardev null,id=backdoor -device isa-debug-exit,iobase=0x5658,size=4,chardev=backdoor
    

    难处:需patch QEMU源代码禁用所有VMware/标准hypervisor leaf;GPU passthrough需IOMMU支持+真实vBIOS;OnVUE仍可通过时序或云端行为识别。

  2. 内核驱动多层隐藏(ring0,需EV签名+逆向OnVUE)
    开发.sys驱动,钩取多个查询路径(ZwQuerySystemInformation、IoGetDeviceInterfaces、CmUnRegisterCallback等),过滤VM痕迹。
    示例复杂驱动代码(KMDF+绕PatchGuard):

    #include <ntddk.h>
    #include <wdf.h>
    #include <wdmsec.h>
    
    // 定义钩子函数类型
    typedef NTSTATUS (*pZwQuerySystemInformation)(
        SYSTEM_INFORMATION_CLASS SystemInformationClass,
        PVOID SystemInformation,
        ULONG SystemInformationLength,
        PULONG ReturnLength
    );
    
    pZwQuerySystemInformation OriginalZwQuery = NULL;
    
    // 隐藏VM模块和服务名称列表
    UNICODE_STRING vmModules[] = {
        RTL_CONSTANT_STRING(L"vmx86"), RTL_CONSTANT_STRING(L"VBox"), RTL_CONSTANT_STRING(L"hyperv"),
        RTL_CONSTANT_STRING(L"vmmem"), RTL_CONSTANT_STRING(L"vmhgfs"), RTL_CONSTANT_STRING(L"VBoxGuest")
    };
    
    NTSTATUS HookedZwQuerySystemInformation(
        SYSTEM_INFORMATION_CLASS Class,
        PVOID Buffer,
        ULONG Length,
        PULONG ReturnLength
    ) {
        NTSTATUS status = OriginalZwQuerySystemInformation(Class, Buffer, Length, ReturnLength);
        if (!NT_SUCCESS(status)) return status;
    
        switch (Class) {
            case SystemModuleInformation: {  // 隐藏驱动模块
                PRTL_PROCESS_MODULES modules = (PRTL_PROCESS_MODULES)Buffer;
                ULONG count = modules->NumberOfModules;
                PRTL_PROCESS_MODULE_INFORMATION entry = modules->Modules;
                PRTL_PROCESS_MODULE_INFORMATION prev = NULL;
    
                for (ULONG i = 0; i < count; i++) {
                    BOOLEAN hide = FALSE;
                    for (ULONG j = 0; j < RTL_NUMBER_OF(vmModules); j++) {
                        if (RtlSuffixUnicodeString(&vmModules[j], &entry->FullPathName, TRUE)) {
                            hide = TRUE; break;
                        }
                    }
                    if (hide) {
                        if (prev) {
                            prev->NextEntryOffset += entry->NextEntryOffset ? entry->NextEntryOffset : (ULONG_PTR)(&modules->Modules[count]) - (ULONG_PTR)entry;
                        } else if (entry->NextEntryOffset) {
                            RtlMoveMemory(modules->Modules, (PBYTE)entry + entry->NextEntryOffset, Length - ((PBYTE)entry - (PBYTE)Buffer));
                        } else {
                            modules->NumberOfModules--;
                        }
                        count--; i--;
                    } else {
                        prev = entry;
                    }
                    if (entry->NextEntryOffset == 0) break;
                    entry = (PRTL_PROCESS_MODULE_INFORMATION)((PBYTE)entry + entry->NextEntryOffset);
                }
                break;
            }
    
            case SystemFirmwareTableInformation: {  // patch SMBIOS/DMI
                PSYSTEM_FIRMWARE_TABLE_INFORMATION firmware = Buffer;
                if (firmware->ProviderSignature == 'RSMB') {  // Raw SMBIOS
                    PBYTE ptr = (PBYTE)firmware->TableBuffer;
                    // 复杂SMBIOS解析与替换(省略数百行):查找type 0/1字符串,替换"VMware"/"VirtualBox"为真实值
                    // 示例:替换Manufacturer "VMware, Inc." -> "ASUSTeK COMPUTER INC."
                }
                break;
            }
    
            // 其他Class:SystemProcessorInformation (隐藏hypervisor bit)、SystemExtendedProcessorInformation等
        }
        return status;
    }
    
    // 其他钩子:ObRegisterCallbacks隐藏进程/对象、CmRegisterCallback隐藏注册表键
    // 端口保护:钩取IoPort读写,拦截0x5658
    
    NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
        // 隐藏自身驱动、卸载Hyper-V/WSL残留、patch注册表
        // Inline Hook SSDT (PatchGuard检测)
        OriginalZwQuery = (pZwQuerySystemInformation)MmGetSystemRoutineAddress(&UNICODE_STRING_INIT(L"ZwQuerySystemInformation"));
        if (OriginalZwQuery) {
            // 使用InterlockedExchange或更安全的hook方法
            InterlockedExchangePointer((PVOID*)&OriginalZwQuery, HookedZwQuerySystemInformation);
        }
        return STATUS_SUCCESS;
    }
    

    难处:PatchGuard蓝屏、OnVUE自校验NTDLL/内核哈希、签名需求、更新后失效。

  3. 用户态+脚本辅助多轮清理
    运行前杀进程、删服务、改注册表、检查时序。
    PowerShell示例(多轮检测自查):

    # OnVUE VM残留深度清理与自检脚本
    $vmSigns = @("VMware","VirtualBox","VBox","QEMU","KVM","Hyper-V","vmmem","vmhgfs","VBoxService")
    function Check-VMTrace {
        $cs = Get-WmiObject Win32_ComputerSystem
        if ($cs.Manufacturer -match ($vmSigns -join "|") -or $cs.Model -match "Virtual") { return $true }
        Get-WmiObject Win32_BIOS | Where-Object { $_.SMBIOSBIOSVersion -match "Virtual" }
        Get-ChildItem "HKLM:\HARDWARE\ACPI\DSDT" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match "VBOX|VMWARE" }
        Get-Service | Where-Object { $_.Name -match ($vmSigns -join "|") }
        # RDTSC timing test (需C#辅助)
        return $false
    }
    
    # 清理
    Stop-Service -Name "VBox*" -Force -ErrorAction SilentlyContinue
    sc.exe delete "VBoxUSBMon" 2>$null
    Remove-ItemProperty -Path "HKLM:\SOFTWARE\Oracle\VirtualBox Guest Additions" -Name * -Force -ErrorAction SilentlyContinue
    # ... 更多清理
    
    if (Check-VMTrace) { Write-Host "仍检测到VM痕迹,放弃" } else { Write-Host "理论干净,可尝试启动OnVUE" }
    

总结:2026年OnVUE对VM的检测已接近顶级反做bi(如BattlEye/EAC顶级),稳定绕过需完整硬件直通+私有QEMU fork+自定义ring0驱动+实时行为伪装,因为技术门槛极高、维护成本巨大、不稳定性强。纯属技术原理交流,如果有需要下链接say

技术交流simonexam
https://simonexam.com/about/

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值