怪盗基德 发表于 2023-3-6 16:36:44

那位汇编大神过来帮忙看下,这段获取系统版本的汇编怎么支持到w11

如题,这段获取系统版本的汇编目前支持到10,怎么改才能支持到11呢???



.子程序 获取系统版本, 整数型, 公开, 0.未知 1.Win95 2.Win98 3.WinME 4.WinNT 5.Win2000 6.WinXP 7.Win2003 8.Vista 9.Win7 10.Win8 11.Win8.1 12.Win10

置入代码 ({ 83, 49, 192, 100, 139, 29, 24, 0, 0, 0, 100, 139, 13, 48, 0, 0, 0, 133, 201, 121, 32, 185, 0, 0, 83, 0, 57, 75, 88, 117, 4, 176, 1, 235, 113, 57, 75, 84, 117, 4, 176, 2, 235, 104, 57, 75, 124, 117, 99, 176, 3, 235, 95, 139, 153, 168, 0, 0, 0, 139, 137, 164, 0, 0, 0, 131, 249, 4, 119, 4, 176, 4, 235, 74, 131, 249, 5, 117, 27, 131, 251, 0, 117, 4, 176, 5, 235, 60, 131, 251, 1, 117, 4, 176, 6, 235, 51, 131, 251, 2, 117, 4, 176, 7, 235, 42, 131, 249, 6, 117, 35, 131, 251, 0, 117, 4, 176, 8, 235, 28, 131, 251, 1, 117, 2, 176, 9, 131, 251, 2, 117, 2, 176, 10, 131, 251, 3, 117, 2, 176, 11, 131, 251, 4, 117, 2, 176, 12, 91, 201, 195 })
返回 (0)



PUSH EBX
XOR EAX,EAX
MOV EBX,FS:
MOV ECX,FS:
TEST ECX,ECX
JNS SHORT 00000035
MOV ECX,530000
CMP ,ECX
JNZ SHORT 00000023
MOV AL,1
JMP SHORT 00000094
CMP ,ECX
JNZ SHORT 0000002C
MOV AL,2
JMP SHORT 00000094
CMP ,ECX
JNZ SHORT 00000094
MOV AL,3
JMP SHORT 00000094
MOV EBX,
MOV ECX,
CMP ECX,4
JA SHORT 0000004A
MOV AL,4
JMP SHORT 00000094
CMP ECX,5
JNZ SHORT 0000006A
CMP EBX,0
JNZ SHORT 00000058
MOV AL,5
JMP SHORT 00000094
CMP EBX,1
JNZ SHORT 00000061
MOV AL,6
JMP SHORT 00000094
CMP EBX,2
JNZ SHORT 0000006A
MOV AL,7
JMP SHORT 00000094
CMP ECX,6
JNZ SHORT 00000092
CMP EBX,0
JNZ SHORT 00000078
MOV AL,8
JMP SHORT 00000094
CMP EBX,1
JNZ SHORT 0000007F
MOV AL,9
CMP EBX,2
JNZ SHORT 00000086
MOV AL,A
CMP EBX,3
JNZ SHORT 0000008D
MOV AL,B
CMP EBX,4
JNZ SHORT 00000094
MOV AL,C
POP EBX
LEAVE
RETN



全部汇编就在上面了,大神教教怎么改

h576676205 发表于 2023-3-9 14:18:51

沙发,顶帖升级

GameSf 发表于 2023-3-10 02:04:30

.版本 2

.子程序 L_系统_取操作系统类别, 整数型, 公开, 返回“#L_系统类别_”开头的常量
.局部变量 主版本, 短整数型
.局部变量 次版本, 短整数型
.局部变量 build, 短整数型

L_RtlGetNtVersionNumbers (主版本, 次版本, build)
.如果 (L_IsWindowsServer (29))
    .判断开始 (主版本 = 5)
      返回 (#L_系统类别_server2003)' 包含R2
    .判断 (主版本 = 6)
      .判断开始 (次版本 = 0)
            返回 (#L_系统类别_server2008)
      .判断 (次版本 = 1)
            返回 (#L_系统类别_server2008)' R2版本
      .判断 (次版本 = 2)
            返回 (#L_系统类别_server2012)
      .默认
            返回 (#L_系统类别_server2012)' R2版本
      .判断结束

    .判断 (主版本 = 10)
      .判断开始 (build < 17623)
            返回 (#L_系统类别_server2016)
      .判断 (build < 20348)
            返回 (#L_系统类别_server2019)
      .默认
            返回 (#L_系统类别_server2022)
      .判断结束

    .默认

    .判断结束

.否则
    .判断开始 (主版本 = 5)
      .如果 (次版本 = 0)
            返回 (#L_系统类别_win2000)
      .否则
            返回 (#L_系统类别_winxp)
      .如果结束

    .判断 (主版本 = 6)
      .判断开始 (次版本 = 0)
            返回 (#L_系统类别_Vista)
      .判断 (次版本 = 1)
            返回 (#L_系统类别_win7)
      .判断 (次版本 = 2)
            返回 (#L_系统类别_win8)
      .判断 (次版本 = 3)
            返回 (#L_系统类别_win8_1)
      .默认

      .判断结束

    .判断 (主版本 = 10)
      .判断开始 (build < 22000)
            返回 (#L_系统类别_win10)
      .默认
            返回 (#L_系统类别_win11)
      .判断结束

    .默认

    .判断结束

.如果结束
返回 (#L_系统类别_未知)

GameSf 发表于 2023-3-10 02:04:57

.版本 2

.DLL命令 L_RtlGetNtVersionNumbers, 整数型, "ntdll.dll", "RtlGetNtVersionNumbers"
    .参数 major, 短整数型, 传址
    .参数 minor, 短整数型, 传址
    .参数 build, 短整数型, 传址

怪盗基德 发表于 2023-3-10 11:53:09

GameSf 发表于 2023-3-10 02:04
.版本 2

.子程序 L_系统_取操作系统类别, 整数型, 公开, 返回“#L_系统类别_”开头的常量


感谢分享
页: [1]
查看完整版本: 那位汇编大神过来帮忙看下,这段获取系统版本的汇编怎么支持到w11