我正在对恶意软件样本执行一些 RE,他们正在检查 SYSTEM_INFO[32] 的值,即SYSTEM_INFO.wProcessorLevel。MS 提供的描述我不清楚。恶意软件会检查该值是否为 0x0 并立即退出。在线消息人士称,这是为了避免恶意软件检查环境——当我在我的 Windows10 PC 上(不是在虚拟机中,只是一个基本的 VS 脚本)上读取这个值时,它返回 0x6。有人可以解释一下这个 SYSTEM_INFO 偏移量的含义吗?
SYSTEM_INFO.wProcessorLevel 是什么意思?
逆向工程
恶意软件
文件
2021-07-10 13:47:13
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”。
其它你可能感兴趣的问题