Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | |
Sorry. Наверное, это косяк Диспетчера Задач Win2k, в XP его переделали и всё рулез. 07.07.03 15:16 Число просмотров: 1685
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
<operating systems>
|
[NT] Процессы-призраки из NTFS streams ;-( Баг напрочь или фича для вирусописателей! 07.07.03 09:44
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 07.07.03 09:51 Количество правок: 3
|
Итак, имеем процесс, запущенный из файлового потока NTFS. К примеру, C:\Temp\SomeFile:SomeStream.exe. Удаляем SomeFile по F8 в FAR'е или Shift+Del в проводнике... Файл удаляется и имеем рабочий процесс-призрак! В списке процессов он виден, но файла образа у него нет ;-)
Тестировал под WinXP, но я думаю, что этому подвержены все версии NT.
Вот пошаговая инструкция, как потестить это дело:
1) скопируйте FARом notepad.exe в папку C:\TEMP.
2) Отключите параметр "Использовать системную функцию копирования"
3) Наведите указатель на regedit.exe и нажмите F5.
4) В диалоговом окне копирования вбейте путь C:\TEMP\notepad.exe:regedit.exe
и нажмите Ввод.
5) В командной строке FARa в каталоге C:\TEMP наберите notepad.exe:regedit.exe и
нажмите Ввод.
6) Должен запустится Regedit. Сверните его. Наведите указатель FARа на notepad.exe (в котором поток regedit)... Нажмите F8, Enter и получите экстаз ;-)) У вас regedit стал "призраком"...
|
|
[NT] Ха — ещё один глюк в XP ;-) 16.07.03 20:54
Автор: HandleX <Александр М.> Статус: The Elderman
|
Кто тестировал глюки (в корневом посте) под XP, зайдите в каталог %SystemRoot%\Prefetch, будете удивлены.
Т.е. скорее всего будет неправильно работать механизм быстрой загрузки таких файлов.
|
|
еще один баг обнаруженный командой UINC 07.07.03 13:28
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
если файл записать в поток к корневому каталогу (type notepad.exe >c:\:notepad.exe)
а потом его запустить
start c:\:notepad.exe
то в списке процессов получаем еще один System idle process... неплохая маскировка ;-))
|
| |
NT40 SP6 - не пашет 07.07.03 14:56
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
> если файл записать в поток к корневому каталогу (type > notepad.exe >c:\:notepad.exe) > а потом его запустить > start c:\:notepad.exe вот тут появляется Messagebox о том что "e:\:note2.exe is not a valid Windows NT application"
> то в списке процессов получаем еще один System idle > process... неплохая маскировка ;-)) Нихера себе маскировка - если я увижу у себя второй SystemIdleProcess я пожалуй обращу на это вниммание :-)
|
| | |
NT40 Тебя немножко дезинформировали... 07.07.03 15:03
Автор: HandleX <Александр М.> Статус: The Elderman
|
> > если файл записать в поток к корневому каталогу (type > > notepad.exe >c:\:notepad.exe) Команда type безобразно покорёжит exe. Она же текстовая...
Попробуй FARом...
> вот тут появляется Messagebox о том что "e:\:note2.exe is > not a valid Windows NT application" Ну ты понял, почему not valid...
> > то в списке процессов получаем еще один System idle > > process... неплохая маскировка ;-)) > Нихера себе маскировка - если я увижу у себя второй > SystemIdleProcess я пожалуй обращу на это вниммание :-) Гы. Я бы тоже ;-)
|
| | | |
все работает 07.07.03 15:13
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
> > > если файл записать в поток к корневому каталогу > (type > > > notepad.exe >c:\:notepad.exe) > Команда type безобразно покорёжит exe. Она же текстовая... > Попробуй FARом... все работает без проблем
иначе не предлагал бы
система - w2k SP3
> > Нихера себе маскировка - если я увижу у себя второй > > SystemIdleProcess я пожалуй обращу на это вниммание > :-) > Гы. Я бы тоже ;-) к тем кто знает все процессы наизусть - это ясное дело не относится
однако таких не очень много
|
| | | | |
Sorry. Наверное, это косяк Диспетчера Задач Win2k, в XP его переделали и всё рулез. 07.07.03 15:16
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| | | |
NT40 Если бы :-( 07.07.03 15:04
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
> > > если файл записать в поток к корневому каталогу > (type > > > notepad.exe >c:\:notepad.exe) > Команда type безобразно покорёжит exe. Она же текстовая... это я уже заметил :-)
> Попробуй FARом... так я и пробовал, просто не стал уточнять - сорри
> > вот тут появляется Messagebox о том что "e:\:note2.exe > is > > not a valid Windows NT application" > Ну ты понял, почему not valid... Вопрос открыт
|
| | | | |
NT40 Попробую ответить всем... 07.07.03 17:50
Автор: HandleX <Александр М.> Статус: The Elderman
|
> > Попробуй FARом... > так я и пробовал, просто не стал уточнять - сорри > > > вот тут появляется Messagebox о том что > "e:\:note2.exe > > is > > > not a valid Windows NT application" > > Ну ты понял, почему not valid... > Вопрос открыт Закрываю вопрос.
Под NT4 Wks SP6 такие дела:
Start notepad.exe.exe:regedit.exe не работает по причине глюкавости команды Start ;-)
CreateProcess() работает, процессы создаются, "призраки" остаются ;-)
Диспетчер задач показывает вместо реального имени (или хотя бы regedit.exe) notepad.exe ;-) Вот где маскировка — пиши поток в internat.exe или в explorer.exe — не всякий догадается, ху из ху ;-)
В случае же с файлом 'C:\:notepad.exe' не работает ни CreateProcess, ни CreateProcessW с префиксом «\\?\» — ошибка 193.
Причём это не работает не только для потока из корневого каталога, но и для потока «C:\Temp:notepad.exe» тоже, т.е. для любого каталога.
Под Win2k ситуация похожая, исключая только то, что могут создаваться процессы из потоков, которые в каталогах. Причём Диспетчер Задач показывает вместо реального образа имя каталога (у меня для процесса из C:\Temp:notepad.exe показывал «Temp»).
Причём прикол — команда start не позволяет запускать процессы из потоков, которые в файлах, но позволяет из тех, которые в каталогах ;-)
Ну, и наконец, для случая с C:\:notepad.exe появляются два System Idle процесса, причём это так думает только Диспетчер Задач. Far'овский плагин просмотра процессов работает корректно (показывает «:notepad.exe»), правда не показывает его свойства.
Ну вот такие дела, если кого это обрадует ;-)
|
| | | | | |
NT40 И ещё один вопрос :-) 07.07.03 18:29
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
> В случае же с файлом 'C:\:notepad.exe' не работает ни > CreateProcess, ни CreateProcessW с префиксом «\\?\» — > ошибка 193. Это я и сам заметил. Есть какие-нибудь идеи по поводу тогопочемуименно такая ситуация? Я пока дошел только до NtCreateSection - сейчас дальше не могу копать - закачка отвалится :-) Если кто-то расскажет в чем там дело буду рад. Просто интересно.
|
| |
Хм... Под XP всё нормально. Может уже исправили? 07.07.03 13:52
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| | |
Мля. Ламерский вопрос, но все же 07.07.03 14:24
Автор: amirul <Serge> Статус: The Elderman
|
Как его теперь удалить. Не усечь до 0, а именно удалить стандартными средствами. В гугле советуют перенести файл на фат и обратно. Но не буду же я корень тащить на фат :-)
Цитата: "In addition, streams cannot be deleted - to delete a stream you must delete its parent."
|
| | | |
Фигня всё это. Вызови DeleteFile("C:\:notepad.exe") 07.07.03 14:30
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
|
О! Почти юниксовое поведение :)))) Всем пользовать файлпотоки в повседневной жизни! :) 07.07.03 11:11
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
|
| |
Мне вот другое интересно — как NT его будет пейджить? 07.07.03 12:20
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 07.07.03 12:55 Количество правок: 1
|
Чудится мне, если exe будет большой, а процесс будет долго работать, и NT будет ещё чем-то напрягаться, то упадёт в синий экран через время, когда надо будет восстановить страницу из образа ;-)
|
| | |
Хм а ты уверен что файл удалился? 07.07.03 14:38
Автор: Killer{R} <Dmitry> Статус: Elderman
|
Вернее что удалился не только файл но и его поток? И кстати попробуй запустить chkdsk после того - не выругается ли?
|
| | | |
[NT] По вере вашей да будет вам... 07.07.03 14:56
Автор: HandleX <Александр М.> Статус: The Elderman
|
Ну, после перезагрузки после проверки диска видим вот что:
--------------------------------------
Checking file system on C:
The type of the file system is NTFS.
A disk check has been scheduled.
Windows will now check the disk.
Cleaning up 1 unused index entries from index $SII of file 0x9.
Cleaning up 1 unused index entries from index $SDH of file 0x9.
Cleaning up 1 unused security descriptors.
--------------------------------------
Кстати, постоянно такая фигня в XP. Откуда берутся — сам большой Билл, наверное, не знает ;-)
В корне диска лишнего ничего не появляется, в каталоге, где велись эксперименты, тоже всё чисто. Выходит, удаляется он ;-)
|
| | | | |
[NT] По вере вашей да будет вам... 07.07.03 15:40
Автор: Killer{R} <Dmitry> Статус: Elderman
|
> В корне диска лишнего ничего не появляется, в каталоге, где > велись эксперименты, тоже всё чисто. Выходит, удаляется он > ;-) совсем не выходит. если открытый файл какойлибо файл переписать в другой каталог хэндл не теряется и программа прекрасно работает с этим файлом даже не зная что файл уже в другом месте. Так что если твой файл вообще пропал из списка файлов не значит что он стерт Ж). имхо надо почитать доки по нтфс.
|
| | | | | |
[NT] А может и выходит ;-) 07.07.03 16:07
Автор: HandleX <Александр М.> Статус: The Elderman
|
> совсем не выходит. если открытый файл какойлибо файл > переписать в другой каталог хэндл не теряется и программа > прекрасно работает с этим файлом даже не зная что файл уже > в другом месте. Так что если твой файл вообще пропал из > списка файлов не значит что он стерт Ж). имхо надо почитать > доки по нтфс. С хендлами не так всё просто. Они суть ссылки на объект ядра, а при вызове MoveFile() система выставляет правильный путь в полях самого объекта. И сделано это для обновления запущенного софта, имхо.
|
| | | | | | |
я тут эксперимент провел 07.07.03 16:20
Автор: Killer{R} <Dmitry> Статус: Elderman
|
взял прогу свою, довольно специфическую - написана на билдере и многие окна создаются только когда надо, а потом удаляются. прогу скорировал в поток как ты сказал запустил и сразу удалил. Удалилась нормально и полностью. У меня сп4 стоит. Далее стал открывать окошки - фиг вам - говорит Invalid strem но вообще пашет.Ок. Закрыл ее, записал опять. Запустил и на этот раз пооткрывал все что можно. Затем все закрыл и свернул (9Mb в RAM-> 1.5Mb). Удалил, развернул - и все равно пашет все нормально.
ЗЫ а баг действительно есть. Нo не фатальный Ж). Пиши в M$ если лицензия на винду есть Ж).
|
|
|