u@home:~$

double fetch, case 32 - case 62

DOUBLE FETCH:   cr3 0xa9774000, syscall 0x12dd
   eip 0xfffff961a3dc59e0, user_address 0x13ee9902a60, user_data 0x0, modrm 0x1, pc 0xfffff961a3dc5a1c
   eip 0xfffff961a3a9b389, user_address 0x13ee9902a60, user_data 0x0, modrm 0x0, pc 0xfffff961a3a9b417

0xfffff961a3dc5a1c - 0xfffff961a3a9b417 = 32A605

1c0035a1c − 1c002c417 = 9605

win32kbase.sys


       1c00359ed 48 0f 43        CMOVNC     RDX,qword ptr [W32UserProbeAddress]              = ??
                 15 cb ea 
                 0c 00
       1c00359f5 8a 02           MOV        AL,byte ptr [RDX]
       1c00359f7 49 8b 48 20     MOV        RCX,qword ptr [R8 + 0x20]
       1c00359fb 48 89 8d        MOV        qword ptr [RBP + local_f8],RCX
                 88 00 00 00
       1c0035a02 48 8d 45 30     LEA        RAX=>local_150,[RBP + 0x30]
       1c0035a06 48 89 85        MOV        qword ptr [RBP + local_98],RAX
                 e8 00 00 00
       1c0035a0d 48 3b 0d        CMP        RCX,qword ptr [W32UserProbeAddress]              = ??
                 ac ea 0c 00
       1c0035a14 48 0f 43        CMOVNC     RCX,qword ptr [W32UserProbeAddress]              = ??
                 0d a4 ea 
                 0c 00
   --> 1c0035a1c 8a 01           MOV        AL,byte ptr [RCX]
       1c0035a1e 48 8b 8d        MOV        RCX,qword ptr [RBP + local_f8]
                 88 00 00 00
       1c0035a25 48 8b 41 20     MOV        RAX,qword ptr [RCX + 0x20]
       1c0035a29 48 89 45 30     MOV        qword ptr [RBP + local_150],RAX
       1c0035a2d 48 8b 41 28     MOV        RAX,qword ptr [RCX + 0x28]
       1c0035a31 48 89 45 38     MOV        qword ptr [RBP + local_148],RAX
       1c0035a35 8b 81 88        MOV        EAX,dword ptr [RCX + 0x88]
                 00 00 00

                             LAB_1c002c3f6                                   XREF[4]:     1c00f63a0(*), 1c00f63b4(*), 
                                                                                          1c010edec(*), 1c010edf4(*)  
       1c002c3f6 48 89 74        MOV        qword ptr [RSP + local_res10],RSI
                 24 48
       1c002c3fb 48 8d 4c        LEA        param_1=>local_res8,[RSP + 0x40]
                 24 40
       1c002c400 41 8b f9        MOV        EDI,param_4
       1c002c403 45 8b f0        MOV        R14D,param_3
       1c002c406 48 8b f2        MOV        RSI,param_2
       1c002c409 ff 15 d9        CALL       qword ptr [->NTOSKRNL.EXE::PsGetCurrentThreadW
                 f2 0e 00
       1c002c40f 45 33 ff        XOR        R15D,R15D
       1c002c412 48 85 c0        TEST       RAX,RAX
       1c002c415 74 0e           JZ         LAB_1c002c425
   --> 1c002c417 48 8b 00        MOV        RAX,qword ptr [RAX]
       1c002c41a 48 85 c0        TEST       RAX,RAX
       1c002c41d 74 06           JZ         LAB_1c002c425
       1c002c41f 48 8b 68 48     MOV        RBP,qword ptr [RAX + 0x48]
       1c002c423 eb 03           JMP        LAB_1c002c428

这两段代码里的有点远,偏移对不上。

fffff960`b5c00000 fffff960`b5f82000   win32kfull   (deferred)             
fffff960`b5f90000 fffff960`b60f2000   win32kbase   (deferred)             
fffff960`b6100000 fffff960`b610a000   TSDDD      (deferred)             
fffff960`b6110000 fffff960`b614c000   cdd        (deferred)             
fffff960`b6ac0000 fffff960`b6ae3000   win32k     (deferred)

win32kfull.sys

fffff960b5f82000 - fffff960b5c00000 = 382000

win32kbase.sys

fffff960b60f2000 - fffff960b5f90000 = 162000

win32k.sys

fffff960b6ae3000 - fffff960b6ac0000 = 23000

tsddd.dll

fffff960b610a000 - fffff960b6100000 = a000

cdd.dll

fffff960b614c000 - fffff960b6110000 = 3c000

代码主要应该在win32kfull和win32kbase.sys里。要是两处代码都在win32kbase.sys里,相隔的距离又不该那么大,可win32kfull.sys里 又找不到对应的代码。

但这两处代码要是都在win32kbase.sys里,相隔就不应该那么大。

DOUBLE FETCH:   cr3 0xa9774000, syscall 0x12dd
   eip 0xfffff961a3dc59e0, user_address 0x3eb02d2000, user_data 0x0, modrm 0x2, pc 0xfffff961a3dc59f5
   eip 0xfffff961a3a9b389, user_address 0x3eb02d2000, user_data 0x0, modrm 0x0, pc 0xfffff961a3a9b3fd

DOUBLE FETCH:   cr3 0xa9774000, syscall 0x12dd
   eip 0xfffff961a3dc59e0, user_address 0x3eb02d2020, user_data 0x13ee9902a60, modrm 0x48, pc 0xfffff961a3dc59f7
   eip 0xfffff961a3a9b389, user_address 0x3eb02d2020, user_data 0x13ee9902a60, modrm 0x55, pc 0xfffff961a3a9b3ff

DOUBLE FETCH:   cr3 0xa9774000, syscall 0x12dd
   eip 0xfffff961a3dc59e0, user_address 0x13ee9902a60, user_data 0x0, modrm 0x1, pc 0xfffff961a3dc5a1c
   eip 0xfffff961a3a9b389, user_address 0x13ee9902a60, user_data 0x0, modrm 0x0, pc 0xfffff961a3a9b417

但正好这三条记录在一起,可以相互验证。比如9f5 9f7 a1c和3fd 3ff 417,指令都离得非常近。

比如9f5,9f7这两条,就可以搜8b 02 8b 48。

这个结果只有在win32kfull.sys里有多条,ntoskrnl.exe有一条,其它几个win32k模块里都没有,并且8a 02 8a 48这样的组合我也都搜了,没有。

但win32kfull.sys的这几条都不是在pc 9f5上。

1c004d1be		MOV RAX,qword ptr [RDX]
1c004d231		MOV RAX,qword ptr [RDX]
1c00cc830		MOV RAX,qword ptr [RDX]
1c012b516		MOV RAX,qword ptr [RDX]
1c01a10dc	LAB_1c01a10db	MOV RAX,qword ptr [RDX]
1c021f28b		MOV RAX,qword ptr [RDX]

再搜3fd,3ff的指令8b 00 8b 55,但这段特征哪个模块里也没有,包括8a 00 8b 55,8a 00 8a 55,8b 00 8a 55,都试过了。

通过8b 02 8b 48搜出来的结果,加上a1c-9f7的偏移25,找相应的下一条mov指令。结果上面这几条记录都不符合。

这似乎能说明这几条记录应该不在win32kfull.sys win32kbase.sys win32k.sys tsddd.dll cdd.dll这几个模块里。

下面这段代码是无意中看到的,先放在这,以后再看。

win32k.sys

                             LAB_1c02039ed                                   XREF[1]:     1c02039e4(j)  
       1c02039ed 48 8b 0d        MOV        RCX,qword ptr [->NTOSKRNL.EXE::MmUserProbeAddr   = 00378272
                 64 14 16 00
       1c02039f4 48 85 f6        TEST       RSI,RSI
       1c02039f7 74 15           JZ         LAB_1c0203a0e
   --> 1c02039f9 48 8b 01        MOV        RAX,qword ptr [RCX]
       1c02039fc 48 3b f0        CMP        RSI,RAX
       1c02039ff 48 0f 43 f0     CMOVNC     RSI,RAX
       1c0203a03 0f 10 06        MOVUPS     XMM0,xmmword ptr [RSI]
       1c0203a06 f3 0f 7f        MOVDQU     xmmword ptr [RSP + local_40[0]],XMM0
                 44 24 38
       1c0203a0c eb 08           JMP        LAB_1c0203a16
                             LAB_1c0203a0e                                   XREF[1]:     1c02039f7(j)  
       1c0203a0e 0f 57 c0        XORPS      XMM0,XMM0
       1c0203a11 0f 11 44        MOVUPS     xmmword ptr [RSP + local_40[0]],XMM0
                 24 38
                             LAB_1c0203a16                                   XREF[1]:     1c0203a0c(j)  
       1c0203a16 4d 85 f6        TEST       R14,R14
       1c0203a19 74 16           JZ         LAB_1c0203a31
   --> 1c0203a1b 48 8b 01        MOV        RAX,qword ptr [RCX]
       1c0203a1e 4c 3b f0        CMP        R14,RAX
       1c0203a21 4c 0f 43 f0     CMOVNC     R14,RAX
       1c0203a25 41 0f 10 06     MOVUPS     XMM0,xmmword ptr [R14]
       1c0203a29 f3 0f 7f        MOVDQU     xmmword ptr [RSP + local_50[0]],XMM0
                 44 24 28
       1c0203a2f eb 08           JMP        LAB_1c0203a39


case 33

这个没用。

DOUBLE FETCH:   cr3 0xa9774000, syscall 0x99
   eip 0xfffff80179d2e602, user_address 0x3eb00fe998, user_data 0x18, modrm 0x1, pc 0xfffff80179d2e68d
   eip 0xfffff80179d2e602, user_address 0x3eb00fe998, user_data 0x18, modrm 0x1, pc 0xfffff80179d2e6b4

                             LAB_1404a4676                                   XREF[1]:     1404a4609(j)  
       1404a4676 4d 85 f6        TEST       R14,R14
       1404a4679 74 43           JZ         LAB_1404a46be
       1404a467b 49 8b ce        MOV        param_1,R14
       1404a467e 4c 3b 35        CMP        R14,qword ptr [MmUserProbeAddress]               = ??
                 7b ab ed ff
       1404a4685 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d 73 ab 
                 ed ff
   --> 1404a468d 8b 01           MOV        EAX,dword ptr [param_1]
       1404a468f 83 f8 18        CMP        EAX,0x18
       1404a4692 0f 85 8e        JNZ        LAB_1404a4726
                 00 00 00
       1404a4698 41 f6 c6 03     TEST       R14B,0x3
       1404a469c 0f 85 92        JNZ        LAB_1404a4734
                 00 00 00
       1404a46a2 49 8b ce        MOV        param_1,R14
       1404a46a5 4c 3b 35        CMP        R14,qword ptr [MmUserProbeAddress]               = ??
                 54 ab ed ff
       1404a46ac 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d 4c ab 
                 ed ff
   --> 1404a46b4 8a 01           MOV        AL,byte ptr [param_1]
       1404a46b6 88 01           MOV        byte ptr [param_1],AL
       1404a46b8 8a 41 17        MOV        AL,byte ptr [param_1 + 0x17]
       1404a46bb 88 41 17        MOV        byte ptr [param_1 + 0x17],AL


case 34

DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x4a, pc 0xfffff80179cb3368
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x42, pc 0xfffff80179cb3375

DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x4a, pc 0xfffff80179cb3368
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x42, pc 0xfffff80179cb3381

DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x4a, pc 0xfffff80179cb3368
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x42, pc 0xfffff80179cb339b

DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x4a, pc 0xfffff80179cb3368
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x4a, pc 0xfffff80179cb33a8


DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cb332c, user_address 0xf5881fdb10, user_data 0x3, modrm 0x4a, pc 0xfffff80179cb3368
   eip 0xfffff80179cb30ed, user_address 0xf5881fdb10, user_data 0x0, modrm 0x4b, pc 0xfffff80179cb310e

0xfffff80179cb310e和其它几个地方不是在同一个函数里。

syscall 0xbb NtCreateWaitCompletionPacket

                             LAB_1404290ff                                   XREF[1]:     1404290ba(j)  
       1404290ff 83 63 10 00     AND        dword ptr [RBX + 0x10],0x0
       140429103 41 f6 85        TEST       byte ptr [R13 + 0x6b2],0x7
                 b2 06 00 
                 00 07
       14042910b 0f 97 c0        SETA       AL
   --> 14042910e 8a 4b 10        MOV        CL,byte ptr [RBX + 0x10]
       140429111 32 c8           XOR        CL,AL
       140429113 80 e1 01        AND        CL,0x1
       140429116 30 4b 10        XOR        byte ptr [RBX + 0x10],CL
       140429119 41 8a 85        MOV        AL,byte ptr [R13 + 0x6b2]
                 b2 06 00 00
       140429120 24 07           AND        AL,0x7
       140429122 3c 01           CMP        AL,0x1
       140429124 0f 94 c0        SETZ       AL
       140429127 c0 e0 04        SHL        AL,0x4
       14042912a 32 43 10        XOR        AL,byte ptr [RBX + 0x10]
       14042912d 24 10           AND        AL,0x10
       14042912f 32 43 10        XOR        AL,byte ptr [RBX + 0x10]
       140429132 88 43 10        MOV        byte ptr [RBX + 0x10],AL
       140429135 41 8b 8d        MOV        ECX,dword ptr [R13 + 0x304]
                 04 03 00 00


...

                             LAB_14042935c                                   XREF[1]:     140429335(j)  
       14042935c 44 39 4a 08     CMP        dword ptr [RDX + 0x8],R9D
       140429360 75 6f           JNZ        LAB_1404293d1
       140429362 48 83 3a 58     CMP        qword ptr [RDX],0x58
       140429366 75 69           JNZ        LAB_1404293d1
   --> 140429368 8a 4a 10        MOV        CL,byte ptr [RDX + 0x10]
       14042936b c0 e1 05        SHL        CL,0x5
       14042936e 41 32 48 08     XOR        CL,byte ptr [R8 + 0x8]
       140429372 80 e1 7f        AND        CL,0x7f
   --> 140429375 8a 42 10        MOV        AL,byte ptr [RDX + 0x10]
       140429378 c0 e0 05        SHL        AL,0x5
       14042937b 32 c8           XOR        CL,AL
       14042937d 41 88 48 08     MOV        byte ptr [R8 + 0x8],CL
   --> 140429381 8a 42 10        MOV        AL,byte ptr [RDX + 0x10]
       140429384 c0 e8 03        SHR        AL,0x3
       140429387 41 32 40 09     XOR        AL,byte ptr [R8 + 0x9]
       14042938b 24 01           AND        AL,0x1
       14042938d 41 30 40 09     XOR        byte ptr [R8 + 0x9],AL
       140429391 8b 42 14        MOV        EAX,dword ptr [RDX + 0x14]
       140429394 41 89 80        MOV        dword ptr [R8 + 0x98],EAX
                 98 00 00 00
   --> 14042939b 8a 42 10        MOV        AL,byte ptr [RDX + 0x10]
       14042939e 02 c0           ADD        AL,AL
       1404293a0 32 c1           XOR        AL,CL
       1404293a2 24 02           AND        AL,0x2
       1404293a4 41 30 40 08     XOR        byte ptr [R8 + 0x8],AL
   --> 1404293a8 8a 4a 10        MOV        CL,byte ptr [RDX + 0x10]
       1404293ab c0 e1 03        SHL        CL,0x3
       1404293ae 41 32 48 08     XOR        CL,byte ptr [R8 + 0x8]
       1404293b2 80 e1 10        AND        CL,0x10
       1404293b5 41 32 48 08     XOR        CL,byte ptr [R8 + 0x8]
       1404293b9 41 88 48 08     MOV        byte ptr [R8 + 0x8],CL
       1404293bd 0f b7 42 12     MOVZX      EAX,word ptr [RDX + 0x12]
       1404293c1 66 41 89        MOV        word ptr [R8 + 0xa],AX
                 40 0a
       1404293c6 49 89 50 28     MOV        qword ptr [R8 + 0x28],RDX
       1404293ca eb 0b           JMP        LAB_1404293d7
                             LAB_1404293cc                                   XREF[1]:     14042933a(j)  
       1404293cc e8 3f 8e        CALL       ExRaiseDatatypeMisalignment                      undefined ExRaiseDatatypeMisalig
                 24 00


case 35

这个可以再看看。

DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cb2422, user_address 0xf5881fdd48, user_data 0x0, modrm 0x46, pc 0xfffff80179cb250b
   eip 0xfffff80179c73030, user_address 0xf5881fdd48, user_data 0x0, modrm 0x40, pc 0xfffff80179c730e7

0xfffff80179cb250b - 0xfffff80179c730e7 = 3F424

14042850b - 1403e90e7 = 3F424

                             LAB_1404284e7                                   XREF[1]:     1404284a5(j)  
       1404284e7 48 85 f6        TEST       RSI,RSI
       1404284ea 74 41           JZ         LAB_14042852d
       1404284ec 45 84 ff        TEST       R15B,R15B
       1404284ef 74 1a           JZ         LAB_14042850b
       1404284f1 40 f6 c6 03     TEST       SIL,0x3
       1404284f5 75 31           JNZ        LAB_140428528
       1404284f7 48 8b ce        MOV        RCX,RSI
       1404284fa 48 3b 35        CMP        RSI,qword ptr [MmUserProbeAddress]               = ??
                 ff 6c f5 ff
       140428501 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d f7 6c 
                 f5 ff
       140428509 8a 01           MOV        AL,byte ptr [RCX]
                             LAB_14042850b                                   XREF[1]:     1404284ef(j)  
   --> 14042850b 8b 46 18        MOV        EAX,dword ptr [RSI + 0x18]
       14042850e 45 84 ff        TEST       R15B,R15B
       140428511 74 0e           JZ         LAB_140428521
       140428513 25 f2 1d        AND        EAX,0x1df2
                 00 00
                             LAB_140428518                                   XREF[1]:     140428526(j)  
       140428518 89 84 24        MOV        dword ptr [RSP + 0x4d0],EAX
                 d0 04 00 00
       14042851f eb 0c           JMP        LAB_14042852d

                             LAB_1403e90d5                                   XREF[2]:     1403e9098(j), 1403e90b3(j)  
       1403e90d5 41 83 38 30     CMP        dword ptr [param_3],0x30
       1403e90d9 0f 85 b1        JNZ        LAB_1403e9190
                 00 00 00
       1403e90df 49 8b 40 08     MOV        RAX,qword ptr [param_3 + 0x8]
       1403e90e3 48 89 43 08     MOV        qword ptr [RBX + 0x8],RAX
   --> 1403e90e7 41 8b 40 18     MOV        EAX,dword ptr [param_3 + 0x18]
       1403e90eb 89 44 24 48     MOV        dword ptr [RSP + local_50],EAX
       1403e90ef 84 d2           TEST       param_2,param_2
       1403e90f1 74 08           JZ         LAB_1403e90fb
       1403e90f3 0f ba f0 09     BTR        EAX,0x9
       1403e90f7 89 44 24 48     MOV        dword ptr [RSP + local_50],EAX


case 36

这个没用。

DOUBLE FETCH:   cr3 0x11067e000, syscall 0xbb
   eip 0xfffff80179cab038, user_address 0xf5881fdd90, user_data 0x88, modrm 0x1, pc 0xfffff80179cab085
   eip 0xfffff80179cab038, user_address 0xf5881fdd90, user_data 0x88, modrm 0x3, pc 0xfffff80179cab087

       140421054 4d 8b f1        MOV        R14,R9
       140421057 45 8b c8        MOV        R9D,R8D
       14042105a 44 8a ea        MOV        R13B,DL
       14042105d 48 8b d9        MOV        RBX,RCX
       140421060 41 88 16        MOV        byte ptr [R14],DL
       140421063 33 f6           XOR        ESI,ESI
       140421065 44 8d 46 03     LEA        R8D,[RSI + 0x3]
       140421069 84 d2           TEST       DL,DL
       14042106b 74 1a           JZ         LAB_140421087
       14042106d 41 84 c8        TEST       R8B,CL
       140421070 0f 85 9b        JNZ        LAB_140421911
                 08 00 00
       140421076 48 3b 0d        CMP        RCX,qword ptr [MmUserProbeAddress]               = ??
                 83 e1 f5 ff
       14042107d 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d 7b e1 
                 f5 ff
   --> 140421085 8a 01           MOV        AL,byte ptr [RCX]
                             LAB_140421087                                   XREF[1]:     14042106b(j)  
   --> 140421087 48 8b 03        MOV        RAX,qword ptr [RBX]
       14042108a 48 89 44        MOV        qword ptr [RSP + local_f8],RAX
                 24 30
       14042108f 48 83 f8 28     CMP        RAX,0x28
       140421093 0f 82 7d        JC         LAB_140421916
                 08 00 00


case 37

和case36代码特着一样,应该是编译器的原因。

DOUBLE FETCH:   cr3 0x11067e000, syscall 0x41
   eip 0xfffff80179cb01dc, user_address 0x2c596e34440, user_data 0x4, modrm 0x1, pc 0xfffff80179cb026a
   eip 0xfffff80179cb01dc, user_address 0x2c596e34440, user_data 0x4, modrm 0x0, pc 0xfffff80179cb026c

       14042624d 45 84 f6        TEST       R14B,R14B
       140426250 75 49           JNZ        LAB_14042629b
       140426252 40 f6 c7 03     TEST       DIL,0x3
       140426256 75 7e           JNZ        LAB_1404262d6
       140426258 49 8b c8        MOV        param_1,param_3
       14042625b 4c 3b 05        CMP        param_3,qword ptr [MmUserProbeAddress]           = ??
                 9e 8f f5 ff
       140426262 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d 96 8f 
                 f5 ff
   --> 14042626a 8a 01           MOV        AL,byte ptr [param_1]
   --> 14042626c 41 8b 00        MOV        EAX,dword ptr [param_3]
       14042626f 89 44 24 54     MOV        dword ptr [RSP + local_54],EAX
       140426273 ff c8           DEC        EAX
       140426275 8d 0c 40        LEA        param_1,[RAX + RAX*0x2]
       140426278 8d 0c 8d        LEA        param_1,[0x10 + param_1*0x4]
                 10 00 00 00
       14042627f 89 4c 24 78     MOV        dword ptr [RSP + local_30],param_1
       140426283 85 c9           TEST       param_1,param_1
       140426285 74 14           JZ         LAB_14042629b
       140426287 49 03 c8        ADD        param_1,param_3
       14042628a 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 6f 8f f5 ff
       140426291 48 3b c8        CMP        param_1,RAX
       140426294 77 45           JA         LAB_1404262db
       140426296 49 3b c8        CMP        param_1,param_3
       140426299 72 40           JC         LAB_1404262db


case 38

好像是在代码靠前的位值测试了下用户地址是否可读。

下一次用的时候就直接用了? 64位看不好是不是加了try catch。这个应该试试。

这样下一次把这个页面释放就可以BSOD。

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179ce2639, user_address 0x207a9f67988, user_data 0x64, modrm 0x1, pc 0xfffff80179ce2743
   eip 0xfffff80179ce2a19, user_address 0x207a9f67988, user_data 0x207a9f67c64, modrm 0x4d, pc 0xfffff80179ce2a2b

       140458731 49 8b cd        MOV        param_1,R13
       140458734 4c 3b 2d        CMP        R13,qword ptr [MmUserProbeAddress]               = ??
                 c5 6a f2 ff
       14045873b 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d bd 6a 
                 f2 ff
   --> 140458743 8a 01           MOV        AL,byte ptr [param_1]
                             LAB_140458745                                   XREF[1]:     140458726(j)  
       140458745 48 8b 8c        MOV        param_1,qword ptr [RSP + param_5]
                 24 e0 01 
                 00 00
       14045874d 41 84 c8        TEST       param_3,param_1
       140458750 0f 85 96        JNZ        LAB_1404587ec
                 00 00 00
       140458756 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 a3 6a f2 ff
       14045875d 48 3b c8        CMP        param_1,RAX
       140458760 48 0f 43 c8     CMOVNC     param_1,RAX
       140458764 8a 01           MOV        AL,byte ptr [param_1]
       140458766 48 8b 94        MOV        param_2,qword ptr [RSP + param_13]
                 24 20 02 
                 00 00
       14045876e 48 85 d2        TEST       param_2,param_2
       140458771 75 7e           JNZ        LAB_1404587f1

                             LAB_140458a22                                   XREF[2]:     1404589f2(j), 140458ab2(j)  
       140458a22 4d 85 ed        TEST       R13,R13
       140458a25 74 40           JZ         LAB_140458a67
       140458a27 85 ff           TEST       EDI,EDI
       140458a29 78 3c           JS         LAB_140458a67
   --> 140458a2b 49 8b 4d 00     MOV        param_1,qword ptr [R13]
       140458a2f 48 85 c9        TEST       param_1,param_1
       140458a32 74 33           JZ         LAB_140458a67
       140458a34 48 8d 84        LEA        RAX=>local_68,[RSP + 0x150]
                 24 50 01 
                 00 00
       140458a3c 48 89 44        MOV        qword ptr [RSP + local_180],RAX
                 24 38
       140458a41 48 8d 84        LEA        RAX=>local_d0,[RSP + 0xe8]
                 24 e8 00 
                 00 00
       140458a49 48 89 44        MOV        qword ptr [RSP + local_188],RAX
                 24 30
       140458a4e c7 44 24        MOV        dword ptr [RSP + local_198],0x200
                 20 00 02 
                 00 00
       140458a56 40 8a d6        MOV        param_2,SIL
       140458a59 e8 46 04        CALL       FUN_140458ea4                                    undefined FUN_140458ea4(undefine
                 00 00
       140458a5e 8b f8           MOV        EDI,EAX
       140458a60 89 84 24        MOV        dword ptr [RSP + local_f4],EAX
                 c4 00 00 00


case 39

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179ce2639, user_address 0x207a9f67970, user_data 0xdc, modrm 0x1, pc 0xfffff80179ce2719
   eip 0xfffff80179ce29de, user_address 0x207a9f67970, user_data 0x207a9f67adc, modrm 0x8, pc 0xfffff80179ce29fc

syscall 0xb8 NtCreateTransaction

719这里和上一个case 38里743离的很近,感觉是集中把几个用户地址读一个字节试下地址是否可读。

后面就直接用了。要验证下后一次读是否有try catch。

                             LAB_1404586fa                                   XREF[1]:     1404587c4(j)  
       1404586fa 48 8b 8c        MOV        param_1,qword ptr [RSP + param_15]
                 24 30 02 
                 00 00
       140458702 41 84 c8        TEST       param_3,param_1
       140458705 0f 85 d7        JNZ        LAB_1404587e2
                 00 00 00
       14045870b 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 ee 6a f2 ff
       140458712 48 3b c8        CMP        param_1,RAX
       140458715 48 0f 43 c8     CMOVNC     param_1,RAX
   --> 140458719 8a 01           MOV        AL,byte ptr [param_1]
       14045871b 4c 8b ac        MOV        R13,qword ptr [RSP + param_16]
                 24 38 02 
                 00 00
       140458723 4d 85 ed        TEST       R13,R13
       140458726 74 1d           JZ         LAB_140458745
       140458728 45 84 e8        TEST       param_3,R13B
       14045872b 0f 85 b6        JNZ        LAB_1404587e7
                 00 00 00
       140458731 49 8b cd        MOV        param_1,R13
       140458734 4c 3b 2d        CMP        R13,qword ptr [MmUserProbeAddress]               = ??
                 c5 6a f2 ff
       14045873b 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d bd 6a 
                 f2 ff
   x   140458743 8a 01           MOV        AL,byte ptr [param_1]
                             LAB_140458745                                   XREF[1]:     140458726(j)  
       140458745 48 8b 8c        MOV        param_1,qword ptr [RSP + param_5]
                 24 e0 01 
                 00 00

后面这部分代码就见不到MmUserProbeAddress和CALL ExRaiseDatatypeMisalignment了,要验证是否有try catch。

测试过了,后面的部分也try catch了。

                             LAB_1404589e7                                   XREF[1]:     1404589a5(j)  
       1404589e7 4d 85 e4        TEST       R12,R12
       1404589ea 0f 85 c0        JNZ        LAB_140458ab0
                 00 00 00
                             LAB_1404589f0                                   XREF[1]:     140458adf(j)  
       1404589f0 85 ff           TEST       EDI,EDI
       1404589f2 78 2e           JS         LAB_140458a22
       1404589f4 48 8b 84        MOV        RAX,qword ptr [RSP + param_15]
                 24 30 02 
                 00 00
   --> 1404589fc 48 8b 08        MOV        param_1,qword ptr [RAX]
       1404589ff 48 8d 84        LEA        RAX=>local_a8,[RSP + 0x110]
                 24 10 01 
                 00 00
       140458a07 48 89 44        MOV        qword ptr [RSP + local_188],RAX
                 24 30
       140458a0c c6 44 24        MOV        byte ptr [RSP + local_190],0x1
                 28 01
       140458a11 40 8a d6        MOV        param_2,SIL
       140458a14 e8 6b 01        CALL       FUN_1404a8b84                                    undefined FUN_1404a8b84(undefine
                 05 00
       140458a19 8b f8           MOV        EDI,EAX
       140458a1b 89 84 24        MOV        dword ptr [RSP + local_f4],EAX
                 c4 00 00 00

应该用虚拟机这样找一下,所有读用户提供地址的都要probe,也就是和MmUserProbeAddress比一下。

如果没有比一下就用的,应该是有问题的。

PAGE_FAULT_IN_NONPAGED_AREA是不能被try catch的。


case 40

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179ce2639, user_address 0x207a9f67c94, user_data 0xa, modrm 0x1, pc 0xfffff80179ce26c6
   eip 0xfffff80179ce296e, user_address 0x207a9f67c94, user_data 0xa, modrm 0x11, pc 0xfffff80179ce29af

This is a piece of typical “probe” code generated by the compiler.

       1404586b8 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 41 6b f2 ff
       1404586bf 48 3b c8        CMP        param_1,RAX
       1404586c2 48 0f 43 c8     CMOVNC     param_1,RAX
   --> 1404586c6 8a 01           MOV        AL,byte ptr [param_1]
       1404586c8 48 8b 8c        MOV        param_1,qword ptr [RSP + param_17]
                 24 40 02 
                 00 00

can’t determine from the code that whether the second reference is protected by a try-catch.

                             LAB_1404589a3                                   XREF[1]:     14045892b(j)  
       1404589a3 85 ff           TEST       EDI,EDI
       1404589a5 78 40           JS         LAB_1404589e7
       1404589a7 48 8b 8c        MOV        param_1,qword ptr [RSP + param_9]
                 24 00 02 
                 00 00
   --> 1404589af 8b 11           MOV        param_2,dword ptr [param_1]
       1404589b1 89 94 24        MOV        dword ptr [RSP + local_e8],param_2
                 d0 00 00 00
       1404589b8 48 83 c1 04     ADD        param_1,0x4
       1404589bc 48 8d 84        LEA        RAX=>local_88,[RSP + 0x130]
                 24 30 01 
                 00 00
       1404589c4 48 89 44        MOV        qword ptr [RSP + local_178],RAX
                 24 40
       1404589c9 48 8d 84        LEA        RAX=>local_c0,[RSP + 0xf8]
                 24 f8 00 
                 00 00
       1404589d1 48 89 44        MOV        qword ptr [RSP + local_180],RAX
                 24 38
       1404589d6 44 8a c6        MOV        param_3,SIL
       1404589d9 e8 92 e2        CALL       FUN_140426c70                                    undefined FUN_140426c70(undefine
                 fc ff
       1404589de 8b f8           MOV        EDI,EAX
       1404589e0 89 84 24        MOV        dword ptr [RSP + local_f4],EAX
                 c4 00 00 00


case 41

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179d336e4, user_address 0x207a9f9fcb8, user_data 0x207a9f67adc, modrm 0x4, pc 0xfffff80179d3373d
   eip 0xfffff801799d7780, user_address 0x207a9f9fcb8, user_data 0x207a9f67adc, modrm 0x44, pc 0xfffff801799d7940

0xfffff80179d3373d - 0xfffff801799d7940 = 35BDFD

1404a973d - 35BDFD = 14014D940

                             LAB_1404a9730                                   XREF[1]:     1404a97c6(j)  
       1404a9730 3b c7           CMP        EAX,EDI
       1404a9732 0f 83 cb        JNC        LAB_1404a9803
                 00 00 00
       1404a9738 8b c8           MOV        param_1,EAX
       1404a973a 48 03 c9        ADD        param_1,param_1
   --> 1404a973d 4c 8b 04 ce     MOV        param_3,qword ptr [RSI + param_1*0x8]
       1404a9741 49 8d 40 01     LEA        RAX,[param_3 + 0x1]
       1404a9745 48 8b 15        MOV        param_2,qword ptr [MmUserProbeAddress]           = ??
                 b4 5a ed ff
       1404a974c 48 3b c2        CMP        RAX,param_2
       1404a974f 0f 83 83        JNC        LAB_1404a97d8
                 00 00 00

                             LAB_14014d940                                   XREF[1]:     14014d94f(j)  
   --> 14014d940 48 8b 44        MOV        RAX,qword ptr [_Src + _Dst*0x1 + -0x8]
                 0a f8
       14014d945 48 83 e9 08     SUB        _Dst,0x8
       14014d949 49 ff c9        DEC        R9
       14014d94c 48 89 01        MOV        qword ptr [_Dst],RAX
       14014d94f 75 ef           JNZ        LAB_14014d940

                             LAB_14014d951                                   XREF[1]:     14014d93e(j)  
       14014d951 49 83 e0 07     AND        _Size,0x7
       14014d955 74 17           JZ         LAB_14014d96e
       14014d957 66 0f 1f        NOP        word ptr [RAX + RAX*0x1]
                 84 00 00 
                 00 00 00
                             LAB_14014d960                                   XREF[1]:     14014d96c(j)  
       14014d960 8a 44 0a ff     MOV        AL,byte ptr [_Src + _Dst*0x1 + -0x1]
       14014d964 48 ff c9        DEC        _Dst
       14014d967 49 ff c8        DEC        _Size
       14014d96a 88 01           MOV        byte ptr [_Dst],AL
       14014d96c 75 f2           JNZ        LAB_14014d960

Those two references are far away. The latter code belongs RtlCopyMemory().

So, the code first probes the buffer then copies some data to it?

This also solves the mistery of previous 0xfffff801799d7940 and 0xfffff801799d7960. They both from RtlCopyMemory().


case 42

They are all the same. First probe, then read.

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179ce2639, user_address 0x3dd227dfe8, user_data 0xe4, modrm 0x1, pc 0xfffff80179ce2764
   eip 0xfffff80179ce28ab, user_address 0x3dd227dfe8, user_data 0x3e4, modrm 0x8, pc 0xfffff80179ce28cd

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179ce2639, user_address 0x207a9f67950, user_data 0x90, modrm 0x1, pc 0xfffff80179ce2684
   eip 0xfffff80179ce28ab, user_address 0x207a9f67950, user_data 0x6207526b64ceb90, modrm 0x8, pc 0xfffff80179ce28e0

DOUBLE FETCH:   cr3 0x12279c000, syscall 0xb8
   eip 0xfffff80179ce2639, user_address 0x207a9f9fcb0, user_data 0x13, modrm 0x1, pc 0xfffff80179ce26a5
   eip 0xfffff80179ce2920, user_address 0x207a9f9fcb0, user_data 0x13, modrm 0x19, pc 0xfffff80179ce2935

       14045866a 41 b0 03        MOV        param_3,0x3
       14045866d 41 84 c8        TEST       param_3,param_1
       140458670 0f 85 53        JNZ        LAB_1404587c9
                 01 00 00
       140458676 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 83 6b f2 ff
       14045867d 48 3b c8        CMP        param_1,RAX
       140458680 48 0f 43 c8     CMOVNC     param_1,RAX
   --> 140458684 8a 01           MOV        AL,byte ptr [param_1]
       140458686 48 8b 8c        MOV        param_1,qword ptr [RSP + param_8]
                 24 f8 01 
                 00 00
       14045868e 41 84 c8        TEST       param_3,param_1
       140458691 0f 85 37        JNZ        LAB_1404587ce
                 01 00 00
       140458697 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 62 6b f2 ff
       14045869e 48 3b c8        CMP        param_1,RAX
       1404586a1 48 0f 43 c8     CMOVNC     param_1,RAX
   --> 1404586a5 8a 01           MOV        AL,byte ptr [param_1]
       1404586a7 48 8b 8c        MOV        param_1,qword ptr [RSP + param_9]
                 24 00 02 
                 00 00
       1404586af 41 84 c8        TEST       param_3,param_1
       1404586b2 0f 85 1b        JNZ        LAB_1404587d3
                 01 00 00
       1404586b8 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 41 6b f2 ff
       1404586bf 48 3b c8        CMP        param_1,RAX
       1404586c2 48 0f 43 c8     CMOVNC     param_1,RAX
       1404586c6 8a 01           MOV        AL,byte ptr [param_1]
       1404586c8 48 8b 8c        MOV        param_1,qword ptr [RSP + param_17]
                 24 40 02 
                 00 00
       1404586d0 41 84 c8        TEST       param_3,param_1
       1404586d3 0f 85 ff        JNZ        LAB_1404587d8
                 00 00 00
       1404586d9 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 20 6b f2 ff
       1404586e0 48 3b c8        CMP        param_1,RAX
       1404586e3 48 0f 43 c8     CMOVNC     param_1,RAX
       1404586e7 8a 01           MOV        AL,byte ptr [param_1]
       1404586e9 4c 8b a4        MOV        R12,qword ptr [RSP + param_14]
                 24 28 02 
                 00 00
       1404586f1 4d 85 e4        TEST       R12,R12
       1404586f4 0f 85 b1        JNZ        LAB_1404587ab
                 00 00 00
                             LAB_1404586fa                                   XREF[1]:     1404587c4(j)  
       1404586fa 48 8b 8c        MOV        param_1,qword ptr [RSP + param_15]
                 24 30 02 
                 00 00
       140458702 41 84 c8        TEST       param_3,param_1
       140458705 0f 85 d7        JNZ        LAB_1404587e2
                 00 00 00
       14045870b 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 ee 6a f2 ff
       140458712 48 3b c8        CMP        param_1,RAX
       140458715 48 0f 43 c8     CMOVNC     param_1,RAX
       140458719 8a 01           MOV        AL,byte ptr [param_1]
       14045871b 4c 8b ac        MOV        R13,qword ptr [RSP + param_16]
                 24 38 02 
                 00 00
       140458723 4d 85 ed        TEST       R13,R13
       140458726 74 1d           JZ         LAB_140458745
       140458728 45 84 e8        TEST       param_3,R13B
       14045872b 0f 85 b6        JNZ        LAB_1404587e7
                 00 00 00
       140458731 49 8b cd        MOV        param_1,R13
       140458734 4c 3b 2d        CMP        R13,qword ptr [MmUserProbeAddress]               = ??
                 c5 6a f2 ff
       14045873b 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d bd 6a 
                 f2 ff
       140458743 8a 01           MOV        AL,byte ptr [param_1]
                             LAB_140458745                                   XREF[1]:     140458726(j)  
       140458745 48 8b 8c        MOV        param_1,qword ptr [RSP + param_5]
                 24 e0 01 
                 00 00
       14045874d 41 84 c8        TEST       param_3,param_1
       140458750 0f 85 96        JNZ        LAB_1404587ec
                 00 00 00
       140458756 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 a3 6a f2 ff
       14045875d 48 3b c8        CMP        param_1,RAX
       140458760 48 0f 43 c8     CMOVNC     param_1,RAX
   --> 140458764 8a 01           MOV        AL,byte ptr [param_1]
       140458766 48 8b 94        MOV        param_2,qword ptr [RSP + param_13]
                 24 20 02 
                 00 00
       14045876e 48 85 d2        TEST       param_2,param_2
       140458771 75 7e           JNZ        LAB_1404587f1

                             LAB_1404588be                                   XREF[1]:     140458e83(j)  
       1404588be 89 94 24        MOV        dword ptr [RSP + local_f4],param_2
                 c4 00 00 00
       1404588c5 48 8b 84        MOV        RAX,qword ptr [RSP + param_5]
                 24 e0 01 
                 00 00
   --> 1404588cd 48 8b 08        MOV        param_1,qword ptr [RAX]
       1404588d0 48 89 8c        MOV        qword ptr [RSP + local_70],param_1
                 24 48 01 
                 00 00
       1404588d8 48 8b 84        MOV        RAX,qword ptr [RSP + param_6]
                 24 e8 01 
                 00 00
   --> 1404588e0 48 8b 08        MOV        param_1,qword ptr [RAX]
       1404588e3 48 89 8c        MOV        qword ptr [RSP + local_60],param_1
                 24 58 01 
                 00 00
       1404588eb 48 8d 84        LEA        RAX=>local_8c,[RSP + 0x12c]
                 24 2c 01 
                 00 00
       1404588f3 48 89 44        MOV        qword ptr [RSP + local_178],RAX
                 24 40
       1404588f8 48 8d 84        LEA        RAX=>local_d8,[RSP + 0xe0]
                 24 e0 00 
                 00 00
       140458900 48 89 44        MOV        qword ptr [RSP + local_180],RAX
                 24 38
       140458905 89 54 24 20     MOV        dword ptr [RSP + local_198],param_2
       140458909 45 33 c9        XOR        param_4,param_4
       14045890c 44 8a c6        MOV        param_3,SIL
       14045890f 41 8d 51 01     LEA        param_2,[param_4 + 0x1]
       140458913 48 8b 8c        MOV        param_1,qword ptr [RSP + param_7]
                 24 f0 01 
                 00 00
       14045891b e8 10 0d        CALL       FUN_1404a9630                                    undefined FUN_1404a9630(undefine
                 05 00
       140458920 8b f8           MOV        EDI,EAX
       140458922 89 84 24        MOV        dword ptr [RSP + local_f4],EAX
                 c4 00 00 00
       140458929 85 c0           TEST       EAX,EAX
       14045892b 78 76           JS         LAB_1404589a3
       14045892d 48 8b 8c        MOV        param_1,qword ptr [RSP + param_8]
                 24 f8 01 
                 00 00
   --> 140458935 8b 19           MOV        EBX,dword ptr [param_1]
       140458937 89 9c 24        MOV        dword ptr [RSP + local_e0],EBX
                 d8 00 00 00
       14045893e 48 83 c1 08     ADD        param_1,0x8
       140458942 48 8d 84        LEA        RAX=>local_f0,[RSP + 0xc8]
                 24 c8 00 
                 00 00
       14045894a 48 89 44        MOV        qword ptr [RSP + local_178],RAX
                 24 40
       14045894f 48 8d 84        LEA        RAX=>local_b0,[RSP + 0x108]
                 24 08 01 
                 00 00
       140458957 48 89 44        MOV        qword ptr [RSP + local_180],RAX
                 24 38
       14045895c 83 64 24        AND        dword ptr [RSP + local_198],0x0
                 20 00
       140458961 45 33 c9        XOR        param_4,param_4
       140458964 44 8a c6        MOV        param_3,SIL
       140458967 8b d3           MOV        param_2,EBX
       140458969 e8 c2 0c        CALL       FUN_1404a9630                                    undefined FUN_1404a9630(undefine
                 05 00


case 43

It seems that all the 1-byte read (opcode 8a 01) are all the same kind.

DOUBLE FETCH:   cr3 0x12cd41000, syscall 0x6a
   eip 0xfffff80179ce0bc0, user_address 0x1c455cf948, user_data 0x1, modrm 0x1, pc 0xfffff80179ce0c3f
   eip 0xfffff80179ce0bc0, user_address 0x1c455cf948, user_data 0x1, modrm 0x16, pc 0xfffff80179ce0c8d

       140456c22 45 84 f6        TEST       R14B,R14B
       140456c25 75 1a           JNZ        LAB_140456c41
       140456c27 40 f6 c6 03     TEST       SIL,0x3
       140456c2b 75 23           JNZ        LAB_140456c50
       140456c2d 49 8b c8        MOV        param_1,param_3
       140456c30 4c 3b 05        CMP        param_3,qword ptr [MmUserProbeAddress]           = ??
                 c9 85 f2 ff
       140456c37 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d c1 85 
                 f2 ff
   --> 140456c3f 8a 01           MOV        AL,byte ptr [param_1]
                             LAB_140456c41                                   XREF[1]:     140456c25(j)  
       140456c41 48 8b 9c        MOV        RBX,qword ptr [RSP + param_5]
                 24 d0 00 
                 00 00
       140456c49 48 85 db        TEST       RBX,RBX
       140456c4c 75 07           JNZ        LAB_140456c55
       140456c4e eb 31           JMP        LAB_140456c81
                             LAB_140456c50                                   XREF[1]:     140456c2b(j)  
       140456c50 e8 bb b5        CALL       ExRaiseDatatypeMisalignment                      undefined ExRaiseDatatypeMisalig
                 21 00
                             LAB_140456c55                                   XREF[1]:     140456c4c(j)  
       140456c55 49 8b d5        MOV        param_2,R13
       140456c58 41 b8 04        MOV        param_3,0x4
                 00 00 00
       140456c5e 48 8b cb        MOV        param_1,RBX
       140456c61 e8 ba ca        CALL       ProbeForWrite                                    undefined ProbeForWrite()
                 f9 ff
       140456c66 48 8b 8c        MOV        param_1,qword ptr [RSP + param_6]
                 24 d8 00 
                 00 00
       140456c6e 48 3b 0d        CMP        param_1,qword ptr [MmUserProbeAddress]           = ??
                 8b 85 f2 ff
       140456c75 48 0f 43        CMOVNC     param_1,qword ptr [MmUserProbeAddress]           = ??
                 0d 83 85 
                 f2 ff
       140456c7d 8b 01           MOV        EAX,dword ptr [param_1]
       140456c7f 89 01           MOV        dword ptr [param_1],EAX
                             LAB_140456c81                                   XREF[1]:     140456c4e(j)  
       140456c81 eb 05           JMP        LAB_140456c88
       140456c83 e9              ??         E9h
       140456c84 3b              ??         3Bh    ;
       140456c85 02              ??         02h
       140456c86 00              ??         00h
       140456c87 00              ??         00h
                             LAB_140456c88                                   XREF[2]:     140456c81(j), 1405909be(j)  
       140456c88 45 84 f6        TEST       R14B,R14B
       140456c8b 75 41           JNZ        LAB_140456cce
   --> 140456c8d 8b 16           MOV        param_2,dword ptr [RSI]
       140456c8f 89 54 24 5c     MOV        dword ptr [RSP + local_4c],param_2
       140456c93 48 8d 4e 08     LEA        param_1,[RSI + 0x8]
       140456c97 48 8d 44        LEA        RAX=>local_44,[RSP + 0x64]
                 24 64


case 44

useless

DOUBLE FETCH:   cr3 0x12cd41000, syscall 0x86
   eip 0xfffff80179cfc0d0, user_address 0x1c455cf640, user_data 0x0, modrm 0x1, pc 0xfffff80179cfc2cc
   eip 0xfffff80179cfc0d0, user_address 0x1c455cf640, user_data 0x0, modrm 0x1, pc 0xfffff80179cfc2fb

       1404722b3 45 84 d2        TEST       R10B,R10B
       1404722b6 74 16           JZ         LAB_1404722ce
       1404722b8 f6 c1 03        TEST       CL,0x3
       1404722bb 75 52           JNZ        LAB_14047230f
       1404722bd 48 3b 0d        CMP        RCX,qword ptr [MmUserProbeAddress]               = ??
                 3c cf f0 ff
       1404722c4 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d 34 cf 
                 f0 ff
   --> 1404722cc 8a 01           MOV        AL,byte ptr [RCX]
                             LAB_1404722ce                                   XREF[1]:     1404722b6(j)  
       1404722ce b9 00 10        MOV        ECX,0x1000
                 00 00
       1404722d3 66 41 85        TEST       word ptr [R9 + 0x4],CX
                 49 04
       1404722d8 0f 85 92        JNZ        LAB_140599770
                 74 12 00
       1404722de 45 84 d2        TEST       R10B,R10B
       1404722e1 74 1a           JZ         LAB_1404722fd
       1404722e3 41 f6 c1 03     TEST       R9B,0x3
       1404722e7 75 2c           JNZ        LAB_140472315
       1404722e9 4c 3b 0d        CMP        R9,qword ptr [MmUserProbeAddress]                = ??
                 10 cf f0 ff
       1404722f0 49 8b c9        MOV        RCX,R9
       1404722f3 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d 05 cf 
                 f0 ff
   --> 1404722fb 8a 01           MOV        AL,byte ptr [RCX]
                             LAB_1404722fd                                   XREF[1]:     1404722e1(j)  
       1404722fd 41 8b 41 18     MOV        EAX,dword ptr [R9 + 0x18]
       140472301 89 02           MOV        dword ptr [RDX],EAX
       140472303 41 8b 41 20     MOV        EAX,dword ptr [R9 + 0x20]


case 45

Didn’t find those two.

They may not from the ntoskrnl becasue their address 0xfffff800a296351a is different from the previous case’s 0xfffff80179ce0c3f.

0xfffff800axxxxxxx is another kernel module.

DOUBLE FETCH:   cr3 0x10e9f5000, syscall 0x7
   eip 0xfffff800a29634fa, user_address 0x4157ffe988, user_data 0x4157ffe940, modrm 0x66, pc 0xfffff800a296351a
   eip 0xfffff800a2964040, user_address 0x4157ffe988, user_data 0x4157ffe940, modrm 0x44, pc 0xfffff800a2964200

DOUBLE FETCH:   cr3 0x10e9f5000, syscall 0x7
   eip 0xfffff800a29634fa, user_address 0x4157ffe958, user_data 0x2258a557170, modrm 0x6e, pc 0xfffff800a296350e
   eip 0xfffff800a2964040, user_address 0x4157ffe958, user_data 0x2258a557170, modrm 0x44, pc 0xfffff800a2964200

case 46

useless

DOUBLE FETCH:   cr3 0x10d414000, syscall 0x14c
   eip 0xfffff80179cabf44, user_address 0x4999f7ee24, user_data 0x0, modrm 0x11, pc 0xfffff80179cabf8c
   eip 0xfffff80179cabf44, user_address 0x4999f7ee24, user_data 0x0, modrm 0x1, pc 0xfffff80179cabfa4

                             LAB_140421f64                                   XREF[1]:     140422047(j)  
       140421f64 49 8b cb        MOV        RCX,R11
       140421f67 4c 3b 1d        CMP        R11,qword ptr [MmUserProbeAddress]               = ??
                 92 d2 f5 ff
       140421f6e 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d 8a d2 
                 f5 ff
       140421f76 8b 01           MOV        EAX,dword ptr [RCX]
       140421f78 89 01           MOV        dword ptr [RCX],EAX
       140421f7a 49 8b ca        MOV        RCX,R10
       140421f7d 4c 3b 15        CMP        R10,qword ptr [MmUserProbeAddress]               = ??
                 7c d2 f5 ff
       140421f84 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d 74 d2 
                 f5 ff
   --> 140421f8c 8b 11           MOV        EDX,dword ptr [RCX]
       140421f8e 89 54 24 50     MOV        dword ptr [RSP + 0x50],EDX
       140421f92 49 8b ca        MOV        RCX,R10
       140421f95 4c 3b 15        CMP        R10,qword ptr [MmUserProbeAddress]               = ??
                 64 d2 f5 ff
       140421f9c 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d 5c d2 
                 f5 ff
   --> 140421fa4 8b 01           MOV        EAX,dword ptr [RCX]
       140421fa6 89 01           MOV        dword ptr [RCX],EAX
       140421fa8 85 d2           TEST       EDX,EDX
       140421faa 74 0e           JZ         LAB_140421fba
       140421fac 41 b8 01        MOV        R8D,0x1
                 00 00 00
       140421fb2 48 8b cb        MOV        RCX,RBX
       140421fb5 e8 66 17        CALL       ProbeForWrite                                    undefined ProbeForWrite()
                 fd ff


case 47

*** need review

DOUBLE FETCH:   cr3 0x0, syscall 0x88
   eip 0xfffff801798a2011, user_address 0x16934f44d10, user_data 0xf0, modrm 0x9, pc 0xfffff801798a2042
   eip 0xfffff801798a20f8, user_address 0x16934f44d10, user_data 0xf0, modrm 0x2, pc 0xfffff801798a2143

                             LAB_140018039                                   XREF[1]:     1400180c5(j)  
       140018039 4c 3b cd        CMP        R9,RBP
       14001803c 0f 87 a8        JA         LAB_1400180ea
                 00 00 00
   --> 140018042 41 8b 09        MOV        ECX,dword ptr [R9]
       140018045 4c 8d 05        LEA        R8,[DAT_14023d240]
                 f4 51 22 00
       14001804c 8b c2           MOV        EAX,EDX
       14001804e 83 e0 1f        AND        EAX,0x1f
       140018051 41 8b 1c 80     MOV        EBX,dword ptr [R8 + RAX*0x4]=>DAT_14023d240
       140018055 0b d9           OR         EBX,ECX
       140018057 8b c3           MOV        EAX,EBX
       140018059 41 23 c2        AND        EAX,R10D
       14001805c 41 3b c2        CMP        EAX,R10D
       14001805f 74 52           JZ         LAB_1400180b3
       140018061 83 e2 e0        AND        EDX,0xffffffe0
       140018064 45 8b c4        MOV        R8D,R12D

RtlInterlockedSetClearRun


                             **************************************************************
                             *                          FUNCTION                          *
                             **************************************************************
                             undefined RtlInterlockedSetClearRun()
             undefined         AL:1           <RETURN>
             undefined8        Stack[0x20]:8  local_res20                             XREF[2]:     140018107(W), 
                                                                                                   140018187(R)  
             undefined8        Stack[0x18]:8  local_res18                             XREF[2]:     140018103(W), 
                                                                                                   140018182(R)  
             undefined8        Stack[0x10]:8  local_res10                             XREF[2]:     1400180ff(W), 
                                                                                                   14001817d(R)  
             undefined8        Stack[0x8]:8   local_res8                              XREF[2]:     1400180fb(W), 
                                                                                                   140018178(R)  
                             0x180f8  1927  RtlInterlockedSetClearRun
                             Ordinal_1927                                    XREF[5]:     Entry Point(*), 14025d71c(*), 
                             RtlInterlockedSetClearRun                                    1403326ec(*), 
                                                                                          FUN_1403c9e38:1403c9e8f(c), 
                                                                                          1406e5e40(*)  
       1400180f8 48 8b c4        MOV        RAX,RSP
       1400180fb 48 89 58 08     MOV        qword ptr [RAX + local_res8],RBX
       1400180ff 48 89 68 10     MOV        qword ptr [RAX + local_res10],RBP
       140018103 48 89 70 18     MOV        qword ptr [RAX + local_res18],RSI
       140018107 48 89 78 20     MOV        qword ptr [RAX + local_res20],RDI
       14001810b 41 56           PUSH       R14
       14001810d 41 57           PUSH       R15
       14001810f 8b da           MOV        EBX,EDX
       140018111 41 bf 20        MOV        R15D,0x20
                 00 00 00
       140018117 83 e3 1f        AND        EBX,0x1f
       14001811a 45 8b d8        MOV        R11D,R8D
       14001811d 44 8b d2        MOV        R10D,EDX
       140018120 45 8b c8        MOV        R9D,R8D
       140018123 49 c1 ea 03     SHR        R10,0x3
       140018127 4c 8b f1        MOV        R14,RCX
       14001812a 4c 03 51 08     ADD        R10,qword ptr [RCX + 0x8]
       14001812e 45 8d 47 e1     LEA        R8D,[R15 + -0x1f]
       140018132 4a 8d 04 1b     LEA        RAX,[RBX + R11*0x1]
       140018136 8b fa           MOV        EDI,EDX
       140018138 49 83 e2 fc     AND        R10,-0x4
       14001813c 8b f2           MOV        ESI,EDX
       14001813e 49 3b c7        CMP        RAX,R15
       140018141 77 4e           JA         LAB_140018191
   --> 140018143 41 8b 02        MOV        EAX,dword ptr [R10]
       140018146 45 3b df        CMP        R11D,R15D
       140018149 0f 84 3d        JZ         LAB_140159c8c
                 1b 14 00
       14001814f 41 8b cb        MOV        ECX,R11D
       140018152 41 8b d0        MOV        EDX,R8D
       140018155 d3 e2           SHL        EDX,CL
       140018157 8b cb           MOV        ECX,EBX
       140018159 41 2b d0        SUB        EDX,R8D
       14001815c d3 e2           SHL        EDX,CL

                             LAB_14001815e                                   XREF[1]:     140159c8f(j)  
       14001815e 85 d0           TEST       EAX,EDX
       140018160 0f 85 49        JNZ        LAB_140159caf
                 1b 14 00
                             LAB_140018166                                   XREF[1]:     140159c96(j)  
       140018166 8b ca           MOV        ECX,EDX
       140018168 0b c8           OR         ECX,EAX
       14001816a f0              LOCK
       14001816b 41 0f b1 0a     CMPXCHG    dword ptr [R10],ECX
       14001816f 0f 85 1f        JNZ        LAB_140159c94
                 1b 14 00
                             LAB_140018175                                   XREF[2]:     1400181d8(j), 1400181f9(j)  
       140018175 41 8b c0        MOV        EAX,R8D
                             LAB_140018178                                   XREF[1]:     140159cb1(j)  
       140018178 48 8b 5c        MOV        RBX,qword ptr [RSP + local_res8]
                 24 18
       14001817d 48 8b 6c        MOV        RBP,qword ptr [RSP + local_res10]
                 24 20
       140018182 48 8b 74        MOV        RSI,qword ptr [RSP + local_res18]
                 24 28
       140018187 48 8b 7c        MOV        RDI,qword ptr [RSP + local_res20]
                 24 30
       14001818c 41 5f           POP        R15
       14001818e 41 5e           POP        R14
       140018190 c3              RET


case 48

Nowhere to find this module. I searched win32kfull.sys win32kbase.sys tsddd.dll cdd.dll.

Found it! It is win32kfull.sys. But somehow it needs to be win32kfull_10.0.10586.0.sys.

The binaries seems differ a bit.

I forgot what the differences between these two version, I think they both are version 10586.

Maybe the win32kfull.sys is from the vritual machine that with internet connection, so the system gets updated.

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1101
   eip 0xfffff961a3ac82ed, user_address 0x7592a7afd0, user_data 0x48, modrm 0x2, pc 0xfffff961a3ac8321
   eip 0xfffff961a3ac82ed, user_address 0x7592a7afd0, user_data 0x48, modrm 0x7, pc 0xfffff961a3ac832b

                             LAB_1c00c8310                                   XREF[1]:     1c00c8308(j)  
       1c00c8310 48 8b 05        MOV        RAX,qword ptr [->WIN32KBASE.SYS::W32UserProbeA   = 00357e22
                 e1 92 28 00
       1c00c8317 48 8b d7        MOV        RDX,RDI
       1c00c831a 48 3b 38        CMP        RDI,qword ptr [RAX]
       1c00c831d 48 0f 43 10     CMOVNC     RDX,qword ptr [RAX]
   --> 1c00c8321 8a 02           MOV        AL,byte ptr [RDX]
       1c00c8323 88 02           MOV        byte ptr [RDX],AL
       1c00c8325 8a 42 47        MOV        AL,byte ptr [RDX + 0x47]
       1c00c8328 88 42 47        MOV        byte ptr [RDX + 0x47],AL
   --> 1c00c832b 8b 07           MOV        EAX,dword ptr [RDI]
       1c00c832d 89 44 24 50     MOV        dword ptr [RSP + local_58[0]],EAX
       1c00c8331 eb 04           JMP        LAB_1c00c8337
       1c00c8333 33              ??         33h    3
       1c00c8334 db              ??         DBh
       1c00c8335 eb              ??         EBh
       1c00c8336 4b              ??         4Bh    K


case 49

Finally, find this 0xfffff961a3ad292a.

It seems useless though.

DOUBLE FETCH:   cr3 0x121cb7000, syscall 0x1005
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a

DOUBLE FETCH:   cr3 0x121cb7000, syscall 0x1005
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a

DOUBLE FETCH:   cr3 0x121cb7000, syscall 0x1005
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a

DOUBLE FETCH:   cr3 0x121cb7000, syscall 0x1005
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a
   eip 0xfffff961a3ad2869, user_address 0x248e4ae0810, user_data 0x4fe8bfb38e0f7a12, modrm 0xa, pc 0xfffff961a3ad292a

                             **************************************************************
                             *                          FUNCTION                          *
                             **************************************************************
                             undefined FUN_1c00d2914()
             undefined         AL:1           <RETURN>
                             FUN_1c00d2914                                   XREF[1]:     SetManifestWinVer:1c00d2877(c)  
       1c00d2914 45 33 c0        XOR        R8D,R8D
       1c00d2917 4c 8b d1        MOV        R10,RCX
       1c00d291a 48 85 d2        TEST       RDX,RDX
       1c00d291d 74 55           JZ         LAB_1c00d2974
       1c00d291f 48 85 c9        TEST       RCX,RCX
       1c00d2922 74 50           JZ         LAB_1c00d2974
       1c00d2924 4c 89 02        MOV        qword ptr [RDX],R8
       1c00d2927 45 8b c8        MOV        R9D,R8D
                             LAB_1c00d292a                                   XREF[1]:     1c00d2956(j)  
   --> 1c00d292a 49 8b 0a        MOV        RCX,qword ptr [R10]
       1c00d292d 48 8d 05        LEA        RAX,[DAT_1c02df594]                              = 43C51546E2011457h
                 60 cc 20 00
       1c00d2934 45 8b d9        MOV        R11D,R9D
       1c00d2937 49 c1 e3 05     SHL        R11,0x5
       1c00d293b 49 2b 0c 03     SUB        RCX,qword ptr [R11 + RAX*offset DAT_1c02df594]   = 43C51546E2011457h
                                                                                             = 4FBD5D9635138B9Ah
       1c00d293f 75 09           JNZ        LAB_1c00d294a
       1c00d2941 49 8b 4a 08     MOV        RCX,qword ptr [R10 + 0x8]
       1c00d2945 49 2b 4c        SUB        RCX,qword ptr [R11 + RAX*offset DAT_1c02df59c    = F0D3E3EE8D00FEA5h
                 03 08


case 50

useless

DOUBLE FETCH:   cr3 0xb7261000, syscall 0x100a
   eip 0xfffff961a3a73a50, user_address 0x7fff9068e770, user_data 0x4f, modrm 0x2, pc 0xfffff961a3a73adf
   eip 0xfffff961a3b44d40, user_address 0x7fff9068e770, user_data 0x4f, modrm 0x44, pc 0xfffff961a3b44f20
memcpy
                             LAB_1c0144f20                                   XREF[1]:     1c0144f2c(j)  
  -->  1c0144f20 8a 44 0a ff     MOV        AL,byte ptr [_Src + _Dst*0x1 + -0x1]
       1c0144f24 48 ff c9        DEC        _Dst
       1c0144f27 49 ff c8        DEC        _Size
       1c0144f2a 88 01           MOV        byte ptr [_Dst],AL
       1c0144f2c 75 f2           JNZ        LAB_1c0144f20

       1c0073ac8 75 73           JNZ        LAB_1c0073b3d
       1c0073aca 48 85 d2        TEST       param_2,param_2
       1c0073acd 74 17           JZ         LAB_1c0073ae6
       1c0073acf f6 c2 01        TEST       param_2,0x1
       1c0073ad2 0f 85 c2        JNZ        LAB_1c0073b9a
                 00 00 00
       1c0073ad8 49 3b 12        CMP        param_2,qword ptr [R10]
       1c0073adb 49 0f 43 12     CMOVNC     param_2,qword ptr [R10]
   --> 1c0073adf 8a 02           MOV        AL,byte ptr [param_2]
       1c0073ae1 48 8b 54        MOV        param_2,qword ptr [RSP + local_48[8]]
                 24 78
                             LAB_1c0073ae6                                   XREF[1]:     1c0073acd(j)  
       1c0073ae6 48 8d 8c        LEA        param_1=>local_28,[RSP + 0x90]
                 24 90 00 
                 00 00
       1c0073aee e8 25 01        CALL       FUN_1c0073c18                                    undefined FUN_1c0073c18()
                 00 00


case 51

*** need review

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5
   eip 0xfffff961a3a6839f, user_address 0x75925d6800, user_data 0x8388, modrm 0x8, pc 0xfffff961a3a68412
   eip 0xfffff961a3a632e5, user_address 0x75925d6800, user_data 0x8388, modrm 0x4, pc 0xfffff961a3a6330a

                             LAB_1c006840b                                   XREF[19]:    1c00686d5(j), 1c0069382(j), 
                                                                                          1c006975c(j), 1c00699b9(j), 
                                                                                          1c00699c7(j), 1c0069af0(j), 
                                                                                          1c0069b9b(j), 1c0069c9e(j), 
                                                                                          1c0069dbe(j), 1c016f52f(j), 
                                                                                          1c016f53d(j), 1c016f54b(j), 
                                                                                          1c016f779(j), 1c016f791(j), 
                                                                                          1c016fb18(j), 1c016fb25(j), 
                                                                                          1c016fb32(j), 1c0170a1f(j), 
                                                                                          1c0170e11(j)  
       1c006840b 48 8b 87        MOV        RAX,qword ptr [RDI + 0x1b0]
                 b0 01 00 00
   --> 1c0068412 8b 08           MOV        param_1,dword ptr [RAX]
       1c0068414 48 c1 e9 09     SHR        param_1,0x9
       1c0068418 83 e1 01        AND        param_1,0x1
       1c006841b 89 8c 24        MOV        dword ptr [RSP + local_518],param_1
                 90 01 00 00
       1c0068422 eb 20           JMP        LAB_1c0068444
       1c0068424 48              ??         48h    H

                             LAB_1c00632ed                                   XREF[1]:     1c00632e8(j)  
       1c00632ed 4c 8b a7        MOV        R12,qword ptr [RDI + DAT_000001b0]
                 b0 01 00 00
       1c00632f4 83 7b 30 04     CMP        dword ptr [RBX + 0x30],0x4
       1c00632f8 0f 85 6a        JNZ        LAB_1c016e468
                 b1 10 00
       1c00632fe 49 8b be        MOV        RDI,qword ptr [R14 + 0x88]
                 88 00 00 00
       1c0063305 4c 8b 5c        MOV        R11,qword ptr [RSP + local_58]
                 24 50
                             LAB_1c006330a                                   XREF[1]:     1c016e47c(j)  
   --> 1c006330a 49 8b 04 24     MOV        RAX,qword ptr [R12]
       1c006330e 4c 8b f0        MOV        R14,RAX
       1c0063311 41 83 e6 10     AND        R14D,0x10
       1c0063315 4c 89 74        MOV        qword ptr [RSP + local_50],R14
                 24 58
       1c006331a 49 8b 4c        MOV        RCX,qword ptr [R12 + 0x68]
                 24 68
       1c006331f 48 89 4c        MOV        qword ptr [RSP + local_58],RCX
                 24 50
       1c0063324 48 89 4c        MOV        qword ptr [RSP + local_48],RCX
                 24 60
       1c0063329 48 83 bc        CMP        qword ptr [RSP + local_res18],0x0
                 24 c0 00 
                 00 00 00
       1c0063332 75 06           JNZ        LAB_1c006333a
       1c0063334 48 83 e0 ef     AND        RAX,-0x11
       1c0063338 eb 04           JMP        LAB_1c006333e


case 52

They all invoked memcpy.

*** need review

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1087
   eip 0xfffff961a3a47370, user_address 0x1f979a1c130, user_data 0x0, modrm 0x50, pc 0xfffff961a3a473a1
   eip 0xfffff961a3b44d40, user_address 0x1f979a1c130, user_data 0x0, modrm 0x44, pc 0xfffff961a3b44f00

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1087
   eip 0xfffff961a3a47370, user_address 0x1f979a1c120, user_data 0x0, modrm 0x40, pc 0xfffff961a3a473a8
   eip 0xfffff961a3b44d40, user_address 0x1f979a1c120, user_data 0x100000000000, modrm 0x44, pc 0xfffff961a3b44f00

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1087
   eip 0xfffff961a3a46ed0, user_address 0x1f979a1c110, user_data 0x28, modrm 0x0, pc 0xfffff961a3a46fac
   eip 0xfffff961a3b44d40, user_address 0x1f979a1c110, user_data 0x2000000028, modrm 0x44, pc 0xfffff961a3b44f00

                             **************************************************************
                             *                          FUNCTION                          *
                             **************************************************************
                             undefined FUN_1c0047370()
             undefined         AL:1           <RETURN>
             undefined8        Stack[0x8]:8   local_res8                              XREF[2]:     1c0047370(W), 
                                                                                                   1c00473f7(R)  
                             FUN_1c0047370                                   XREF[7]:     NtGdiCreateDIBSection:1c004603a(
                                                                                          FUN_1c0046a9c:1c0046b30(c), 
                                                                                          NtGdiGetDIBitsInternal:1c0047006
                                                                                          NtGdiGetDIBitsInternal:1c0047095
                                                                                          FUN_1c01f18ec:1c01f1913(c), 
                                                                                          1c02f4498(*), 1c0333190(*)  
       1c0047370 48 89 5c        MOV        qword ptr [RSP + local_res8],RBX
                 24 08
       1c0047375 33 db           XOR        EBX,EBX
       1c0047377 44 8b c2        MOV        R8D,EDX
       1c004737a 48 8b c1        MOV        RAX,RCX
       1c004737d 48 85 c9        TEST       RCX,RCX
       1c0047380 0f 84 ed        JZ         LAB_1c0047473
                 00 00 00
       1c0047386 44 8b 11        MOV        R10D,dword ptr [RCX]
       1c0047389 44 8d 4b 02     LEA        R9D,[RBX + 0x2]
       1c004738d 41 83 fa 0c     CMP        R10D,0xc
       1c0047391 0f 84 ad        JZ         LAB_1c0166f44
                 fb 11 00
       1c0047397 41 83 fa 28     CMP        R10D,0x28
       1c004739b 0f 82 d2        JC         LAB_1c0047473
                 00 00 00
   --> 1c00473a1 8b 50 20        MOV        EDX,dword ptr [RAX + 0x20]
       1c00473a4 44 8d 5b 04     LEA        R11D,[RBX + 0x4]
   --> 1c00473a8 8b 40 10        MOV        EAX,dword ptr [RAX + 0x10]
       1c00473ab 0f b7 49 0e     MOVZX      ECX,word ptr [RCX + 0xe]
       1c00473af 83 f8 03        CMP        EAX,0x3
       1c00473b2 75 49           JNZ        LAB_1c00473fd
       1c00473b4 41 83 f8 01     CMP        R8D,0x1
       1c00473b8 44 0f 44 c3     CMOVZ      R8D,EBX
       1c00473bc 83 f9 20        CMP        ECX,0x20
       1c00473bf 0f 85 94        JNZ        LAB_1c0166f59
                 fb 11 00

                             LAB_1c00473c5                                   XREF[1]:     1c0166f5c(j)  
       1c00473c5 41 83 fa 28     CMP        R10D,0x28
       1c00473c9 0f 87 a0        JA         LAB_1c004746f
                 00 00 00
       1c00473cf ba 03 00        MOV        EDX,0x3
                 00 00
                             LAB_1c00473d4                                   XREF[2]:     1c0047427(j), 1c004742d(j)  
       1c00473d4 41 83 f8 01     CMP        R8D,0x1
       1c00473d8 74 0a           JZ         LAB_1c00473e4
       1c00473da 45 3b c1        CMP        R8D,R9D
       1c00473dd 44 0f 44 db     CMOVZ      R11D,EBX
       1c00473e1 45 8b cb        MOV        R9D,R11D
                             LAB_1c00473e4                                   XREF[1]:     1c00473d8(j)  
       1c00473e4 41 0f af d1     IMUL       EDX,R9D
       1c00473e8 41 8d 42 03     LEA        EAX,[R10 + 0x3]
       1c00473ec 03 c2           ADD        EAX,EDX
       1c00473ee 83 e0 fc        AND        EAX,0xfffffffc
       1c00473f1 41 3b c2        CMP        EAX,R10D
       1c00473f4 0f 42 c3        CMOVC      EAX,EBX
                             LAB_1c00473f7                                   XREF[2]:     1c004743e(j), 1c0047475(j)  
       1c00473f7 48 8b 5c        MOV        RBX,qword ptr [RSP + local_res8]
                 24 08
       1c00473fc c3              RET


probe

       1c0046f90 4c 89 a4        MOV        qword ptr [RSP + local_88],R12
                 24 a0 00 
                 00 00
       1c0046f98 48 8b 05        MOV        RAX,qword ptr [->WIN32KBASE.SYS::W32UserProbeA   = 00357e22
                 59 a6 30 00
       1c0046f9f 48 8b 08        MOV        param_1,qword ptr [RAX]
       1c0046fa2 49 8b c7        MOV        RAX,R15
       1c0046fa5 4c 3b f9        CMP        R15,param_1
       1c0046fa8 48 0f 43 c1     CMOVNC     RAX,param_1
   --> 1c0046fac 8a 00           MOV        AL,byte ptr [RAX]
       1c0046fae 41 8b 37        MOV        ESI,dword ptr [R15]
       1c0046fb1 8b d6           MOV        param_2,ESI
       1c0046fb3 49 8b cf        MOV        param_1,R15
       1c0046fb6 ff 15 3c        CALL       qword ptr [->NTOSKRNL.EXE::ProbeForWrite]
                 7a 30 00
       1c0046fbc 4d 85 e4        TEST       R12,R12
       1c0046fbf 0f 85 f0        JNZ        LAB_1c00471b5
                 01 00 00

memcpy

                             LAB_1c0144eee                                   XREF[1]:     1c0144d46(j)  
       1c0144eee 49 03 c8        ADD        _Dst,_Size
       1c0144ef1 49 83 f8 4f     CMP        _Size,0x4f
       1c0144ef5 73 4f           JNC        LAB_1c0144f46
                             LAB_1c0144ef7                                   XREF[2]:     1c0144f9e(j), 1c0145074(j)  
       1c0144ef7 4d 8b c8        MOV        R9,_Size
       1c0144efa 49 c1 e9 03     SHR        R9,0x3
       1c0144efe 74 11           JZ         LAB_1c0144f11
                             LAB_1c0144f00                                   XREF[1]:     1c0144f0f(j)  
   --> 1c0144f00 48 8b 44        MOV        RAX,qword ptr [_Src + _Dst*0x1 + -0x8]
                 0a f8
       1c0144f05 48 83 e9 08     SUB        _Dst,0x8
       1c0144f09 49 ff c9        DEC        R9
       1c0144f0c 48 89 01        MOV        qword ptr [_Dst],RAX
       1c0144f0f 75 ef           JNZ        LAB_1c0144f00
                             LAB_1c0144f11                                   XREF[1]:     1c0144efe(j)  
       1c0144f11 49 83 e0 07     AND        _Size,0x7
       1c0144f15 74 17           JZ         LAB_1c0144f2e
       1c0144f17 66 0f 1f        NOP        word ptr [RAX + RAX*0x1]
                 84 00 00 
                 00 00 00


case 53

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1087
   eip 0xfffff961a3a46f87, user_address 0x1f978d80030, user_data 0x28, modrm 0x0, pc 0xfffff961a3a46fac
   eip 0xfffff961a3a47370, user_address 0x1f978d80030, user_data 0x28, modrm 0x11, pc 0xfffff961a3a47386
       1c0046f90 4c 89 a4        MOV        qword ptr [RSP + local_88],R12
                 24 a0 00 
                 00 00
       1c0046f98 48 8b 05        MOV        RAX,qword ptr [->WIN32KBASE.SYS::W32UserProbeA   = 00357e22
                 59 a6 30 00
       1c0046f9f 48 8b 08        MOV        param_1,qword ptr [RAX]
       1c0046fa2 49 8b c7        MOV        RAX,R15
       1c0046fa5 4c 3b f9        CMP        R15,param_1
       1c0046fa8 48 0f 43 c1     CMOVNC     RAX,param_1
   --> 1c0046fac 8a 00           MOV        AL,byte ptr [RAX]
   --> 1c0046fae 41 8b 37        MOV        ESI,dword ptr [R15]
       1c0046fb1 8b d6           MOV        param_2,ESI
       1c0046fb3 49 8b cf        MOV        param_1,R15
       1c0046fb6 ff 15 3c        CALL       qword ptr [->NTOSKRNL.EXE::ProbeForWrite]
                 7a 30 00
       1c0046fbc 4d 85 e4        TEST       R12,R12
       1c0046fbf 0f 85 f0        JNZ        LAB_1c00471b5
                 01 00 00
       1c0046fc5 44 8d 77 0c     LEA        R14D,[RDI + 0xc]
       1c0046fc9 41 3b f6        CMP        ESI,R14D
       1c0046fcc 0f 84 f2        JZ         LAB_1c00471c4
                 01 00 00
                             LAB_1c0046fd2                                   XREF[1]:     1c00471c9(j)  
       1c0046fd2 bb 28 00        MOV        EBX,0x28
                 00 00
       1c0046fd7 44 8b 74        MOV        R14D,dword ptr [RSP + local_d8]
                 24 50
       1c0046fdc 3b f3           CMP        ESI,EBX
       1c0046fde 72 0e           JC         LAB_1c0046fee
       1c0046fe0 66 41 39        CMP        word ptr [R15 + 0xe],DI
                 7f 0e
       1c0046fe5 44 0f 44 f3     CMOVZ      R14D,EBX
       1c0046fe9 44 89 74        MOV        dword ptr [RSP + local_d8],R14D
                 24 50
                             LAB_1c0046fee                                   XREF[2]:     1c0046fde(j), 1c00471bf(j)  
       1c0046fee 45 85 f6        TEST       R14D,R14D
       1c0046ff1 0f 85 1e        JNZ        LAB_1c0047115
                 01 00 00
       1c0046ff7 41 39 1f        CMP        dword ptr [R15],EBX
       1c0046ffa 75 04           JNZ        LAB_1c0047000
       1c0046ffc 41 89 7f 20     MOV        dword ptr [R15 + 0x20],EDI
                             LAB_1c0047000                                   XREF[1]:     1c0046ffa(j)  
       1c0047000 41 8b d5        MOV        param_2,R13D
       1c0047003 49 8b cf        MOV        param_1,R15
       1c0047006 e8 65 03        CALL       FUN_1c0047370                                    undefined FUN_1c0047370()
                 00 00
       1c004700b 44 8b f0        MOV        R14D,EAX
       1c004700e 44 89 74        MOV        dword ptr [RSP + local_d8],R14D
                 24 50
       1c0047013 85 c0           TEST       EAX,EAX
       1c0047015 0f 84 15        JZ         LAB_1c0047130
                 01 00 00
       1c004701b 48 89 bc        MOV        qword ptr [RSP + local_a0],RDI
                 24 88 00 
                 00 00
       1c0047023 ba 47 74        MOV        param_2,0x706d7447
                 6d 70
       1c0047028 41 8b ce        MOV        param_1,R14D
       1c004702b ff 15 7f        CALL       qword ptr [->WIN32KBASE.SYS::Win32AllocPool]
                 a6 30 00

                             **************************************************************
                             *                          FUNCTION                          *
                             **************************************************************
                             undefined FUN_1c0047370()
             undefined         AL:1           <RETURN>
             undefined8        Stack[0x8]:8   local_res8                              XREF[2]:     1c0047370(W), 
                                                                                                   1c00473f7(R)  
                             FUN_1c0047370                                   XREF[7]:     NtGdiCreateDIBSection:1c004603a(
                                                                                          FUN_1c0046a9c:1c0046b30(c), 
                                                                                          NtGdiGetDIBitsInternal:1c0047006
                                                                                          NtGdiGetDIBitsInternal:1c0047095
                                                                                          FUN_1c01f18ec:1c01f1913(c), 
                                                                                          1c02f4498(*), 1c0333190(*)  
       1c0047370 48 89 5c        MOV        qword ptr [RSP + local_res8],RBX
                 24 08
       1c0047375 33 db           XOR        EBX,EBX
       1c0047377 44 8b c2        MOV        R8D,EDX
       1c004737a 48 8b c1        MOV        RAX,RCX
       1c004737d 48 85 c9        TEST       RCX,RCX
       1c0047380 0f 84 ed        JZ         LAB_1c0047473
                 00 00 00
   --> 1c0047386 44 8b 11        MOV        R10D,dword ptr [RCX]
       1c0047389 44 8d 4b 02     LEA        R9D,[RBX + 0x2]
       1c004738d 41 83 fa 0c     CMP        R10D,0xc
       1c0047391 0f 84 ad        JZ         LAB_1c0166f44
                 fb 11 00
       1c0047397 41 83 fa 28     CMP        R10D,0x28
       1c004739b 0f 82 d2        JC         LAB_1c0047473
                 00 00 00
   x   1c00473a1 8b 50 20        MOV        EDX,dword ptr [RAX + 0x20]
       1c00473a4 44 8d 5b 04     LEA        R11D,[RBX + 0x4]
   x   1c00473a8 8b 40 10        MOV        EAX,dword ptr [RAX + 0x10]
       1c00473ab 0f b7 49 0e     MOVZX      ECX,word ptr [RCX + 0xe]
       1c00473af 83 f8 03        CMP        EAX,0x3
       1c00473b2 75 49           JNZ        LAB_1c00473fd
       1c00473b4 41 83 f8 01     CMP        R8D,0x1
       1c00473b8 44 0f 44 c3     CMOVZ      R8D,EBX
       1c00473bc 83 f9 20        CMP        ECX,0x20
       1c00473bf 0f 85 94        JNZ        LAB_1c0166f59
                 fb 11 00

                             LAB_1c00473c5                                   XREF[1]:     1c0166f5c(j)  
       1c00473c5 41 83 fa 28     CMP        R10D,0x28
       1c00473c9 0f 87 a0        JA         LAB_1c004746f
                 00 00 00
       1c00473cf ba 03 00        MOV        EDX,0x3
                 00 00
                             LAB_1c00473d4                                   XREF[2]:     1c0047427(j), 1c004742d(j)  
       1c00473d4 41 83 f8 01     CMP        R8D,0x1
       1c00473d8 74 0a           JZ         LAB_1c00473e4
       1c00473da 45 3b c1        CMP        R8D,R9D
       1c00473dd 44 0f 44 db     CMOVZ      R11D,EBX
       1c00473e1 45 8b cb        MOV        R9D,R11D
                             LAB_1c00473e4                                   XREF[1]:     1c00473d8(j)  
       1c00473e4 41 0f af d1     IMUL       EDX,R9D
       1c00473e8 41 8d 42 03     LEA        EAX,[R10 + 0x3]
       1c00473ec 03 c2           ADD        EAX,EDX
       1c00473ee 83 e0 fc        AND        EAX,0xfffffffc
       1c00473f1 41 3b c2        CMP        EAX,R10D
       1c00473f4 0f 42 c3        CMOVC      EAX,EBX
                             LAB_1c00473f7                                   XREF[2]:     1c004743e(j), 1c0047475(j)  
       1c00473f7 48 8b 5c        MOV        RBX,qword ptr [RSP + local_res8]
                 24 08
       1c00473fc c3              RET



case 54

useless

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5
   eip 0xfffff80179c91b72, user_address 0x75925d7740, user_data 0x1, modrm 0x91, pc 0xfffff80179c91b7f
   eip 0xfffff961a3a34c30, user_address 0x75925d7740, user_data 0x1, modrm 0x88, pc 0xfffff961a3a34c7f
                             LAB_140407b4f                                   XREF[1]:     140407b3f(j)  
       140407b4f 49 89 b7        MOV        qword ptr [R15 + 0x180],RSI
                 80 01 00 00
       140407b56 4d 8b ce        MOV        param_4,R14
       140407b59 4d 8d 46 d0     LEA        param_3,[R14 + -0x30]
       140407b5d 48 8b 94        MOV        param_2,qword ptr [RSP + param_5]
                 24 c0 00 
                 00 00
       140407b65 48 8b 8c        MOV        param_1,qword ptr [RSP + local_res20]
                 24 b8 00 
                 00 00
       140407b6d e8 7e cd        CALL       FUN_1401448f0                                    undefined FUN_1401448f0()
                 d3 ff
       140407b72 8b f8           MOV        EDI,EAX
       140407b74 89 44 24 34     MOV        dword ptr [RSP + local_64],EAX
       140407b78 48 8b 8b        MOV        param_1,qword ptr [RBX + 0xf0]
                 f0 00 00 00
   --> 140407b7f 8b 91 40        MOV        param_2,dword ptr [param_1 + 0x1740]
                 17 00 00
       140407b85 89 54 24 30     MOV        dword ptr [RSP + local_68],param_2
       140407b89 eb 21           JMP        LAB_140407bac
       140407b8b ba 01 00        MOV        EDX,0x1
                 00 00
       140407b90 89 54 24 30     MOV        dword ptr [RSP + 0x30],EDX
       140407b94 48 8b 5c        MOV        RBX,qword ptr [RSP + 0x38]
                 24 38
       140407b99 4c 8b 74        MOV        R14,qword ptr [RSP + 0x40]
                 24 40
       140407b9e 4c 8b 7c        MOV        R15,qword ptr [RSP + 0x48]
                 24 48
       140407ba3 4c 8b 64        MOV        R12,qword ptr [RSP + 0x50]
                 24 50
       140407ba8 8b 7c 24 34     MOV        EDI,dword ptr [RSP + 0x34]

                             0x34c30  1267  NtGdiFlushUserBatch
                             Ordinal_1267                                    XREF[5]:     Entry Point(*), 1c02f2ee0(*), 
                             NtGdiFlushUserBatch                                          1c0332a94(*), 1c03663f0(*), 
                                                                                          1c037c154(*)  
       1c0034c30 48 89 5c        MOV        qword ptr [RSP + local_res8],RBX
                 24 08
       1c0034c35 48 89 74        MOV        qword ptr [RSP + local_res10],RSI
                 24 10
       1c0034c3a 48 89 7c        MOV        qword ptr [RSP + local_res18],RDI
                 24 18
       1c0034c3f 4c 89 64        MOV        qword ptr [RSP + local_res20],R12
                 24 20
       1c0034c44 41 55           PUSH       R13
       1c0034c46 41 56           PUSH       R14
       1c0034c48 41 57           PUSH       R15
       1c0034c4a 48 81 ec        SUB        RSP,0x260
                 60 02 00 00
       1c0034c51 48 8b 05        MOV        RAX,qword ptr [DAT_1c0320fb8]                    = 00002B992DDFA232h
                 60 c3 2e 00
       1c0034c58 48 33 c4        XOR        RAX,RSP
       1c0034c5b 48 89 84        MOV        qword ptr [RSP + local_28],RAX
                 24 50 02 
                 00 00
       1c0034c63 65 48 8b        MOV        RAX,qword ptr GS:[0x30]
                 04 25 30 
                 00 00 00
       1c0034c6c 48 89 84        MOV        qword ptr [RSP + local_198],RAX
                 24 e0 00 
                 00 00
       1c0034c74 c7 84 24        MOV        dword ptr [RSP + local_1b4],0x1
                 c4 00 00 
                 00 01 00 
   --> 1c0034c7f 8b 88 40        MOV        ECX,dword ptr [RAX + 0x1740]
                 17 00 00
       1c0034c85 89 8c 24        MOV        dword ptr [RSP + local_1dc],ECX
                 9c 00 00 00
       1c0034c8c 4c 8d a8        LEA        R13,[RAX + 0x300]
                 00 03 00 00
       1c0034c93 4c 89 ac        MOV        qword ptr [RSP + local_1e8],R13
                 24 90 00 
                 00 00
       1c0034c9b c7 80 40        MOV        dword ptr [RAX + 0x1740],0x0
                 17 00 00 
                 00 00 00 00
       1c0034ca5 81 a0 f0        AND        dword ptr [RAX + 0x2f0],0x80000000
                 02 00 00 
                 00 00 00 80
       1c0034caf 8b b8 f0        MOV        EDI,dword ptr [RAX + 0x2f0]
                 02 00 00
       1c0034cb5 eb 05           JMP        LAB_1c0034cbc
       1c0034cb7 e9 63 01        JMP        LAB_1c0034e1f
                 00 00

The TIB is also known as Thread Environment Block. In a Win32 environment, the FS register always points at the TEB, in a Win64 environment, it’s the GS register. Programattically, the TEB can be found with NtCurrentTeb(). Struct members The TIB apparently corresponds to the NT_TIB struct (winnt.h) The first element is a pointer to (the thread’s) EXCEPTION_REGISTRATION struct. The second and third elements contain the high and low addresses of the stack. etc. Offset 0x18 (Win32) of the TIB points to the linear address of itself:

mov eax, fs:[0x18]

In Win64, this is gs:[0x30]. NtosKrnl.exe (ntddk.h, NtosKrnl.lib) provides the function PsGetCurrentThreadTeb() that returns a pointer to the TIB. Offset 0x30 (Win32) points to the linear address of the PEB. In Win64, this is gs:[0x60].


case 55

useless

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1091
   eip 0xfffff961a3a55afd, user_address 0x7592a7e610, user_data 0x2c, modrm 0x2, pc 0xfffff961a3a55b2e
   eip 0xfffff961a3a55afd, user_address 0x7592a7e610, user_data 0x2c, modrm 0x7, pc 0xfffff961a3a55b38
                             LAB_1c0055b1d                                   XREF[1]:     1c0055b15(j)  
       1c0055b1d 48 8b 05        MOV        RAX,qword ptr [->WIN32KBASE.SYS::W32UserProbeA   = 00357e22
                 d4 ba 2f 00
       1c0055b24 48 8b d7        MOV        RDX,RDI
       1c0055b27 48 3b 38        CMP        RDI,qword ptr [RAX]
       1c0055b2a 48 0f 43 10     CMOVNC     RDX,qword ptr [RAX]
   --> 1c0055b2e 8a 02           MOV        AL,byte ptr [RDX]
       1c0055b30 88 02           MOV        byte ptr [RDX],AL
       1c0055b32 8a 42 2b        MOV        AL,byte ptr [RDX + 0x2b]
       1c0055b35 88 42 2b        MOV        byte ptr [RDX + 0x2b],AL
   --> 1c0055b38 8b 07           MOV        EAX,dword ptr [RDI]
       1c0055b3a 89 44 24 68     MOV        dword ptr [RSP + local_50[0]],EAX
       1c0055b3e eb 07           JMP        LAB_1c0055b47
       1c0055b40 33 db           XOR        EBX,EBX
       1c0055b42 e9 e7 00        JMP        LAB_1c0055c2e
                 00 00


case 56

DOUBLE FETCH:   cr3 0x12cd41000, syscall 0x1a9
   eip 0xfffff80179c53d41, user_address 0x16934f7a128, user_data 0x0, modrm 0x2, pc 0xfffff80179c53d57
   eip 0xfffff80179c53d41, user_address 0x16934f7a128, user_data 0x169350c6020, modrm 0x2, pc 0xfffff80179c53d57
                             LAB_1403c9d13                                   XREF[1]:     1403c9d03(j)  
       1403c9d13 44 8b 43 30     MOV        R8D,dword ptr [RBX + 0x30]
       1403c9d17 4c 8d 4c        LEA        R9=>local_70,[RSP + 0x28]
                 24 28
       1403c9d1c 48 8b d7        MOV        RDX,RDI
       1403c9d1f e8 14 01        CALL       FUN_1403c9e38                                    undefined FUN_1403c9e38()
                 00 00
       1403c9d24 89 44 24 20     MOV        dword ptr [RSP + local_78],EAX
       1403c9d28 85 c0           TEST       EAX,EAX
       1403c9d2a 0f 88 a6        JS         LAB_1403c9dd6
                 00 00 00
       1403c9d30 44 8b 43 30     MOV        R8D,dword ptr [RBX + 0x30]
       1403c9d34 48 8b d3        MOV        RDX,RBX
       1403c9d37 48 8b 4c        MOV        RCX,qword ptr [RSP + local_70]
                 24 28
       1403c9d3c e8 3f 3a        CALL       RtlCopyMemory                                    void * RtlCopyMemory(void * _Dst
                 d8 ff
       1403c9d41 f6 47 5a 10     TEST       byte ptr [RDI + 0x5a],0x10
       1403c9d45 75 25           JNZ        LAB_1403c9d6c
       1403c9d47 4c 8b 44        MOV        R8,qword ptr [RSP + local_70]
                 24 28
       1403c9d4c 49 83 c0 20     ADD        R8,0x20
       1403c9d50 48 8b 57 48     MOV        RDX,qword ptr [RDI + 0x48]
       1403c9d54 0f 0d 0a        PREFETCHW  byte ptr [RDX]
   --> 1403c9d57 48 8b 02        MOV        RAX,qword ptr [RDX]
                             LAB_1403c9d5a                                   XREF[1]:     1403c9d68(j)  
       1403c9d5a 49 89 00        MOV        qword ptr [R8],RAX
       1403c9d5d 48 8b c8        MOV        RCX,RAX
       1403c9d60 f0              LOCK
       1403c9d61 4c 0f b1 02     CMPXCHG    qword ptr [RDX],R8
       1403c9d65 48 3b c1        CMP        RAX,RCX
       1403c9d68 75 f0           JNZ        LAB_1403c9d5a
       1403c9d6a eb 24           JMP        LAB_1403c9d90


case 57

0xfffff801799d7940 is from RtlCopyMemory(), and 0xfffff80179c82010 is from RtlEqualUnicodeString().

Is it possible to let the unicode string equal to something string in order to bypass authentication?

DOUBLE FETCH:   cr3 0x10d414000, syscall 0x1a9
   eip 0xfffff801799d7780, user_address 0x163d11228a0, user_data 0x4d005000420055, modrm 0x44, pc 0xfffff801799d7940
   eip 0xfffff80179c82009, user_address 0x163d11228a0, user_data 0x4d005000420055, modrm 0xa, pc 0xfffff80179c82010
                             LAB_14014d940                                   XREF[1]:     14014d94f(j)  
   --> 14014d940 48 8b 44        MOV        RAX,qword ptr [_Src + _Dst*0x1 + -0x8]
                 0a f8
       14014d945 48 83 e9 08     SUB        _Dst,0x8
       14014d949 49 ff c9        DEC        R9
       14014d94c 48 89 01        MOV        qword ptr [_Dst],RAX
       14014d94f 75 ef           JNZ        LAB_14014d940

                             LAB_14014d951                                   XREF[1]:     14014d93e(j)  
       14014d951 49 83 e0 07     AND        _Size,0x7
       14014d955 74 17           JZ         LAB_14014d96e
       14014d957 66 0f 1f        NOP        word ptr [RAX + RAX*0x1]
                 84 00 00 
                 00 00 00
                             LAB_14014d960                                   XREF[1]:     14014d96c(j)  
       14014d960 8a 44 0a ff     MOV        AL,byte ptr [_Src + _Dst*0x1 + -0x1]
       14014d964 48 ff c9        DEC        _Dst
       14014d967 49 ff c8        DEC        _Size
       14014d96a 88 01           MOV        byte ptr [_Dst],AL
       14014d96c 75 f2           JNZ        LAB_14014d960

                             **************************************************************
                             *                          FUNCTION                          *
                             **************************************************************
                             undefined RtlEqualUnicodeString()
             undefined         AL:1           <RETURN>
             undefined8        Stack[-0x8]:8  local_8                                 XREF[4]:     1403f8032(*), 
                                                                                                   1403f8071(*), 
                                                                                                   1403f80b6(*), 
                                                                                                   1403f80c1(*)  
                             0x3f7fe0  1822  RtlEqualUnicodeString
                             Ordinal_1822                                    XREF[103]:   Entry Point(*), 
                             RtlEqualUnicodeString                                        FUN_14005aa20:14005aaa9(c), 
                                                                                          FUN_14005abc0:14005abfd(c), 
                                                                                          FUN_140215424:14021554d(c), 
                                                                                          14026aeb4(*), 14026aec8(*), 
                                                                                          14026aedc(*), 14026aef0(*), 
                                                                                          14026af04(*), 1403569d4(*), 
                                                                                          FUN_14046e2c4:14046e33f(c), 
                                                                                          FUN_1406c4774:1406c48b9(c), 
                                                                                          FUN_1406c4774:1406c48d4(c), 
                                                                                          FUN_1406c6b6c:1406c6b9a(c), 
                                                                                          FUN_1406c6b6c:1406c6bbd(c), 
                                                                                          FUN_1406c6b6c:1406c6bdd(c), 
                                                                                          FUN_1406c6b6c:1406c6bfd(c), 
                                                                                          FUN_1406c6b6c:1406c6c1d(c), 
                                                                                          FUN_1406c6b6c:1406c6c3d(c), 
                                                                                          FUN_1406c6b6c:1406c6c68(c), [more]
       1403f7fe0 48 83 ec 08     SUB        RSP,0x8
       1403f7fe4 0f b7 01        MOVZX      EAX,word ptr [RCX]
       1403f7fe7 44 0f b7 0a     MOVZX      R9D,word ptr [RDX]
       1403f7feb 41 3b c1        CMP        EAX,R9D
       1403f7fee 74 07           JZ         LAB_1403f7ff7
       1403f7ff0 32 c0           XOR        AL,AL
                             LAB_1403f7ff2                                   XREF[3]:     1403f8077(j), 1403f80bc(j), 
                                                                                          1403f80c7(j)  
       1403f7ff2 48 83 c4 08     ADD        RSP,0x8
       1403f7ff6 c3              RET
                             LAB_1403f7ff7                                   XREF[1]:     1403f7fee(j)  
       1403f7ff7 4c 8b 49 08     MOV        R9,qword ptr [RCX + 0x8]
       1403f7ffb 4c 8b 52 08     MOV        R10,qword ptr [RDX + 0x8]
       1403f7fff 4e 8d 1c 08     LEA        R11,[RAX + R9*0x1]
       1403f8003 48 83 f8 08     CMP        RAX,0x8
       1403f8007 72 29           JC         LAB_1403f8032
       1403f8009 0f 1f 80        NOP        dword ptr [RAX]
                 00 00 00 00
                             LAB_1403f8010                                   XREF[1]:     1403f8030(j)  
   --> 1403f8010 49 8b 0a        MOV        RCX,qword ptr [R10]
       1403f8013 49 39 09        CMP        qword ptr [R9],RCX
       1403f8016 75 1a           JNZ        LAB_1403f8032
       1403f8018 83 e8 08        SUB        EAX,0x8
       1403f801b 0f 84 ab        JZ         LAB_1403f80cc
                 00 00 00
       1403f8021 49 83 c1 08     ADD        R9,0x8
       1403f8025 48 63 c8        MOVSXD     RCX,EAX
       1403f8028 49 83 c2 08     ADD        R10,0x8
       1403f802c 48 83 f9 08     CMP        RCX,0x8
       1403f8030 73 de           JNC        LAB_1403f8010


case 58

0xfffff801799d7960 is from RtlCopyMemory

need to figure out which function is 0xfffff80179d16b03 from.

DOUBLE FETCH:   cr3 0x12279c000, syscall 0x127
   eip 0xfffff80179d16ad9, user_address 0x3dd207e710, user_data 0x1, modrm 0x1, pc 0xfffff80179d16b03
   eip 0xfffff80179d16ad9, user_address 0x3dd207e710, user_data 0x1, modrm 0x3f, pc 0xfffff80179d16b05

DOUBLE FETCH:   cr3 0x12279c000, syscall 0x127
   eip 0xfffff80179d16ad9, user_address 0x3dd207e710, user_data 0x1, modrm 0x1, pc 0xfffff80179d16b03
   eip 0xfffff801799d7780, user_address 0x3dd207e710, user_data 0x1, modrm 0x44, pc 0xfffff801799d7960

                             LAB_14048cae7                                   XREF[1]:     14048caca(j)  
       14048cae7 41 f6 c7 03     TEST       R15B,0x3
       14048caeb 0f 85 92        JNZ        LAB_14048cb83
                 00 00 00
       14048caf1 49 8b cf        MOV        RCX,R15
       14048caf4 4c 3b 3d        CMP        R15,qword ptr [MmUserProbeAddress]               = ??
                 05 27 ef ff
       14048cafb 48 0f 43        CMOVNC     RCX,qword ptr [MmUserProbeAddress]               = ??
                 0d fd 26 
                 ef ff
   --> 14048cb03 8a 01           MOV        AL,byte ptr [RCX]
   --> 14048cb05 41 8b 3f        MOV        EDI,dword ptr [R15]
       14048cb08 89 bc 24        MOV        dword ptr [RSP + 0x90],EDI
                 90 00 00 00
       14048cb0f 83 ff 42        CMP        EDI,0x42
       14048cb12 73 74           JNC        LAB_14048cb88
       14048cb14 8d 47 ff        LEA        EAX,[RDI + -0x1]
       14048cb17 8d 0c 40        LEA        ECX,[RAX + RAX*0x2]
       14048cb1a 8d 0c 8d        LEA        ECX,[0x14 + RCX*0x4]
                 14 00 00 00
       14048cb21 89 4c 24 68     MOV        dword ptr [RSP + 0x68],ECX
       14048cb25 85 c9           TEST       ECX,ECX
       14048cb27 74 16           JZ         LAB_14048cb3f
       14048cb29 8b d1           MOV        EDX,ECX
       14048cb2b 49 03 d7        ADD        RDX,R15
       14048cb2e 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 cb 26 ef ff
       14048cb35 48 3b d0        CMP        RDX,RAX
       14048cb38 77 5e           JA         LAB_14048cb98
       14048cb3a 49 3b d7        CMP        RDX,R15
       14048cb3d 72 59           JC         LAB_14048cb98

                             LAB_14014d940                                   XREF[1]:     14014d94f(j)  
       14014d940 48 8b 44        MOV        RAX,qword ptr [_Src + _Dst*0x1 + -0x8]
                 0a f8
       14014d945 48 83 e9 08     SUB        _Dst,0x8
       14014d949 49 ff c9        DEC        R9
       14014d94c 48 89 01        MOV        qword ptr [_Dst],RAX
       14014d94f 75 ef           JNZ        LAB_14014d940

                             LAB_14014d951                                   XREF[1]:     14014d93e(j)  
       14014d951 49 83 e0 07     AND        _Size,0x7
       14014d955 74 17           JZ         LAB_14014d96e
       14014d957 66 0f 1f        NOP        word ptr [RAX + RAX*0x1]
                 84 00 00 
                 00 00 00
                             LAB_14014d960                                   XREF[1]:     14014d96c(j)  
   --> 14014d960 8a 44 0a ff     MOV        AL,byte ptr [_Src + _Dst*0x1 + -0x1]
       14014d964 48 ff c9        DEC        _Dst
       14014d967 49 ff c8        DEC        _Size
       14014d96a 88 01           MOV        byte ptr [_Dst],AL
       14014d96c 75 f2           JNZ        LAB_14014d960


case 59

*** need review

0xfffff80179c9d0dc 0xfffff80179c732f7 shown in case 11.

1404130dc - 1403e92f7 = 29DE5 0xfffff80179c9d0dc - 0xfffff80179c732f7 = 29DE5

1405ed14a - 1403e92f7 = 16E53 0xfffff80179c8a14a - 0xfffff80179c732f7 = 16E53

Note:

they are not in the same syscall, 0x12 0x1d, so they are not fetching the same data. Just the code has something in common.

DOUBLE FETCH:   cr3 0xa9774000, syscall 0x12
   eip 0xfffff80179c9d01b, user_address 0x7fff928b1b80, user_data 0x7fff928bd660, modrm 0x49, pc 0xfffff80179c9d0dc
   eip 0xfffff80179c73515, user_address 0x7fff928b1b80, user_data 0x7fff928bd660, modrm 0x4a, pc 0xfffff80179c732f7


DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1d
   eip 0xfffff80179c8a045, user_address 0x7592d7f3f0, user_data 0x7fff886fe320, modrm 0x40, pc 0xfffff80179c8a14a
   eip 0xfffff80179c73515, user_address 0x7592d7f3f0, user_data 0x7fff886fe320, modrm 0x4a, pc 0xfffff80179c732f7
DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1d
   eip 0xfffff80179c8a045, user_address 0x7592d7f3e8, user_data 0x9a0098, modrm 0x8, pc 0xfffff80179c8a141
   eip 0xfffff80179c73515, user_address 0x7592d7f3e8, user_data 0x9a0098, modrm 0x2, pc 0xfffff80179c732f1
       1404130bb 48 3b f8        CMP        RDI,RAX
       1404130be 73 74           JNC        LAB_140413134
                             LAB_1404130c0                                   XREF[1]:     140413137(j)
       1404130c0 0f b6 01        MOVZX      EAX,byte ptr [param_1]
       1404130c3 48 8b 4f 10     MOV        param_1,qword ptr [RDI + 0x10]
       1404130c7 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 32 c1 f6 ff
       1404130ce 48 3b c8        CMP        param_1,RAX
       1404130d1 73 66           JNC        LAB_140413139
                             LAB_1404130d3                                   XREF[1]:     14041313c(j)
       1404130d3 8b 01           MOV        EAX,dword ptr [param_1]
       1404130d5 89 84 24        MOV        dword ptr [RSP + local_f8[0]],EAX
                 b0 00 00 00
   --> 1404130dc 48 8b 49 08     MOV        param_1,qword ptr [param_1 + 0x8]
       1404130e0 48 89 8c        MOV        qword ptr [RSP + local_f8[8]],param_1
                 24 b8 00
                 00 00
       1404130e8 0f 28 84        MOVAPS     XMM0,xmmword ptr [RSP + local_f8[0]]
                 24 b0 00
                 00 00
       1404130f0 66 0f 7f        MOVDQA     xmmword ptr [RSP + local_158[0]],XMM0
                 44 24 50

       1403e92c5 65 48 8b        MOV        RAX,qword ptr GS:[0x188]
                 04 25 88
                 01 00 00
       1403e92ce 0f b6 88        MOVZX      ECX,byte ptr [RAX + 0x232]
                 32 02 00 00
       1403e92d5 41 88 4b 18     MOV        byte ptr [R11 + local_res18],CL
       1403e92d9 84 c9           TEST       CL,CL
       1403e92db 0f 84 5d        JZ         LAB_1403e943e
                 01 00 00
       1403e92e1 48 8b 05        MOV        RAX,qword ptr [MmUserProbeAddress]               = ??
                 18 5f f9 ff
       1403e92e8 48 3b d0        CMP        RDX,RAX
       1403e92eb 0f 83 5a        JNC        LAB_1403e944b
                 01 00 00
                             LAB_1403e92f1                                   XREF[1]:     1403e944e(j)
   --x 1403e92f1 8b 02           MOV        EAX,dword ptr [RDX]
       1403e92f3 89 44 24 40     MOV        dword ptr [RSP + local_38[0]],EAX
   --> 1403e92f7 48 8b 4a 08     MOV        RCX,qword ptr [RDX + 0x8]
       1403e92fb 48 89 4c        MOV        qword ptr [RSP + local_38[8]],RCX
                 24 48
       1403e9300 66 85 c0        TEST       AX,AX
       1403e9303 74 28           JZ         LAB_1403e932d
       1403e9305 f6 c1 01        TEST       CL,0x1
       1403e9308 0f 85 45        JNZ        LAB_1403e9453
                 01 00 00

                             LAB_140400122                                   XREF[1]:     140400258(j)  
       140400122 0f b6 01        MOVZX      EAX,byte ptr [param_1]
       140400125 48 8b 47 10     MOV        RAX,qword ptr [RDI + 0x10]
       140400129 48 89 84        MOV        qword ptr [RSP + local_f8],RAX
                 24 e0 00 
                 00 00
       140400131 48 8b 0d        MOV        param_1,qword ptr [MmUserProbeAddress]           = ??
                 c8 f0 f7 ff
       140400138 48 3b c1        CMP        RAX,param_1
       14040013b 0f 83 1c        JNC        LAB_14040025d
                 01 00 00
                             LAB_140400141                                   XREF[1]:     140400260(j)  
   --x 140400141 8b 08           MOV        param_1,dword ptr [RAX]
       140400143 89 8c 24        MOV        dword ptr [RSP + local_118[0]],param_1
                 c0 00 00 00
   --> 14040014a 48 8b 40 08     MOV        RAX,qword ptr [RAX + 0x8]
       14040014e 48 89 84        MOV        qword ptr [RSP + local_118[8]],RAX
                 24 c8 00 
                 00 00
       140400156 0f 28 84        MOVAPS     XMM0,xmmword ptr [RSP + local_118[0]]
                 24 c0 00 
                 00 00
       14040015e 66 0f 7f        MOVDQA     xmmword ptr [RSP + local_188[0]],XMM0
                 44 24 50
       140400164 66 85 c9        TEST       param_1,param_1
       140400167 74 27           JZ         LAB_140400190
       140400169 a8 01           TEST       AL,0x1
       14040016b 0f 85 f4        JNZ        LAB_140400265
                 00 00 00
       140400171 0f b7 d1        MOVZX      param_2,param_1
       140400174 48 03 d0        ADD        param_2,RAX
       140400177 48 8b 0d        MOV        param_1,qword ptr [MmUserProbeAddress]           = ??
                 82 f0 f7 ff
       14040017e 48 3b d1        CMP        param_2,param_1
       140400181 0f 87 e3        JA         LAB_14040026a
                 00 00 00
       140400187 48 3b d0        CMP        param_2,RAX
       14040018a 0f 82 da        JC         LAB_14040026a
                 00 00 00


case 60

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1d
   eip 0xfffff80179c8a045, user_address 0x7592d7efe8, user_data 0x7592d7f3e8, modrm 0x47, pc 0xfffff80179c8a125
   eip 0xfffff80179c73515, user_address 0x7592d7efe8, user_data 0x7592d7f3e8, modrm 0x78, pc 0xfffff80179c73108


DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x1d
   eip 0xfffff80179c8a045, user_address 0x7592d7efe0, user_data 0x5c, modrm 0x47, pc 0xfffff80179c8a280
   eip 0xfffff80179c73515, user_address 0x7592d7efe0, user_data 0x5c, modrm 0x40, pc 0xfffff80179c730df

                             LAB_1403e90d5                                   XREF[2]:     1403e9098(j), 1403e90b3(j)  
       1403e90d5 41 83 38 30     CMP        dword ptr [param_3],0x30
       1403e90d9 0f 85 b1        JNZ        LAB_1403e9190
                 00 00 00
   --x 1403e90df 49 8b 40 08     MOV        RAX,qword ptr [param_3 + 0x8]
       1403e90e3 48 89 43 08     MOV        qword ptr [RBX + 0x8],RAX
       1403e90e7 41 8b 40 18     MOV        EAX,dword ptr [param_3 + 0x18]
       1403e90eb 89 44 24 48     MOV        dword ptr [RSP + local_50],EAX
       1403e90ef 84 d2           TEST       param_2,param_2
       1403e90f1 74 08           JZ         LAB_1403e90fb
       1403e90f3 0f ba f0 09     BTR        EAX,0x9
       1403e90f7 89 44 24 48     MOV        dword ptr [RSP + local_50],EAX

                             LAB_1403e90fb                                   XREF[1]:     1403e90f1(j)  
       1403e90fb a9 0d e0        TEST       EAX,0xfffee00d
                 fe ff
       1403e9100 0f 85 9a        JNZ        LAB_1403e91a0
                 00 00 00
       1403e9106 89 03           MOV        dword ptr [RBX],EAX
   --> 1403e9108 4d 8b 78 10     MOV        R15,qword ptr [param_3 + 0x10]
       1403e910c 4c 89 7c        MOV        qword ptr [RSP + local_48],R15
                 24 50
       1403e9111 49 8b 48 20     MOV        param_1,qword ptr [param_3 + 0x20]
       1403e9115 48 89 4c        MOV        qword ptr [RSP + local_40],param_1
                 24 58
       1403e911a 4d 8b 70 28     MOV        R14,qword ptr [param_3 + 0x28]
       1403e911e 4c 89 74        MOV        qword ptr [RSP + local_58],R14
                 24 40
       1403e9123 4d 85 f6        TEST       R14,R14
       1403e9126 0f 84 8e        JZ         LAB_1403e91ba
                 00 00 00
       1403e912c 40 84 f6        TEST       SIL,SIL
       1403e912f 74 3f           JZ         LAB_1403e9170
       1403e9131 65 48 8b        MOV        RAX,qword ptr GS:[0x188]
                 04 25 88 
                 01 00 00

                             LAB_140400122                                   XREF[1]:     140400258(j)  
       140400122 0f b6 01        MOVZX      EAX,byte ptr [param_1]
   --> 140400125 48 8b 47 10     MOV        RAX,qword ptr [RDI + 0x10]
       140400129 48 89 84        MOV        qword ptr [RSP + local_f8],RAX
                 24 e0 00 
                 00 00
       140400131 48 8b 0d        MOV        param_1,qword ptr [MmUserProbeAddress]           = ??
                 c8 f0 f7 ff
       140400138 48 3b c1        CMP        RAX,param_1
       14040013b 0f 83 1c        JNC        LAB_14040025d
                 01 00 00
                             LAB_140400141                                   XREF[1]:     140400260(j)  
     x 140400141 8b 08           MOV        param_1,dword ptr [RAX]
       140400143 89 8c 24        MOV        dword ptr [RSP + local_118[0]],param_1
                 c0 00 00 00
     x 14040014a 48 8b 40 08     MOV        RAX,qword ptr [RAX + 0x8]
       14040014e 48 89 84        MOV        qword ptr [RSP + local_118[8]],RAX
                 24 c8 00 
                 00 00
       140400156 0f 28 84        MOVAPS     XMM0,xmmword ptr [RSP + local_118[0]]
                 24 c0 00 
                 00 00
       14040015e 66 0f 7f        MOVDQA     xmmword ptr [RSP + local_188[0]],XMM0
                 44 24 50
       140400164 66 85 c9        TEST       param_1,param_1
       140400167 74 27           JZ         LAB_140400190
       140400169 a8 01           TEST       AL,0x1
       14040016b 0f 85 f4        JNZ        LAB_140400265
                 00 00 00
       140400171 0f b7 d1        MOVZX      param_2,param_1
       140400174 48 03 d0        ADD        param_2,RAX
       140400177 48 8b 0d        MOV        param_1,qword ptr [MmUserProbeAddress]           = ??
                 82 f0 f7 ff
       14040017e 48 3b d1        CMP        param_2,param_1
       140400181 0f 87 e3        JA         LAB_14040026a
                 00 00 00
       140400187 48 3b d0        CMP        param_2,RAX
       14040018a 0f 82 da        JC         LAB_14040026a
                 00 00 00


...


                             LAB_140400280                                   XREF[1]:     14040019b(j)  
   --x 140400280 48 8b 47 08     MOV        RAX,qword ptr [RDI + 0x8]
       140400284 48 89 44        MOV        qword ptr [RSP + local_190],RAX
                 24 48
       140400289 8b 5c 24 44     MOV        EBX,dword ptr [RSP + local_194]
       14040028d eb 4e           JMP        LAB_1404002dd
       14040028f 8b d8           MOV        EBX,EAX
       140400291 48 c7 44        MOV        qword ptr [RSP + 0x58],0x0
                 24 58 00 
                 00 00 00



case 61

can’t find which module

DOUBLE FETCH:   cr3 0x12cd41000, syscall 0x55
   eip 0xfffff800a1e36f6a, user_address 0x1c456eb720, user_data 0x2e, modrm 0x83, pc 0xfffff800a1e36f6f
   eip 0xfffff800a1e375e0, user_address 0x1c456eb720, user_data 0x2e, modrm 0x80, pc 0xfffff800a1e375f0

case 62


Apparently, it is a “size”.

Detailed analysis is in another post.

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f328, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f328, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f338, user_data 0x2f, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f338, user_data 0x2f, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f348, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f348, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f550, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f550, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f560, user_data 0x1a, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f560, user_data 0x1a, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f530, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f530, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f540, user_data 0x1d, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f540, user_data 0x1d, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f2b0, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f2b0, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f2c0, user_data 0x21, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f2c0, user_data 0x21, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f0d0, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f0d0, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f0e0, user_data 0x5d, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f0e0, user_data 0x5d, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f0f0, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f0f0, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f2d0, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f2d0, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f2e0, user_data 0x2e, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f2e0, user_data 0x2e, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f2f0, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f2f0, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f340, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f340, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f350, user_data 0x37, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f350, user_data 0x37, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f360, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f360, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f370, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f370, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f380, user_data 0x3d, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f380, user_data 0x3d, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f390, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f390, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f5d0, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f5d0, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f5e0, user_data 0x49, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f5e0, user_data 0x49, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f5f0, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f5f0, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f570, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f570, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f580, user_data 0x2a, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f580, user_data 0x2a, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f590, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f590, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f5a0, user_data 0x53, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f5a0, user_data 0x53, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f5b0, user_data 0x27, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99d12, user_address 0x7592d7f5b0, user_data 0x27, modrm 0x54, pc 0xfffff80179c99ade

DOUBLE FETCH:   cr3 0x120c9d000, syscall 0x5e
   eip 0xfffff80179c99665, user_address 0x7592d7f5c0, user_data 0x4, modrm 0x4a, pc 0xfffff80179c99706
   eip 0xfffff80179c99c0f, user_address 0x7592d7f5c0, user_data 0x4, modrm 0x54, pc 0xfffff80179c99ade

                             LAB_14040f6eb                                   XREF[1]:     14040f73b(j)  
       14040f6eb 89 85 bc        MOV        dword ptr [RBP + local_28c],EAX
                 00 00 00
       14040f6f1 41 3b c7        CMP        EAX,R15D
       14040f6f4 0f 83 b5        JNC        LAB_14040f7af
                 00 00 00
       14040f6fa 45 8b ce        MOV        param_4,R14D
       14040f6fd 8b c8           MOV        param_1,EAX
       14040f6ff 48 c1 e1 04     SHL        param_1,0x4
       14040f703 48 03 d1        ADD        param_2,param_1
   --> 14040f706 8b 4a 08        MOV        param_1,dword ptr [param_2 + 0x8]
       14040f709 89 4d 7c        MOV        dword ptr [RBP + local_2cc],param_1
       14040f70c 44 8b c1        MOV        param_3,param_1
       14040f70f 81 f9 ff        CMP        param_1,0xffff
                 ff 00 00
       14040f715 77 56           JA         LAB_14040f76d
       14040f717 45 84 d2        TEST       R10B,R10B
       14040f71a 75 21           JNZ        LAB_14040f73d
       14040f71c 32 c9           XOR        param_1,param_1

                             LAB_14040fac3                                   XREF[1]:     14040fb76(j)  
       14040fac3 89 9d b8        MOV        dword ptr [RBP + local_290],EBX
                 00 00 00
       14040fac9 3b 9d 98        CMP        EBX,dword ptr [RBP + param_10]
                 03 00 00
       14040facf 0f 83 bf        JNC        LAB_14040fb94
                 00 00 00
       14040fad5 8b c3           MOV        EAX,EBX
       14040fad7 48 03 c0        ADD        RAX,RAX
       14040fada 48 8b 4d 50     MOV        param_1,qword ptr [RBP + local_2f8]
   --> 14040fade 8b 54 c1 08     MOV        param_2,dword ptr [param_1 + RAX*0x8 + 0x8]
       14040fae2 4c 8b 14 c1     MOV        R10,qword ptr [param_1 + RAX*0x8]
       14040fae6 45 84 ed        TEST       R13B,R13B
       14040fae9 0f 85 8c        JNZ        LAB_14040fb7b
                 00 00 00
       14040faef 32 c9           XOR        param_1,param_1