Avast!2014はわざとWin2000でクラッシュさせてることが判明
Avast! 2014 のインストーラーを実行すると、アプリケーションがクラッシュするのですが、さらに起動された avBigReort.exe までクラッシュしてしまうという有様。
いったいどうなってるのか調べてみた。
デバッガーで調べてみると、The 0xE06D7363 (Microsoft C++ Exception) が発生してクラッシュしている
SUB_L1032E542: push ebp mov ebp,esp sub esp,00000124h mov eax,[L1044A380] xor eax,ebp mov [ebp-04h],eax lea eax,[ebp-00000118h] push eax mov dword ptr [ebp-00000118h],00000114h call [KERNEL32.dll!GetVersionExW] test eax,eax jz L1032E60D mov eax,[ebp-00000114h] push esi push 00000006h pop esi sub eax,00000005h jz L1032E5BF バージョンが NT 5.xの場合 : L1032E5BF: : L1032E604: |
なんと、GetVersionExW で NT 5.0だった場合例外をわざと起こしてクラッシュしている。
lea eax,[ebp-34h] push eax call [KERNEL32.dll!GetNumaHighestNodeNumber] test eax,eax jnz L10330886 call [KERNEL32.dll!GetLastError] test eax,eax jle L1033086F movzx eax,ax or eax,80070000h L1033086F: push eax lea ecx,[ebp-60h] call SUB_L1032ADF3 <- わざと例外を起こす。 push L10418134 lea eax,[ebp-60h] L10330880: push eax call SUB_L102DC8A0 |
Windows 2000で GetNumaHighestNodeNumber をコールすると、0x57 パラメーターが違います。が返ってくるので、ここでクラッシュ
更にここを超えると、 DcodeSystemPointer やらをよんでるんですが、ここでメモリーエラーを起こしてクラッシュ
ひょっとするとVistaの関数を中途半端に実装してるので、エラーになってるのかもしれない ・ω・
でも、ファイル操作に深くかかわるソフトが非対応になった場合は、素直にあきらめた方がいいと思うんだな
Comments