MS11-025 を入れると 98/Me/NT/2000でソフトが動かなくなる件 その1

MS11-025のセキュリティアップデートで配布されている VC++2005 Runtime 及び、VC++2008 Runtime をインストールすると
Windows 2000以前のOSでは動作しなくなることが確認されました

注:6/15のアップデートで解消
こっそりWindows 2000向けに MS11-025が更新されたよ


調べてみると mfc80u.dll および mfc80.dll に SxS関連の関数として FindActCtxSectionStringAがコールされていることが分かりました。

 L786FF257:
          lea    edx,[ebp-00000170h]
          push    edx
          call    [SHLWAPI.dll!PathFindFileNameA]
          mov    [ebp-04h],eax
          lea    eax,[ebp-50h]
          push    eax
          mov    ecx,[ebp-04h]
          push    ecx
          push    00000002h
          push    00000000h
          push    00000001h
          call    [KERNEL32.dll!FindActCtxSectionStringA]
          test    eax,eax
          jz     L786FF292
          push    00000000h
          push    00000000h
          mov    edx,[ebp-04h]
          push    edx
          call    [KERNEL32.dll!LoadLibraryExA]
          mov    [ebp-0Ch],eax
          jmp    L786FF2A6
 L786FF292:
          push    00000000h
          push    00000000h
          lea    eax,[ebp-00000170h]
          push    eax
          call    [KERNEL32.dll!LoadLibraryExA]
          mov    [ebp-0Ch],eax
 L786FF2A6:
          mov    eax,[ebp-0Ch]

赤字の部分が以前のOSには不要なコード。

Microsoft Windows Legacy Update で公開しましたのでご利用ください。

おすすめ

コメントを残す

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