SYSTEM_INFO.wProcessorLevel 是什么意思?

逆向工程 恶意软件 文件
2021-07-10 13:47:13

我正在对恶意软件样本执行一些 RE,他们正在检查 SYSTEM_INFO[32] 的值,即SYSTEM_INFO.wProcessorLevelMS 提供的描述我不清楚。恶意软件会检查该值是否为 0x0 并立即退出。在线消息人士称,这是为了避免恶意软件检查环境——当我在我的 Windows10 PC 上(不是在虚拟机中,只是一个基本的 VS 脚本)上读取这个值时,它返回 0x6。有人可以解释一下这个 SYSTEM_INFO 偏移量的含义吗?

1个回答

对于英特尔wProcessorArchitecture
wProcessorLevel 指示该系列是否是其中之一

386--------------->(3) ,   
486--------------->(4) ,  
pentium----------->(5) ,   
pentium2&above---->(6)

对于其他架构,它们返回不同的信息

在我当前的设备上

:\>wmic cpu get Caption,Level,Name
Caption                                Level  Name
Intel64 Family 6 Model 142 Stepping 9  6      Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz

或一些c片段

#include <windows.h>
#include <stdio.h>

int main(void) {
    SYSTEM_INFO sysinf ={0};
    GetSystemInfo(&sysinf);
    printf("%-30s = %x\n" , "wProcessorArchitecture",sysinf.wProcessorArchitecture ); //9 amd64
    printf("%-30s = %x\n" , "wProcessorLevel" ,sysinf.wProcessorLevel ); //6 pent2&above (core i3)
    printf("%-30s = %u\n" , "dwProcessorType" ,sysinf.dwProcessorType ); // 8664 AMD64
    return 0;
}

可能是恶意软件有选择地运行并且只感染特定的机器

或者正如 igorsk 评论的那样,一些仿真环境可能会返回 0

比如代替 GeniuneIntel vmware 或 hyper-v 用于返回它们的名称,这些名称可用于检测是否在 vms 内运行

在运行 Microsoft Hyper-V 或 VMware 的机器上,此字符串将是“Microsoft HV”或“VMwareVMware”。