Avast!2014はわざとWin2000でクラッシュさせてることが判明

rd

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:
          mov    eax,[ebp-00000110h]
          sub    eax,00000000h
          jz     L1032E604 バージョンが NT 5.0の場合

         :

 L1032E604:
          and    dword ptr [L10462438],00000000h
          jmp    L1032E60D
 L1032E60D:
          lea    ecx,[ebp-00000124h]
          call    SUB_L1032AE2C
          push    L104182F4
          lea    eax,[ebp-00000124h]
          push    eax
          call    SUB_L102DC8A0           <-  わざと例外を起こす。
         int3
 SUB_L1032E62A:
          push    ebp

なんと、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の関数を中途半端に実装してるので、エラーになってるのかもしれない ・ω・

でも、ファイル操作に深くかかわるソフトが非対応になった場合は、素直にあきらめた方がいいと思うんだな

おすすめ

コメントを残す

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