Под XP и w2k3 проблем нет, т.к. есть PsRemoveLoadImageNotifyRoutine, а как быть в w2k? Ничего в голову не пришло, кроме мысли руками удалить свой notify из массивчика, адресс которого получаю дизасмом этой самой PsSetLoadImageNotifyRoutine. Может есть другие варианты покрасивее?
Написать свою или взять из ReactOS: Код (Text): NTSTATUS STDCALL PsRemoveLoadImageNotifyRoutine(IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine) { ULONG i; /* Loop the routines */ for(i=0;i<MAX_LOAD_IMAGE_NOTIFY_ROUTINE_COUNT;i++) { /* Check for a match */ if ((PVOID)PspLoadImageNotifyRoutine[i] == (PVOID)NotifyRoutine) { /* Remove and return */ PspLoadImageNotifyRoutine[i] = NULL; return(STATUS_SUCCESS); } } /* Nothing found */ return STATUS_INVALID_PARAMETER; } P.S. Реально код может быть инным (а значит и PsSetLoadImageNotifyRoutine будет добавлять иначе, чтобы избежать конфликтов лучше сделать свою PsSetLoadImageNotifyRoutine: Код (Text): NTSTATUS STDCALL PsSetLoadImageNotifyRoutine(IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine) { ULONG i; /* Loop the routines */ for (i = 0; i < MAX_LOAD_IMAGE_NOTIFY_ROUTINE_COUNT; i++) { /* Find an empty one */ if (PspLoadImageNotifyRoutine[i] == NULL) { /* Add it */ PspLoadImageNotifyRoutine[i] = NotifyRoutine; return STATUS_SUCCESS; } } /* Nothing found */ return STATUS_INVALID_PARAMETER; }