首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实用恶意软件分析-实验5.1问题11功能sub_100036C3

实用恶意软件分析-实验5.1问题11功能sub_100036C3
EN

Stack Overflow用户
提问于 2020-03-01 03:01:09
回答 1查看 166关注 0票数 2

我只想问一个关于sub_100036C3的问题,因为我没有得到book中给出的详细答案。

简介:

第107页。问题11.导出PSLIST的作用是什么?

第498页。答: sub_100036C3函数检查操作系统版本是Windows Vista/7还是XP/2003/2000。

反汇编代码:

我们可以看到说明:

代码语言:javascript
复制
cmp [ebp+VersionInformation.dwMajorVersion], 5
jb short loc_100036FA

XP/2003/2000的dwMajorVersion是5。

对于Windows Vista/7,dwMajorVersion为6。

但在反汇编代码中,只有当dwMajorversion为>= 5时,指令loc_100036FA才不会跳转到>=,并且只有当dwMajorVersion <5时才会跳转(如果低于5,则跳转)。

因此,在我看来,它不能用来在XP和Vista/7之间做出选择,因为5和6都属于红色箭头。

有没有人能解释一下,我是对的还是我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 10:00:18

函数sub_100036C3只是判断主机操作系统是否为Win2000或更高版本(这可能是它返回一个布尔值而不是三个选项的原因(Windows Vista/7?还是XP/2003/2000?或者两者都不是?))。

如果我们使用反汇编,这个函数的逻辑大致如下:

代码语言:javascript
复制
BOOL sub_100036C3()
{
    OSVERSIONINFOA VersionInformation;
    VersionInformation.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
    GetVersionExA(&VersionInformation);

    return VersionInformation.dwPlatformId == 2 && VersionInformation.dwMajorVersion >= 5;
}

因此,只要版本不是Windows95,它们就会遵循中间过程。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60468587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档