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 |
Comments