Intento implementar filtro de contraseña, así que escribo un filtro de contraseña simple. Seguí el documento en MSDN y me aseguro de que las funciones se declararon correctamente. puedo compilar el VS 2010.No se puede implementar el filtro de contraseña
archivo .def:
LIBRARY myFilt
EXPORTS
InitializeChangeNotify
PasswordFilter
PasswordChangeNotify
archivo .cpp:
#include <windows.h>
#include <stdio.h>
#include <ntsecapi.h>
void writeToLog(const char* szString)
{
FILE* pFile = fopen("c:\\work\\logFile.txt", "a+");
if (NULL == pFile)
{
return;
}
fprintf(pFile, "%s\r\n", szString);
fclose(pFile);
return;
}
// Default DllMain implementation
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
OutputDebugString(L"DllMain");
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
BOOLEAN __stdcall InitializeChangeNotify(void)
{
OutputDebugString(L"InitializeChangeNotify");
writeToLog("InitializeChangeNotify()");
return TRUE;
}
BOOLEAN __stdcall PasswordFilter(
PUNICODE_STRING AccountName,
PUNICODE_STRING FullName,
PUNICODE_STRING Password,
BOOLEAN SetOperation
)
{
OutputDebugString(L"PasswordFilter");
return TRUE;
}
NTSTATUS __stdcall PasswordChangeNotify(
PUNICODE_STRING UserName,
ULONG RelativeId,
PUNICODE_STRING NewPassword
)
{
OutputDebugString(L"PasswordChangeNotify");
writeToLog("PasswordChangeNotify()");
return 0;
}
puse myFilt.dll en %windir%\system32
, añadir "myFilt "a" Paquetes de notificación "en el registro, reinicie la computadora, cambie la contraseña y no pase nada.
me abrió depends.exe y vio que las funciones sean correctamente:
InitializeChangeNotify
PasswordChangeNotify
PasswordFilter
¿Dónde está el error ??
Gracias.
¿Realmente añadir 'myFile' a la clave de registro, no' myFilt'? Porque ese es el nombre de su DLL ... Además, ¿no olvidó llamar a 'writeToLog' en' PasswordFilter'? –
Puede probar Process Monitor para ver si Windows intenta cargar su filtro y qué ocurre después. – sharptooth
Sí. Agregué myFilt, no myFile XD .. Ejecuto el monitor del proceso y veo que el archivo scecli.dll está abierto ... (este dll está escrito en Paquetes de notificación (el primero)) – 1337