Как - удалить мою программу из списка процессов ..? - PullRequest
1 голос
/ 28 апреля 2011

Ну, вопрос может звучать запутанно и, как и многие другие вещи; но позвольте мне объяснить это далее ..

Я создаю программу личной безопасности, которая может безопасно хранить пароли и другие числовые данные. Я использую что-то вроде "прямо перед твоим лицом" подход с этим ..

Я хочу сделать это там, где только я могу закончить программу, я все еще прорабатываю эту часть; Я не хочу, чтобы кто-то мог просто войти в мой компьютер и закончить процесс ..

Итак, главный вопрос : Как я могу либо скрыть свою программу, чтобы вы не могли завершить процесс без этого через программу? Или просто сделайте это там, где вы не сможете завершить процесс, не скрывая его ..

Полагаю, еще один вопрос: это вообще достижимо? Или я просто думаю как сумасшедший? Что я очень хорошо мог быть ..

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

Вы можете предотвратить завершение вашего процесса, используя недокументированный API из NTDLL.DLL:

typedef VOID ( _stdcall *_RtlSetProcessIsCritical ) (BOOLEAN NewValue,PBOOLEAN OldValue,BOOLEAN IsWinlogon );

void MakeProcessCritical() {
    HMODULE hNtDLL;
    _RtlSetProcessIsCritical RtlSetProcessIsCritical;

    hNtDLL = GetModuleHandle("ntdll.dll")
    RtlSetProcessIsCritical = (_RtlSetProcessIsCritical)GetProcAddress(hNtDLL, "RtlSetProcessIsCritical");

    if(RtlSetProcessIsCritical != NULL)
         RtlSetProcessIsCritical(1, 0, 0);
}

Попытка завершить ваш процесс приведет к сообщению об отказе в доступе.Если каким-то образом ваш процесс будет вынужден завершиться или завершится самостоятельно, система остановится и появится синий экран смерти.Убедитесь, что вы вызываете RtlSetProcessIsCritical (0, 0, 0), прежде чем закрыть свой процесс, если вы используете это.

ПРИМЕЧАНИЕ. Я настоятельно не рекомендую этот метод для любого программного обеспечения, которое будет продаваться.

3 голосов
/ 28 апреля 2011

@ sehe: Тогда скажите мне использовать ACL с самого начала ... Я понятия не имею, что это такое, но если это лучший способ, то, пожалуйста, прокомментируйте это; вместо того, чтобы называть меня кем-то, кто пишет вирусы. - Джеймс Литевский

@ Джеймс: Если бы я собирался, я бы отправил ответы, а не комментарии. Ну, так как вы просили об этом, вот мои $ 0,02:

http://www.windowsecurity.com/articles/controlling-windows-services-service-accounts.html

Второй - это список контроля доступа к сервису (ACL). ACL не виден из интерфейса и виден только при запуске сценария или использовании инструмента, такого как инструмент SVCACLS.EXE из Windows Resource Kit. Изменяя ACL службы, вы можете контролировать, кто может запускать, останавливать и управлять службой.

http://www.vistaheads.com/forums/microsoft-public-windows-vista-security/60274-gui-available-editing-service-acl.html

Кстати, это были топ-2 хита для windows service protect ACL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...