IDA代码片段,eax移入全局变量

时间:2017-08-02 14:58:58

标签: assembly ida

从书中进行练习实用恶意软件分析(实验5-1)

全局变量dword_1008E5C4(第2张图片)应该包含操作系统版本,但是我可以看到它应该始终设置为0,因为 xor eax, eax

中的sub_10003695指令

我错过了什么吗?

enter image description here enter image description here

2 个答案:

答案 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指令,根据上面的比较结果设置aleax的一部分)的值。