Windows 2000向け MS15-003 解析情報 その1

MS15-003 の解析が結構めんどくさいので2つに分けます
まずXPでは6つの修正があったのですが、Windows 2000が影響を受けるのはうち5つ

 L7E8CA649:
          push    edi
          call    SUB_L7E8D5C44

 L7E8D5E3E:
          test    byte ptr [esi+04h],01h
          jnz    L7E8E474C
          push    SWC7E8D6490_ntuser_dat
 L7E8D5E4D:
          push    eax
          call    edi

          push    [ebp-14h]
          push    [ebp+08h]
          push    80000003h
          call    SUB_L7E8D636D
             :
L7E8D5FB8:
          pop    edi
          pop    esi
          leave
          retn    0004h

5.1.2600.5512

 L7E8CAF43:
          push    [ebp-0000012Ch]
          push    edi
          call    SUB_L7E8D639F

 L7E8D668D:
          test    byte ptr [esi+04h],01h
          jnz    L7E8E44E2
          push    SWC7E8D6750_ntuser_dat
 L7E8D669C:
          push    eax
          call    edi
          mov    eax,[ebp+0Ch]
          push    ebx
          lea    ecx,[ebp-34h]
          mov    [ebp-34h],eax
          call    SUB_L7E9108C7
          test    eax,eax
          jnz     ZL7E8E479F

  L7E8E479F:
          push    00000005h
          pop    edi
          jmp    L7E8D5C1E
 ZL7E8E479F:
         push    ebx
          push    [ebp+08h]
          push    80000003h
          call    SUB_L7E8D5B15
                  :
 L7E8D5D77:
          pop    edi
          pop    esi
          leave
          retn    0008h

SUB_L7E9108C7:
          push    ebp
          mov    ebp,esp
          push    ecx
          push    ecx
          push    esi
          push    [ecx]
          xor    esi,esi
          lea    ecx,[ebp-08h]
          mov    [ebp-08h],esi
          mov    [ebp-04h],esi
          call    SUB_L7E91089D
          test    eax,eax
          jz     L7E910917
          push    esi
          push    00000002h
          push    00000003h
          push    esi
          push    00000003h
          push    C0000000h
          push    [ebp+08h]
          call    [KERNEL32.dll!CreateFileW]
          cmp    eax,FFFFFFFFh
          jz     L7E910909
          push    eax
          call    [KERNEL32.dll!CloseHandle]
          jmp    L7E910914
 L7E910909:
          call    [KERNEL32.dll!GetLastError]
          cmp    eax,00000005h
          jz     L7E910917
 L7E910914:
          xor    esi,esi
          inc    esi
 L7E910917:
          lea    ecx,[ebp-08h]
          call    SUB_L7E909385
          mov    eax,esi
          pop    esi
          leave
          retn    0004h
 SUB_L7E91089D:
          push    ebp
          mov    ebp,esp
          xor    eax,eax
          cmp    [ebp+08h],eax
          push    esi
          mov    esi,ecx
          jz     L7E9108BD
          call    SUB_L7E909385
          push    esi
          push    [ebp+08h]
          call    SUB_L7E8C6821
          mov    [esi+04h],eax
 L7E9108BD:
&nbs
p;         pop    esi
          pop    ebp
          retn    0004h
 SUB_L7E909385:
          push    esi
          mov    esi,ecx
          cmp    dword ptr [esi+04h],00000000h
          jz     L7E90939D
          push    esi
          call    SUB_L7E8C7DAF
          and    dword ptr [esi],00000000h
          and    dword ptr [esi+04h],00000000h
 L7E90939D:
          pop    esi
          retn

5.1.2600.6689

 L792B6D4C:
          push    edi
          call    SUB_L792B7D60

          test    byte ptr [esi+04h],01h
          jz     L792B8366
          push    SWC79286670_ntuser_man
          jmp    L792B836B
 L792B8366:
          push    SWC79286688_ntuser_dat
 L792B836B:
          push    eax
          call    edi

          lea    eax,[ebp-0000023Ch]
          push    eax
          push    [ebp+08h]
          push    80000003h
          call    SUB_L792B9A86

Win2000

 L792B6D4C:
          push    [esp+00000244h] //  FFB42444020000
          push    edi
          call    SUB_L792B7D60

          test    byte ptr [esi+04h],01h
          jz     L792B8366
          push    SWC79286670_ntuser_man
          jmp    L792B836B
 L792B8366:
          push    SWC79286688_ntuser_dat
 L792B836B:
          push    eax
          call    edi

          lea    eax,[ebp-0000023Ch]
          push    eax
          mov    eax,[ebp+0Ch]
          lea    ecx,[ebp-34h]
          mov    [ebp-34h],eax
          call    SUB_L7E9108C7
          test    eax,eax
          jnz     ZL7E8E479F
          xor     ebx,ebx
          jmp    L792B885E
 ZL7E8E479F:
          lea    eax,[ebp-0000023Ch]
          push    eax
          push    [ebp+08h]
          push    80000003h
          call    SUB_L792B9A86

SUB_L7E9108C7:
          push    ebp
          mov    ebp,esp
          push    ecx
          push    ecx
          push    esi
          push    [ecx]
          xor    esi,esi
          lea    ecx,[ebp-08h]
          mov    [ebp-08h],esi
          mov    [ebp-04h],esi
          call    SUB_L7E91089D
          test    eax,eax
          jz     L7E910917
          push    esi
          push    00000002h
          push    00000003h
          push    esi
          push    00000003h
          push    C0000000h
          push    [ebp+08h]
          call    [KERNEL32.dll!CreateFileW]
          cmp    eax,FFFFFFFFh
          jz     L7E910909
          push    eax
          call    [KERNEL32.dll!CloseHandle]
          jmp    L7E910914
 L7E910909:
          call    [KERNEL32.dll!GetLastError]
          cmp    eax,00000005h
          jz     L7E910917
 L7E910914:
          xor    esi,esi
          inc    esi
 L7E910917:
          lea    ecx,[ebp-08h]
          call    SUB_L7E909385
          mov    eax,esi
          pop    esi
          leave
          retn    0004h
 SUB_L7E91089D:
       &nbs
p;  push    ebp
          mov    ebp,esp
          xor    eax,eax
          cmp    [ebp+08h],eax
          push    esi
          mov    esi,ecx
          jz     L7E9108BD
          call    SUB_L7E909385
          push    esi
          push    [ebp+08h]
          call    SUB_L792C7B87 ;//
SUB_L7E8C6821
          mov    [esi+04h],eax
 L7E9108BD:
          pop    esi
          pop    ebp
          retn    0004h
 SUB_L7E909385:
          push    esi
          mov    esi,ecx
          cmp    dword ptr [esi+04h],00000000h
          jz     L7E90939D
          push    esi
          call     SUB_L792C7BEF;// SUB_L7E8C7DAF
          and    dword ptr [esi],00000000h
          and    dword ptr [esi+04h],00000000h
 L7E90939D:
          pop    esi
          retn

Win2000 修正

          lea    eax,[ebp-28h]
          push    eax
          push    ebx
          push    [ebp+14h]
          call    [KERNEL32.dll!GetFileAttributesExW]

          push    [ebp+14h]
          mov    esi,80000003h
          push    edi
          push    esi
          mov    [ebp+10h],eax
          call    SUB_L7E8D636D

5.1.2600.5512

          lea    eax,[ebp-2Ch]
          push    eax
          push    ebx
          push    [ebp+14h]
          call    [KERNEL32.dll!GetFileAttributesExW]
L7E8E929E:
          cmp    eax,ebx
          mov    [ebp+0Ch],eax
          jz     L7E8D7F9E
          push    [ebp+14h]
          push    [ebp+1Ch]
          call    SUB_L7E91092B
          test    eax,eax
          jnz    L7E8D7F9E
          jmp    L7E8D8007
 SUB_L7E91092B:
          push    ebp
          mov    ebp,esp
          mov    eax,[ebp+08h]
          push    [ebp+0Ch]
          lea    ecx,[ebp+08h]
          mov    [ebp+08h],eax
          call    SUB_L7E9108C7
          pop    ebp
          retn    0008h
L7E8D7F9E:
          push    [ebp+14h]
          mov    esi,80000003h
          push    edi
          push    esi
          call    SUB_L7E8D5B15

5.1.2600.6689

           lea    eax,[ebp-28h]
          push    eax
          push    ebx
          push    [ebp+14h]
          call    [KERNEL32.dll!GetFileAttributesExW]
          push    [ebp+14h]
          mov    esi,80000003h
          mov    [ebp+0Ch],eax
          push    edi
          push    esi
          call    SUB_L792B9A86

Win2000

           lea    eax,[ebp-28h]
          push    eax
          push    ebx
          push    [ebp+14h]
          call    [KERNEL32.dll!GetFileAttributesExW]
L7E8E929E:
          cmp    eax,ebx
          mov    [ebp+0Ch],eax
          jz     L7E8D7F9E
          push    [ebp+14h]
          push    [ebp+1Ch]
          call    SUB_L7E91092B
          test    eax,eax
          jnz    L7E8D7F9E
          jmp     L792B3F85
 SUB_L7E91092B:
          push    ebp
          mov    ebp,esp
          mov    eax,[ebp+08h]
          push    [ebp+0Ch]
          lea    ecx,[ebp+08h]
          mov    [ebp+08h],eax
          call    SUB_L7E9108C7
          pop    ebp
          retn    0008h

L7E8D7F9E:
          push    [ebp+14h]
          mov    esi,80000003h
          mov    [ebp+0Ch],eax
          push    edi
          push    esi
          call    SUB_L792B9A86

Win2000 修正

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です