实用恶意软件分析 - 实验 5.1 问题 11 函数 sub_100036C3
Practical Malware Analysis - Lab 5.1 Question 11 function sub_100036C3
只是想问一个关于 sub_100036C3 的问题,因为我没有得到 book 中给出的详细答案。
简介:
第107页问题11.导出PSLIST有什么作用?
第 498 页。答案:sub_100036C3 函数检查是否
OS 版本是 Windows Vista/7 或 XP/2003/2000.
反汇编代码:
我们看到指令:
cmp [ebp+VersionInformation.dwMajorVersion], 5
jb short loc_100036FA
dwMajorVersion
是 XP/2003/2000.
的 5
dwMajorVersion
是 Windows Vista/7.
的 6
但在反汇编代码指令中 jb short loc_100036FA
只有当 dwMajorversion >= 5 时才会跳转到 loc_100036FA 并且只有当 dwMajorVersion < 5 时才会跳转(如果低于则跳转)。
所以我认为它不能用来在XP和Vista/7之间进行选择,因为5和6都落在红色箭头中。
拜托,有人可以解释一下,我是对的还是我做错了什么?
函数sub_100036C3只是判断主机操作系统是否为Win2000或以上(这可能就是为什么returns一个bool值而不是三个选项的原因(Windows Vista/7?或者XP/2003/2000?或者两者都不是?))。
如果我们使用反汇编的话,这个函数的逻辑大致如下:
BOOL sub_100036C3()
{
OSVERSIONINFOA VersionInformation;
VersionInformation.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
GetVersionExA(&VersionInformation);
return VersionInformation.dwPlatformId == 2 && VersionInformation.dwMajorVersion >= 5;
}
所以只要版本不是Windows95,他们都会走中间的流程。
只是想问一个关于 sub_100036C3 的问题,因为我没有得到 book 中给出的详细答案。
简介:
第107页问题11.导出PSLIST有什么作用?
第 498 页。答案:sub_100036C3 函数检查是否 OS 版本是 Windows Vista/7 或 XP/2003/2000.
反汇编代码:
我们看到指令:
cmp [ebp+VersionInformation.dwMajorVersion], 5
jb short loc_100036FA
dwMajorVersion
是 XP/2003/2000.
dwMajorVersion
是 Windows Vista/7.
但在反汇编代码指令中 jb short loc_100036FA
只有当 dwMajorversion >= 5 时才会跳转到 loc_100036FA 并且只有当 dwMajorVersion < 5 时才会跳转(如果低于则跳转)。
所以我认为它不能用来在XP和Vista/7之间进行选择,因为5和6都落在红色箭头中。
拜托,有人可以解释一下,我是对的还是我做错了什么?
函数sub_100036C3只是判断主机操作系统是否为Win2000或以上(这可能就是为什么returns一个bool值而不是三个选项的原因(Windows Vista/7?或者XP/2003/2000?或者两者都不是?))。
如果我们使用反汇编的话,这个函数的逻辑大致如下:
BOOL sub_100036C3()
{
OSVERSIONINFOA VersionInformation;
VersionInformation.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
GetVersionExA(&VersionInformation);
return VersionInformation.dwPlatformId == 2 && VersionInformation.dwMajorVersion >= 5;
}
所以只要版本不是Windows95,他们都会走中间的流程。