只想问一个关于sub_100036C3的问题,因为我没有得到book中给出的详细答案。
简介:
第107页。问题11.导出PSLIST的作用是什么?
第498页。答案:sub_100036C3函数检查是否操作系统版本是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。
但是在反汇编的代码中,仅当dwMajorversion为> = 5时,jb short loc_100036FA
才会跳转到loc_100036FA,并且仅当dwMajorVersion <5时才跳转(如果低于,则跳转)。
因此,我认为它不能用于在XP和Vista / 7之间进行选择,因为5和6都用红色箭头表示。
请,有人可以解释,我是对的还是我犯了什么错误?
[cmp
通过从第二个参数减去第一个参数,即5 - VersionInformation.dwMajorVersion
进行比较。
[jb
如果CF(传送标志)= 1,则跳转。因此,如果dwMajorVersion > 5
,则将跳转,即版本是Vista或更高版本。