Неубиваемые проги
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Неубиваемые проги - 2004-09-19 10:15:01
|
|
|
macTep
Сообщений: 14
Оценки: 0
Присоединился: 2004-08-03 11:38:49
|
Вот заметил, что 5-й касперский не убивается диспетчером, фаром и другими прогами …. объясните как осуществить такое на паскале ( Делфи 6 ) Или на C++ (Борланд C 6)
|
|
|
Неубиваемые проги - 2004-09-19 14:13:57
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Что, совсем ничем??? Process Explorer пробовал? Вообще есть один недокументированный способ сделать прогу неубиваемой на NT, я думаю о нем статью написать в ближайшем будущем. Надо IRQL поставить на 1 и не снимать. Но мне кажется, что касперского Process Explorer убъет.
|
|
|
Неубиваемые проги - 2004-09-19 15:30:21
|
|
|
macTep
Сообщений: 14
Оценки: 0
Присоединился: 2004-08-03 11:38:49
|
Подождём статью … Скажи пока что такое IRQL. Не опытный ещё :)
|
|
|
Неубиваемые проги - 2004-09-19 23:10:23
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Interrupt ReQuest Level. Вот в статье и увидишь :)
|
|
|
Неубиваемые проги - 2004-09-20 07:10:08
|
|
|
macTep
Сообщений: 14
Оценки: 0
Присоединился: 2004-08-03 11:38:49
|
Когда ждать статью то ?
|
|
|
Неубиваемые проги - 2004-09-20 21:48:36
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
На этой неделе будет. Дел по горло. [sm=7.gif]
|
|
|
Неубиваемые проги - 2004-09-24 17:04:19
|
|
|
macTep
Сообщений: 14
Оценки: 0
Присоединился: 2004-08-03 11:38:49
|
А насчёт того как осуществить убивание такой проги тоже напишишь?
|
|
|
Неубиваемые проги - 2004-09-24 19:30:46
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Не знаю, как Касперского, мою только из ядра убить можно, точнее просто модифицировать ее код так, чтобы она сама себя завершила.
|
|
|
Неубиваемые проги - 2004-10-05 09:43:02
|
|
|
macTep
Сообщений: 14
Оценки: 0
Присоединился: 2004-08-03 11:38:49
|
Что-то статьи . на сайте не видно … готова? Или сразу в журнале смотреть ?
|
|
|
Неубиваемые проги - 2004-10-06 22:03:29
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Блин, извини, времени совсем не хватает пока статью писать. Давай я тебе в двух словах расскажу. Значит, загружаешь библиотеку hal.dll, как если бы она была пользовательской. Находишь в ней адрес ф-ии KfRaiseIrql и смещение его отн. базы. Через EnumModules находишь базовый адрес настоящей hal.dll, загруженной в пространство ядра и прибавляешь к нему смещение. Теперь ты знаешь адрес этой ф-ии в памяти. Ее объявление выгядит так: _fastcall ULONG KfRaiseIrql(ULONG Irql); Затем любым способом переходишь в режим ядра. Поищи в сети, как это сделать - по словам ZwSystemDebugControl или Device\PhysicalMemory или callgate.sys. И из режима ядра вызываешь эту ф-ию KfRaiseIrql(1); Затем возвращаешься в режим пользователя. Все. Программу не убить. Не помню уже, на каких Виндах я это проверял, но на ХР работает вроде, на 2003 вроде тоже. Бывали правда случаи, когда удавалось сделать из нее зомби - убить, но в списке процессов она висит. Вроде если с консольной прогой так сделать и закрыть консоль, то так и будет. А убить неконсольную можно только из режима ядра, болше никак. Комп перезагрузить тоже нельзя, пока эта хрень работает. Отладчик не может к такой проге подключиться и после закрытия сам превратится в зомби. Вот, пожалуй, и все.
|
|
|
Неубиваемые проги - 2004-10-16 22:41:32
|
|
|
***mR.PrOpEr***
Сообщений: 135
Оценки: 0
Присоединился: 2004-10-08 00:33:23
|
а ты чё из редакции ХАКЕРа???
|
|
|
Неубиваемые проги - 2004-10-16 23:10:50
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
нет
|
|
|
Неубиваемые проги - 2004-11-04 02:48:15
|
|
|
Laex
Сообщений: 44
Оценки: 0
Присоединился: 2004-11-04 01:38:29
|
quote:
—————-<BR>Цитата: Дата:06.10.2004 22:03:29, Автор:DeepThinker :: Блин, извини, времени совсем не хватает пока статью писать. Давай я тебе в двух словах расскажу. Значит, загружаешь библиотеку hal.dll, как если бы она была пользовательской. Находишь в ней адрес ф-ии KfRaiseIrql и смещение его отн. базы. Через EnumModules находишь базовый адрес настоящей hal.dll, загруженной в пространство ядра и прибавляешь к нему смещение. Теперь ты знаешь адрес этой ф-ии в памяти. Ее объявление выгядит так: _fastcall ULONG KfRaiseIrql(ULONG Irql); Затем любым способом переходишь в режим ядра. Поищи в сети, как это сделать - по словам ZwSystemDebugControl или DevicePhysicalMemory или callgate.sys. И из режима ядра вызываешь эту ф-ию KfRaiseIrql(1); Затем возвращаешься в режим пользователя. Все. Программу не убить. Не помню уже, на каких Виндах я это проверял, но на ХР работает вроде, на 2003 вроде тоже. Бывали правда случаи, когда удавалось сделать из нее зомби - убить, но в списке процессов она висит. Вроде если с консольной прогой так сделать и закрыть консоль, то так и будет. А убить неконсольную можно только из режима ядра, болше никак. Комп перезагрузить тоже нельзя, пока эта хрень работает. Отладчик не может к такой проге подключиться и после закрытия сам превратится в зомби. Вот, пожалуй, и все. —————-
Блин! А не понял как и почему это работает??! Как связан конкретный процесс и KfRaiseIrql?
|
|
|
Неубиваемые проги - 2004-11-05 14:29:16
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Если ты не спец по ядру NT, то это ооооочень дооооолго объяснять.
|
|
|
Неубиваемые проги - 2004-11-05 20:00:04
|
|
|
Laex
Сообщений: 44
Оценки: 0
Присоединился: 2004-11-04 01:38:29
|
Я несколько в этом разбираюсь, но первое чего я непонимаю это почему вызов этой функции делает неубиваемой именно нужный процесс(или неубиваемыми становяться все процессы)
|
|
|
Неубиваемые проги - 2004-11-07 22:51:57
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Прикол в том, что полностью этого не понимаю и я. :) Но насколько я смог докопаться, это некоторый глюк в диспетчере потоков. Когда IRQL текуего потока ставится в 1, сам он уже в 0 не сбросится никогда (это понятно), но вот на ДРУГИЕ потоки (даже не процессы, наверное, а именно потоки) это не повлияет, для них IRQL будет 0. Хоть IRQL - это общепроцессорная характеристика в данный момент, диспетчер очевидно, прерывая поток с IRQL 1 (у диспетчера он - 2), передает управление на другой поток, сохраняя старый IRQL в ETHREAD. (хотя этого, ты прав, быть НЕ должно). Моложды в M$, постарались. :)
|
|
|
Неубиваемые проги - 2004-11-11 00:58:28
|
|
|
GorluM
Сообщений: 312
Оценки: 0
Присоединился: 2004-04-07 23:41:00
|
DeepThinker: интересно, попробую реализовать на днях… и разобраться как работает, а то пока все мутновато… не факт что дисп вообще может irql 1 убивать
а о cpl 3->0 можно будет прочесть в одном из ближайших номеров Ха… коротко о калгейтах, коротко о физ.памяти… немного слов о дровах… простенький материальчик
|
|
|
Неубиваемые проги - 2004-11-11 19:28:45
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Ну, если мы объясним (или примеем за дожное :)) то факт, что после установки IRQL будет оставаться на 1 именно в данном потоке (судя по всему, получается так), то все остальное пояняется просто - наверное, TerminateThread просто напрявляет APC в очередь того потока, который надо убить, и в этом APC поток и завершается, а если IRQL = 1, то и не доходит до APC очередь.
|
|
|
|
|