На главную страницу сайта


    На данной страничке будут размещаться материалы по использованию не стандартных, или просто интересных приемов, применяемых для решения не очень сложных, но тем не менее, интересных задач в среде Windows. Так например, использование того факта, что в файловой системе существуют специальные отметки времени для любого файла или каталога, позволяют довольно просто решить некоторые задачи, кажущиеся, на первый взгляд сложными.


Как определить время последнего запуска программы
Как определить дату установки Windows
Как найти и обезвредить вирус, без использования антивируса
Как быстро сделать жесткий диск не отформатированным



Как определить время последнего запуска программы.



    Как ни странно, вопрос, когда запускалась последний раз какая-нибудь программа, например firefox.exe ставит в тупик даже грамотных пользователей, работающих в среде Windows. Хотя ничего сложного здесь нет.

Для начала, нужно определиться с тем, что же такое - процесс запуска программы. В общем виде, - это поиск исполняемого файла в файловой системе, считывание его содержимого с дискового носителя в оперативную память и передача управления в точку старта. Другими словами, запуск программы всегда сопровождается операцией чтения файла.

Файловая система Windows ( обычно это NTFS - New Technology File System - "файловая система новой технологии") представляет собой своеобразный каталог, содержащий информацию о расположении файлов и их характеристиках и собственно данные файлов. В элементах каталога хранится информация о месте расположения файла, его размере, атрибутах (Скрытый, Системный, Только чтение:) и другие признаки, в частности - временные отметки:

- время создания (Created) - время создания файла.
- время изменения (Modified) - время изменения файла.
- время доступа (Accessed) - время доступа к файлу.

Время доступа к файлу автоматически изменяется при выполнении любых операций над файлом, и, естественно, при чтении exe-файла для запуска. Поэтому время последнего запуска программы всегда соответствует времени последнего доступа к ее исполняемому файлу.

Временные отметки для файла можно посмотреть в проводнике с использованием контекстного меню правой кнопки мышки "Свойства"- вкладка "Общие"

Время файла


В данном случае, информация относится к исполняемому файлу обозревателя Mozilla FireFox и позволяет сделать вывод, что обозреватель был установлен на компьютере 27 января 2010 г. , последнее обновление исполняемого файла firefox.exe выполнялось 14 декабря 2011 г. и последний запуск программы был выполнен 15 декабря 2011 года. Естественно, достоверность данных о временных отметках файла не может быть полной, поскольку, файл, например можно удалить, и затем скопировать из другого источника, что изменит время создания, открыть его каким-нибудь редактором и сохранить, не внося изменений, что изменит время изменения, просто открыть в блокноте Windows, что изменит время доступа. Тем не менее, отметки времени в обычных условиях использования программного обеспечения, вполне можно использовать в случаях, когда нужно узнать время установки, последнего обновления и запуска программ.

    Использование операций поиска файлов по отметкам времени позволяют решить и более сложную задачу, как, например, получение списка программ, которые были запущены на данном компьютере в определенное время. Стандартные средства поиска файлов и папок Windows и даже скриптовые языки администрирования не позволяют достаточно просто решить эту задачу, поэтому удобнее всего воспользоваться готовым программным решением от сторонних производителей. В частности, бесплатная и довольно удобная программа SearchMyFiles от Nir Sofer (nirsoft.net). Скачать последнюю версию для 32-битных и 64-битных Windows, а также файл русификации можно на Страничке программы SearchMyFiles .

SearchMyFiles является переносимой программой и не нуждается в установке. Архив содержит исполняемый exe-файл и справочные txt и chm-файлы.
SearchMyFiles можно использовать как альтернативу стандартному средству поиска файлов и папок Windows ("Search For Files And Folders" ) . Программа позволяет легко выполнить поиск по шаблонам, времени создания/модификации/доступа ( created/modified/accessed ), атрибутам, размерам, содержащимся текстовым или бинарным фрагментам. Можно, например, легко выполнить поиск всех файлов, созданных за прошедшие 10 минут или, файлов, размер которых составляет от 500 до 700 байтов. Результаты поиска можно скопировать в буфер обмена или сохранить в файл списком в формате text/html/csv/xml

После старта SearchMyFiles на экране будет отображено окно Search Options где можно задать нужные критерии поиска. Для поиска программ, например, исполняемых файлов с расширением exe и dll , которые запускались сегодня:

Критерии поиска файлов Searh Options


Кроме обычных для системы поиска файлов и папок Windows стандартного набора критериев ( по шаблону, размеру, содержимому:), можно воспользоваться поиском по отметкам времени файлов ( Опции File Time в нижней части окна).

Настройки поиска файлов по времени File Time


Для каждого вида отметки времени файла можно применить поиск по следующим временным диапазонам:

- All Times - в результаты поиска попадут файлы с любой датой
- Time Range - можно определить диапазон дат с точностью до секунды
- Last XX seconds - за последние XX (1-99) секунд
- Last XX minutes - за последние XX (1-99) минут
- Last XX hours - за последние XX (1-99) часов
- Last XX days - за последние XX (1-99) дней
- Last XX seconds - за последние XX (1-99) секунд
- Today - за сегодняшний день
- Since Last Reboot - с момента последней загрузки Windows

Соответственно, можно легко решить задачи:
- Список всех файлов, созданных на компьютере за последние 10 минут - шаблон имени файла - *.* и значение фильтра Created выбирается Last XX minutes = 10
- Список программ, установленных сегодня - шаблон имени файла - *.exe и значение фильтра Created выбирается Today
- Список текстовых и html-файлов, измененных за последние 3 дня - шаблон имени файла - *.txt,html и значение фильтра Modified выбирается Last XX days равное 3

И список программных модулей exe и dll, запускавшихся сегодня - шаблон имени файла - *.exe,dll и значение фильтра Accessed выбирается Today
После того, как будут заданы нужные критерии поиска, остается нажать кнопку "Start Search" и , через некоторое время, проанализировать полученные результаты. Время ожидания зависит от быстродействия компьютера, размеров файловой системы, глубины поиска в подкаталогах и т.п. В окне результатов будет отображаться список exe и dll-файлов, которые соответствуют выбранным критериям поиска, т.е. файлов, запуск которых выполнялся сегодняшним днем.

Результаты поиска файлов MyFileSearch





Как определить дату установки Windows.



Обычно, для определения даты установки Windows используется информация, записанная в раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion по завершении инсталляции. Дата хранится в ключе InstallDate в виде количества секунд, прошедших с 1 января 1970 года на момент инсталляции операционной системы. В Windows XP и старше, для получения даты в обычном виде, можно воспользоваться консольной утилитой systeminfo.exe. Но, если нужно узнать дату установки Windows 2000, или дату установки любой версии Windows, загрузиться в которой невозможно, или работа с которой выполняется в среде другой ОС (например, при работе в среде средств аварийного восстановления ) можно воспользоваться тем фактом, что дата создания некоторых файлов или папок никогда не изменяется с момента установки системы. За исключением , пожалуй того случая, когда Windows устанавливается поверх уже существующей системы. Так, например, дата создания папки Windows, в большинстве случаев будет соответствовать дате установки ОС. А также любой другой системной папки, не удаляемой в процессе использования системы. Существуют и некоторые файлы, которые создаются в ходе установки Windows и никогда не изменяются в процессе ее использования. Например, файлы копий кустов реестра (sam, security, system, software), записанные в папку \WINDOWS\REPAIR\ при завершении установки Windows 2000/XP. Кроме того, например, дата создания inf-файлов для стандартных системных драйверов из дистрибутива, будет также соответствовать дате установки Windows, даже если выполнялось их обновление, поскольку при обновлении файлы предварительно не удаляются, а перезаписываются, т.е. изменяется дата модификации, но не дата создания файла.


Как найти и обезвредить вирус, без использования антивируса.



    В подавляющем большинстве случаев, используя выше описанную утилиту SearchMyFiles можно быстро и легко справиться с вирусами, в частности, с различными блокираторами и СМС-вымогателями.
Любой вирус - это, прежде всего, программа, т.е. как правило, файл с расширением exe, реже - dll. В процессе обычной работы пользователя подобные файлы не создаются, если не выполняется установка или копирование какого - любо нового программного обеспечения. Т. е. из всего множества файлов файловой системы Windows, файлы вируса будут отличаться тем, что их дата создания будет соответствовать дате заражения, обычно - дате "Сегодня" или "Вчера". Теоретически, вирус может выполнить подмену даты, однако на практике мне такие случаи не встречались, и поиск по дате создания всегда давал список, где обязательно присутствовали файлы вирусов. Более того, такой способ поиска вредоносного программного обеспечения оказывается эффективнее, чем использовании антивирусных сканеров, поскольку выполняется значительно быстрее, и не зависит от актуальности антивирусной базы. Для обезвреживания руткитов и разблокировки рабочего стола пользователя можно воспользоваться загрузкой в другой ОС. Тот факт, что SearchMyFiles является переносимым приложением, позволяет использовать ее в комплекте программного обеспечения дисков аварийного восстановления на основе Windows PE, как например ERD Commander (ERDC). Загрузившись в ERD Commander (или c другого LiveCD на базе Windows PE) можно выполнить поиск исполняемых файлов на жестком диске зараженной системы, созданных за тот период, когда могло произойти заражение. Если загрузка выполняется с CD/DVD-диска, то в качестве носителя для SearchMyFiles можно использовать обычную флешку, внешний диск или дискету, подключив их к компьютеру до начала загрузки. После перемещения попавших под подозрение файлов в какую-любу папку (на всякий случай), желательно убрать из реестра связанные с ними записи. Что легко выполняется в среде ERDC. Подобный же подход можно использовать для поиска файлов обновлений, драйверов, некорректно работающих системных служб, которые вызвали крах Windows (BSoD).

В описываемых случаях использовалась утилита SearchMyFiles v1.82 - Скачать zip-архив, 65кб с поддержкой русского языка




Как быстро сделать диск не отформатированным.



    При определении содержимого любого дискового носителя средствами подпрограмм BIOS или любой операционной системы, в первую очередь, считывается самый первый сектор данных, представляющий собой специальную запись, называемую Master Boot Record или MBR. Обязательным признаком наличия данных записи MBR в первом (иногда его называют нулевым) секторе диска является специальный код (сигнатура) в двух последних байтах - 55AA. Наличие сигнатуры проверяется подпрограммой начальной загрузки BIOS, и при ее отсутствии, диск считается не загрузочным, даже если соблюдены все остальные условия возможности загрузки - имеется начальный загрузчик, активный раздел и т.п. Таким же образом, выполняется первый этап анализа содержимого системного или любого другого диска, подключаемого к операционной системе. Другими словами, процедура определения оглавления диска начинается с проверки наличия сигнатуры 55AA в первом секторе диска и, если ее нет, то на этом и заканчивается. При отсутствии сигнатуры не имеет никакого значении тот факт, что диск содержит какие - либо логические разделы, имеется загрузочный код в записи MBR, или диск содержит скрытые данные систем восстановления. Нет сигнатуры - нет никакой логической структуры данных на диске. То есть изменение любого бита в двух последних байтах первого сектора диска превращает его, с точки зрения ОС и BIOS, в абсолютно пустой носитель информации.

    Многие программы для тестирования жестких дисков позволяют просматривать и изменять данные выбранных секторов. В данном примере будет использоваться популярная программа Victoria for Widows - Скачать, приблизительно 0.5 Мб .
Программа не требует установки. Архив содержит исполняемый файл vcr44f.exe, файл справки vichlp.htmи драйвер porttalk.sys, необходимый для работы с дисками через порты ввода-вывода ( режим PIO программы Victoria). Последний файл в данном случае не нужен, поскольку в рассматриваемом примере выполняется изменение сигнатуры для флешки, доступ к которой возможен только через программный интерфейс Windows (режим API программы, устанавливаемый переключателем в правой верхней части основного окна) .

Манипуляции с данными записи MBR в случае ошибочных действий пользователя могут привести к полной потере данных, поэтому, нужно соблюдать осторожность и четко представлять последствия своих действий. Обязательно нужно учитывать следующие факторы:

- Если выполняется запись на диск, то нужно абсолютно точно знать - на какой диск (если их несколько), в какой сектор и какие данные вы будете записывать.

- Проверка правильности сигнатуры выполняется только при подключении диска к системе или при перезагрузке.

- Если изменена сигнатура загрузочного диска, то при перезагрузке операционной системы он станет "пустым", и для ее восстановления следует заранее предусмотреть возможность загрузки и редактирования сектора в другой ОС.

- Если используется изменение сигнатуры для жесткого диска, то могут быть потеряны и данные скрытых разделов, используемые для восстановления системы в нетбуках и ноутбуках.

Практический пример для съемного диска :

1. Выбираем диск, сигнатуру которого будем менять. Переходим на вкладку Standard . В окне слева выбираем диск ( № 3 Removable Kingston Data . . . )

Выбор диска для редактирования сектора

2. Переходим на вкладку Advanced . В левой части окна отображается поле с номером текущего сектора. Программа устанавливает номер сектора равный 63

Чтение сектора с диска

3. Устанавливаем номер сектора 0 и жмем кнопку Open. Перемещаем курсор в позицию двух последних байтов данных:

Сигнатура MBR - 55AA

4. Код 55AA меняем на что угодно, например на 00AA, и жмем кнопку Save. До нажатия этой кнопки запись отредактированных данных в сектор на диске не выполняется, поэтому, до ее нажатия, можно всегда вернуться к исходному состоянию, повторив считывание сектора с помощью Open.

Изменение сигнатуры никак не влияет на состояние уже подключенного диска. После стандартного отключения средствами Windows (безопасного извлечения устройства) отсоединяем флешку от разъема USB порта и снова подключаем ее. При попытке открыть содержимое флешки будет выдано сообщение, что она не отформатирована:

Флешка не отформатирована

Если снова открыть сектор и вернуть исходное значение 55AA в поле сигнатуры, а затем отключить и снова подключить флешку, то структура ее оглавления будет восстановлена.








В начало страницы | На главную страницу сайта.