Выживание в системах с жестоким квотированием

информация по конкретному


Ага, говорим мы голосом Тигры, неожиданно обнаружившего у себя под хвостом непочатую банку пива. Вот

оно! Ass of the Dragon! Имя процесса, путь к исполняемому файлу, PID материнского процесса, время запуска и прочая информация перед глазами. Полный путь — это нехорошо. Любой пользователь (антивирус) может считать файл с диска и посмотреть, что это за зараза такая! Как бы его преодолеть? В смысле изменить истинный путь на что-нибудь другое? Увы! Легальными средствами с прикладного уровня до этой информации не дотянуться (как минимум, потребуется заполучить права администратора). В довершение ко всему, NT блокирует исполняемый файл вплоть до его завершения — команда DeleteFile возвращает error и идея создать временный файл, автоматически удаляющий себя после запуска, летит к черту.

И вот на сцене появляется мыщъх. Весь в сером. Стеснительно покусывая кончик хвоста, он говорит: NT блокирует только удаление и запись в файл, но допускает rename. Причем, может быть переименован не только сам файл, но и путь к нему, пускай и ценой побочных эффектов разной степени тяжести. Что это за эффекты такие? Давайте посмотрим! Создаем каталог "D:\1\2\3\", кладем в него notepad.exe (или любую другую программу по вкусу) и запускаем ее. Теперь, переименовываем "1" в... ну, например, в "a". Угадайте, что мы получим?

Наперекор всяким переименованиям каталог "D:\1\2\3\" как был, так и остался, но теперь он... пустой! Совсем пустой! Зато образовался каталог "D:\A\2\3\" с notepad'ом внутри. Здорово! Переименуем notepad.exe в xxx.exe. Как видим, он совсем не сопротивляется и успешно переименовывается. Аналогичным путем могут быть переименованы каталоги "2" и "3". Единственное, что мы не можем делать — это менять диск, но нам этого и не нужно! Главное, что запущенный из "D:\1\2\3\notepad.exe" файл переместился в "D:\a\2\3\xxx.exe", то есть поменял не только имя, но и место жительства. А что на счет списка процессов? Так вот, знайте, что NT создает его лишь однажды — в момент запуска процесса и никогда не обновляет.

То есть, в нашем случае, FAR (равно как и любая другая программа) "честно" показывает исходный путь, которого нет (уже).

Module:                NOTEPAD.EXE

Full path:             D:\1\2\3\NOTEPAD.EXE

PID:                   664

Parent PID:            716  (Far.exe)

Priority:              8

Threads:               1



Содержание раздела