MS12-081の解析
変更点1
旧版 L7C813AF0 →新版L7C814790
関数参照テーブル数 0x42 → 0x45
db 43h; 'C' db 01h; db 00h; db 00h; dd L7C87FC85 db 44h; 'D' db 01h; db 00h; db 00h; dd FreeResource db 45h; 'E' db 01h; db 00h; db 00h; dd FreeResource |
が追加されている。
ただし、この参照は
dd SSZ7C84F4B4_shdocvw_dll dd L7C84FA00 dd L7C84F9F8 |
の様に、shdocvw.dllへの参照で、Windows 2000にはこの参照はなく影響を受けない。
(おそらく、IE6~IE8のバージョンの違いによって実装されていない関数を吸収するための処理)
変更点2
FindFirstFileExW 内の処理の修正
Windows 2000にも該当処理があり影響を受ける。
旧版/新版 コードは ともに0x7c80ed34 から
Windows 2000の該当コードは 0x77E65D63から
オリジナル
push [ebp-00000230h] lea eax,[ebp-0000020Eh] push eax lea eax,[esi+2Ch] push eax call [ntdll.dll!memmove] mov eax,[ebp-00000230h] |
変更後
mov edi,00000206h cmp [ebp-00000230h],edi mov [esi+20h],eax ja L7C83CADD mov edi,[ebp-00000230h] L7C83CADD: push edi lea eax,[ebp-0000020Eh] push eax lea eax,[esi+2Ch] push eax call [ntdll.dll!memmove] shr edi,1 and word ptr [esi+edi*2+2Ch],0000h add esp,0000000Ch cmp byte ptr [ebp-00000228h],1Ah ja L7C83CB15 movsx edi,[ebp-00000228h] x1b 1c cmp edi,00000018h x18 x19 jc L7C80EF3C L7C83CB15: push 00000018h pop edi L7C80EF3C: push edi lea eax,[ebp-00000226h] push eax lea eax,[esi+00000234h] push eax call [ntdll.dll!memmove] |
2か所バッファチェックが追加されています ・ω・
でも、コードがなんかおかしい。 0x1a より大きいかチェックした後 0x18より大きいかさらにチェック…謎だ
push [ebp-0000027Ch] mov edi,[ntdll.dll!memmove] lea eax,[ebp-0000025Ah] push eax lea eax,[esi+2Ch] push eax call edi mov eax,[ebp-0000027Ch] add esp,0000000Ch shr eax,1 mov [esi+eax*2+2Ch],bx movsx eax,[ebp-00000274h] push eax lea eax,[ebp-00000272h] push eax lea eax,[esi+00000234h] push eax call edi |
修正前
mov edi,[ntdll.dll!memmove] mov eax,[ebp-0000027Ch] cmp eax,00000206h jbe L77EA5C18 mov eax,00000206h L77EA5C18: push eax lea eax,[ebp-0000025Ah] push eax lea eax,[esi+2Ch] push eax call edi mov eax,[ebp-0000027Ch] add esp,0000000Ch shr eax,1 mov [esi+eax*2+2Ch],bx movsx eax,[ebp-00000274h] cmp eax,00000018h jbe L77EA5C44 mov al,18h L77EA5C44: push eax lea eax,[ebp-00000272h] push eax lea eax,[esi+00000234h] push eax call edi |
修正後
意外と簡単でした ・ω・
この修正は拡張カーネル v2.2mとv1.8eに組み込みました
Comments