Windows2000 の user32.dll に未修正のバグ

ga

KernelEx for Win2000 - Page 19 - Windows NT4 / 2000 / 2003 - MSFN Forum
拡張カーネルでゲーム動かそうとしたら user32.dllで落ちるよって外人さんからレポートがあったので調べてみました

 L77DEB87D:
          mov    esi,[esi+38h]
          test    esi,esi
          jz     L77DEB899
          push    [ebp+18h]
          push    [ebp+14h]
          push    [ebp+10h]
          push    ebx
          push    esi
 L77DEB88F:
          call    SUB_L77DE6063
          jmp    L77DEB92B

 L77DEB70F:
          push    [ebp+18h]
          push    [ebp+14h]
          push    [ebp+10h]
          push    ebx
          push    [esi+3Ch]
          jmp    L77DEB88F

 L77DEB899:
          push    0000058Eh
 L77DEB89E:
          call    SUB_L77DFD630

どうもWindows 2000の場合 esi+0x3cの代入値が0であることをチェックしていないらしい

 L77E35D00:
          cmp    dword ptr [esp+00h],00000000h
          jz     L77E35D11
          call    SUB_L77DE6063
          jmp    L77DEB92B
 L77E35D11:
          add    esp,00000014h
          jmp    L77DEB899

というわけで、チェックルーチンを加えてみた

gago
動くようになった

GameRanger - play your friends online

Windows 2000 Kernel32 改造計画【BM】
日本語版v23g2
English 版 v23f3
が修正分。ゲーム対応版は少しお待ちください

おすすめ

コメントを残す

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