XP版 NETAPI32.DLL と SMBLIB.DLL

XP版をベースに作った netapi32.dll ですが以下の処理で不具合があることが分かりました
 SUB_L7CF5A837:
          mov    edi,edi
          push    ebp
          mov    ebp,esp
          push    edi
          lea    eax,[ebp+0Ch]
          push    eax
          push    [ebp+0Ch]
          xor    edi,edi
          push    [ebp+08h]
          call    jmp_SAMLIB_dll_DelayImport_SamRidToSid

 L7CF69620:
          push    eax
          call    NetpNtStatusToApiStatus
          mov    ebx,eax
          jmp    L7CF65ACC
 L7CF6962D:
          dec    eax
          jnz    L7CF6992A
          mov    dword ptr [ebp-08h],00000074h
          mov    esi,0002011Bh
          mov    edi,00FEFFFFh
 L7CF69645:
          lea    eax,[ebp-24h]
          push    eax
          push    [ebp+08h]
          call    jmp_SAMLIB_dll_DelayImport_SamGetCompatibilityMode

上記の DelayImport ですが、遅延ロードと言いつつ、そのままロードした値をチェックすらせずにコールするので、Cygwin アプリなどが 落ちます。

試しに、 smblib.dll をXP版のものに差し替えたところ問題はなくなりました
XP版には以下の 5つの関数が存在します
SamChangePasswordUser3
SamGetCompatibilityMode
SamiChangeKeys
SamiSetDSRMPasswordOWF
SamRidToSid

おすすめ

コメントを残す

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