Вот мы и подошли к самому интересному... Переход в ноль под 2000ми виндами.

Итак, на данный момент известно 2 способа перехода:

  1. Путём создания собственного драйвера (*.sys)
  2. Используя устройство "физическая память" (\device\physicalmemory)

Оба этих метода работают, увы, только под правами Админа. Но это не такая уж большая проблема, т.к. практически все пользователи, у которых стоят 2000 сидят под админами (и считают себя таковыми:)

Мы не будем парить вас сложными объяснениями что да как, просто немного расскажем об алгоритме работы второго метода:

  1. Получаем доступ к физической памяти (именно физической!)
  2. Узнаём адрес таблицы дескрипторов
  3. Мапим её в наше адресное пространство
  4. Находим свободный дескриптор, и заполняем его. Ставим наивысшие привилегии (DPL=3).
  5. А потом делаем вызов нашей процедуры через созданный колгейт...

К статье прилагаются примеры на ASMе и на C. Их действие такое - переходим в ноль и блокируем тачку пока не нажата клавиша Esc.
Эти примеры нельзя просто инклудить и использовать в своих вирусах, а необходимо немного переделать под свои нужды.

P.S. Самый большой недостаток данных методов в том, что перед тем как попасть в ноль нам необходимо сделать кучу вызовов АПИ функций... А это плохо.

P.P.S. А ещё более ужасно то, что попав в ноль мы не знаем что делать :) Чтобы это понять надо ооочень сильно перекапать ДДК под 2к. Всё, может быть, в переди...

18.08.02