从书中进行练习实用恶意软件分析(实验5-1)
全局变量dword_1008E5C4
(第2张图片)应该包含操作系统版本,但是我可以看到它应该始终设置为0,因为
xor eax, eax
sub_10003695
指令
我错过了什么吗?
答案 0 :(得分:2)
GetVersionEx
函数具有以下签名:
BOOL WINAPI GetVersionEx(
_Inout_ LPOSVERSIONINFO lpVersionInfo
);
因此它在堆栈上的局部变量(此处引用为OSVERSIONINFOEX
)中返回OSVERSIONINFO
结构(或EBP
,但这在此处不相关)哪个字段{{1使用
dwPlatformId
指令。值cmp [ebp+VersionInformation.dwPlatformId], 2
表示
操作系统是Windows 7,Windows Server 2008,Windows Vista,Windows Server 2003,Windows XP或Windows 2000。
所以在这些系统上2
设置表示相等的CMP
标志。因为ZERO?
标志现已设置且ZERO?
仍为零
EAX
将setz al
设置为EAX
- 作为子例程的返回值。
答案 1 :(得分:1)
是的,setz
指令,根据上面的比较结果设置al
(eax
的一部分)的值。