хм.. если я правильно понял то ответ мой будет таким : Можно : использую неджокументированные структуры и фукции позволяющие перейти из ring-3 в ring-0 На счет какие именно функции и как это сделать можно почитать в phrack-59 (статья Playing with Windows вроде)
я уточню, нужно сделать так чтоб другие процессы считали этот процесс системным, только и всего, т.е. в том же PETools/LordPE чтоб этот процесс отображался как системный.
TermoSINteZ IMHO Asterix вероятно имел в виду то, как процессу выполняемому с правами пользователя получить права даже не админа, а сразу - системы. З.Ы.: Asterix успел ответить раньше.
Asterix %) Я первый раз о таком слышу. Может быть PETools/LordPE имеют собственный список системных процессов? Ты сам видел чтобы эти утилитки показывали какой-нибудь "левый" процесс как системный?
Мне тут подсказывают что ExeShield так делает. Поправлено: По последним данным это не так, Sorry за дезинформацию %)
обзови свой процес svchost.exe их и так несколько штук в таскменеджере болтается, так что твой никто не заметит. и убить его не выйдет
Asterix Чтоб никто не убил процесс или хотя бы думали что этот процесс трогать не стоит сделай его службой - оно выполняется в LocalSystem. хотя убить службу все равно можно, я этот вопрос недавно тут поднимал, по крайней мере, мне никто толком не ответил...
Ну, раз пошла такая пьянка, то и я внесу свои 5 копеек Както раз я наткнулся на форуме журнала Хакер на топик "Неубиваемые проги". Помимо прочего в нем мое внимание привлекли посты некого DeepThinker. Вот что я из них узнал: Вообще есть один недокументированный способ сделать прогу неубиваемой на NT. Надо IRQL поставить на 1 и не снимать. Вот краткое описание, как это делается: Значит, загружаешь библиотеку hal.dll, как если бы она была пользовательской. Находишь в ней адрес ф-ии KfRaiseIrql и смещение его отн. базы. Через EnumModules находишь базовый адрес настоящей hal.dll, загруженной в пространство ядра и прибавляешь к нему смещение. Теперь ты знаешь адрес этой ф-ии в памяти. Ее объявление выглядит так: _fastcall ULONG KfRaiseIrql(ULONG Irql); Затем любым способом переходишь в режим ядра. Поищи в сети, как это сделать - по словам ZwSystemDebugControl или Device\PhysicalMemory или callgate.sys. И из режима ядра вызываешь эту ф-ию KfRaiseIrql(1); Затем возвращаешься в режим пользователя. Все. Программу не убить. Не помню уже, на каких Виндах я это проверял, но на ХР работает вроде, на 2003 вроде тоже. Бывали правда случаи, когда удавалось сделать из нее зомби - убить, но в списке процессов она висит. Вроде если с консольной прогой так сделать и закрыть консоль, то так и будет. А убить неконсольную можно только из режима ядра (модифицировав ее код так, чтобы она сама себя завершила), болше никак. Комп перезагрузить тоже нельзя, пока эта хрень работает. Отладчик не может к такой проге подключиться и после закрытия сам превратится в зомби. Вот, пожалуй, и все.
пардон за не в тему, но все же: Если подрубаешь на usb устройество переботинка не требуется, есно дело к устройству может потребуется драйвер. А драйвер как я понял это код находящийся в старших адресах адр. пространства процесса, но его туда не просто закинуть надо зарегистрировать в системе. Но у меня есть дрова, которые не требовали перезагрузки, т.е. как - то сами регистрируются. Интересно, как это происходит?
EvilsInterrupt Ответ на этот вопрос, и на многие другие по этой теме ты найдешь в статьях Four-F по драйверам режима ядра.
Oleg_SK Только нужно помнить, что этим запрещается доставка обычных APC процессу и из-за этого могут возникнуть глюки. Например подсистема POSIX использует APC для реализации сигналов.