拡張カーネルで irsetup.exe が落ちる理由
Nvidia Omega Drivers 2.169.21 が拡張カーネルでこけるというコメントをいただいたので調べてみました。
インストール時に一時フォルダを作成して、
irsetup.exe が生成され、そこでクラッシュしています。
デバッガで確認してみると user32の直後で ダイアログハンドル取得時に0が返ってきて落っこちてることがわかりました。
SUB_L77E355A0: mov eax,[ebp+0Ch] and eax,eax jz L77E355C4 cmp dword ptr [eax],FFFF0001h jnz L77E355B2 add eax,0000000Ch L77E355B2: push eax push 00000004h push eax call [L77E3630C] and eax,eax pop eax jnz L77E355C4 or byte ptr [eax],10h L77E355C4: pop eax push [ebp+0Ch] push [ebp+08h] jmp eax |
拡張カーネルでは、強制的に ダイアログ生成時に無効なオブジェクトがあっても強制的にWindow を作ってるのですが、そこで問題が出たようです。
10hで or してるところを 00hにしたら正常に動作するようになりました。
バイナリエディタでいうと 0x54bc3 の 0x10を 0x00に変更するということになります。
まぁ、展開後のバイナリにオリジナルの user32.dllをコピーしても動作するのですが|。・ω・)
こういうこともあるんですね
次のバージョンは無効化も検討してみます。
Comments