Visual Studio 2013 に互換モードに関する欠陥判明!
Visual Studio 2013 でコンパイルされたアプリケーション。
Media Player Classic 1.7.6.0 や Lunascape 6.9.2 などを Windows 2000互換モードにして起動するとクラッシュするのですが、その原因が Visual Studio 2013 のライブラリの致命的な欠陥にあることが判明しました。
lea eax,[ebp-00000120h] mov dword ptr [ebp-00000120h],00000114h push eax call [KERNEL32.dll!GetVersionExW] test eax,eax jz L100524B1 mov eax,[ebp-0000011Ch] push 00000006h pop esi sub eax,00000005h jz L10052473 ; Windows NT 5.xの場合 dec eax jnz L10026C52 mov eax,[ebp-00000118h] sub eax,00000000h jz L10052464 dec eax jz L10052455 : L10052473: |
これが、 MSVCR120.DLL の中身です。
なぜかバージョン情報を見て Windows NT5.0と判定されたら即時クラッシュさせる処理が走る
同じことが、 Media Player Classic / iTunes 12 / Lunascape 6.9.2
ためしに msvcr120.dll の jz L100524AA(742C) を jz L1005249D(741F) に書き換えたら問題なくなったよ・ω・;
これはまた露骨な…
これは明らかにMSが旧OS切り?
自分はxpと2kしかないから問題ですね