Блокировка запуска приложений

Данный был найден на форуме rsdn.ru(нашел не я. поэтому источнику информации огромное спасибо). Путь, как утверждает автор, совершенно легальный и работает еще с W2K. Был успешно реализован на Windows 7. Итак приступим.

1. создайте в разделе \\Registry\\MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\AppCertDlls ключ с именем AppSecDll типа REG_EXPAND_SZ, куда положите, что-то типа %SystemRoot%\system32\<ваша>.dll… На самом деле их там может быть много, имейте это ввиду.

2.В этой вашей dll’ке должна быть точка входа CreateProcessNotify …

NTSTATUS CreateProcessNotify ( LPCWSTR lpApplicationName, ULONG Reason );

Reason всегда будет —
либо APPCERT_IMAGE_OK_TO_RUN = 1
либо APPCERT_CREATION_ALLOWED = 2 или APPCERT_CREATION_DENIED = 3

При вызове с APPCERT_IMAGE_OK_TO_RUN, вас как бы спрашивают “этот имедж ОК или нет”. Если вас программа устаривает то верните STATUS_SUCCESS, не устаривает верните STATUS_UNSUCCESSFUL…
При вызове с APPCERT_CREATION_ALLOWED или APPCERT_CREATION_DENIED, вас уведомляют об результатах голосования…

То есть — если APPCERT_CREATION_ALLOWED то процесс с этим именем будет образован, ну и если APPCERT_CREATION_DENIED то соответсвенно нет.

Даже если вы вернули APPCERT_IMAGE_OK_TO_RUN, а другая после вас загруженая такая же dll на этот образ вернет APPCERT_CREATION_DENIED, то будет действовать последний резьюм. Ну и наоборот.

2 thoughts on “Блокировка запуска приложений

  1. fntdv says:

    Dobavutu mojna prosto byd’-iaky dll, v iakii eksportyet’s’a
    NTSTATUS CreateProcessNotify ( LPCWSTR lpApplicationName, ULONG Reason );

    vobwem poprobyiy i napuwy bil’we. poku we ne vstug 😦

Leave a comment