User ini для windows

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

Автозапуск

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

Где находится информация об автоматически запускаемых файлах? В множестве разных мест, и поэтому имеет смысл рассмотреть их по отдельности.

Автозагрузка в меню Пуск

Наиболее известный источник файлов автозапуска — это папка Автозагрузка в меню Программы, доступном при нажатии кнопки Пуск. Ярлыки, находящиеся в этой папке соответствуют запускаемым программам. Собственно, имя запускаемого файла можно определить через свойства ярлыка.

Однако в связи с тем, что папка Автозагрузка известна большинству пользователей, вредоносные программы редко используют ее для автозапуска, предпочитая менее заметные способы.

Системный реестр Windows

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

Системный реестр Windows — это основное хранилище большинства настроек операционной системы и многих приложений. Для доступа к системному реестру используется системная утилита regedit.exe, расположенная в папке операционной системы

Окно утилиты представлено на рисунке 3.5. В левой его части находится дерево ключей реестра, ключи изображены в виде папок. В правой части окна отображаются записи, относящиеся к выбранному ключу. В ключе могут находиться и записи — параметры настройки, и другие ключи — группы параметров настройки.

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

  • HKEY_CURRENT_USER — ветка ключей, относящихся к текущему пользователю, часто сокращенно обозначается как HKCU
  • HKEY_LOCAL_MACHINE — ветка ключей, относящихся к компьютеру в целом, сокращается до HKLM

Для настройки автозапуска в реестре Windows предназначено несколько ключей:

  • Первая группа находится в ключе HKCU\Software\Microsoft\Windows\CurrentVersion, все ключи, относящиеся к автозагрузке, начинаются с Run. Эти программы запускаются только при входе в систему текущего пользователя. В зависимости от операционной системы это могут быть ключи:
    • Run — основной ключ автозапуска
    • RunOnce — служебный ключ для программ, которым требуется запуститься только один раз
    • RunServices — ключ для запуска служб в Windows 98/Me*

    Каждая запись в ключе автозапуска соответствует одной запускаемой программе. Запись состоит из имени записи, типа записи (для параметров автозапуска тип записи — строковый, обозначается как REG_SZ) и значения, которое и является строкой запуска, т. е. включает имя исполняемого файла и параметры командной строки.

    Например, представленная на рисунке 3.5 запись «internat.exe» служит для автозапуска одноименной программы internat.exe. Эта программа является системной утилитой Windows, отвечающей за переключение раскладки (языка) клавиатуры.

    Кроме программы internat.exe, стандартными для Windows являются следующие строки запуска:

    Имя Значение
    KernelFaultCheck %systemroot%\system32\dumprep 0 -k
    Synchronization Manager mobsync.exe /logon
    LoadPowerProfile Rundll32.exe powrprof.dll,LoadCurrentPwrScheme
    ScanRegistry C:\WINDOWS\scanregw.exe / autorun
    SystemTray SysTray .Exe
    TaskMonitor C:\WINDOWS\taskmon.exe
    CTFMON.EXE C:\WINDOWS\system32\ctfmon.exe

    В зависимости от настроек Windows и установленных программ ключи автозапуска могут содержать множество различных строк для запуска различных программ. Поэтому все на первый взгляд подозрительные файлы нужно перепроверять — они могут оказаться вполне обычными программами.

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

    Конфигурационные файлы win.ini и system.ini

    Настроить автозапуск программ можно и в системных файлах Windows — system.ini и win.ini. Эти файлы используются (преимущественно, использовались) в Windows 3.x, 9x, Me для хранения системных настроек. В Windows NT, 2000, XP аналогичные настройки перенесены в системный реестр, но старые конфигурационные файлы сохранены в целях обеспечения совместимости со старыми же программами.

    Конфигурационные файлы win.ini и system.ini разбиты на секции. Название каждой секции заключено в квадратные скобки, например, [boot] или [windows].

    В файле win.ini строки запуска программ выглядят так:

    Анализируя такие строки можно понять, какие файлы запускаются при старте компьютера.

    В файле system.ini есть ровно одна строка, через которую чаще всего запускаются вирусы, расположена в секции [boot]:

    Во всех версиях Windows стандартной программной оболочкой является explorer.exe. Если в строке shell= указано что-то отличное от explorer.exe, это с большой вероятностью вредоносная программа. Справедливости ради, нужно отметить, что существуют легальные программы, являющиеся альтернативными программными оболочками Windows. Такие программы могут изменять значение параметра shell в файле system.ini.

    В Windows NT, 2000, XP и 2003 параметры стандартной оболочки задаются в реестре, в ключе HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon в параметре Shell. Значение этого параметра также в подавляющем большинстве случаев должно быть Explorer.exe.

    Другие источники

    Вместо того, чтобы собирать информацию об автоматически запускаемых приложениях из разных источников, можно воспользоваться системной утилитой msconfig.exe. Эта утилита входит в состав Windows 98, Me, XP и 2003 и предоставляет сводную информацию обо всех источниках объектов автозапуска.

    Вид окна утилиты отличается в зависимости от операционной системы. В Windows XP она выглядит так, как изображено на рисунке 3.6.

    На закладке Автозагрузка собраны данные о запускаемых программах из реестра и меню Пуск. В колонке Элемент автозагрузки приводится имя записи в реестре или имя ярлыка в меню Пуск. В колонке Команда — строка запуска программы, в колонке Расположение — ключ реестра, в котором расположена соответствующая запись, или Common Startup — для ярлыков меню Пуск.

    Данные о настройках файлов system.ini и win.ini расположены на одноименных закладках. Кроме этого имеется закладка Службы, содержащая информацию о запускаемых службах в Windows XP.

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

    В то же время, обращаться со службами нужно не менее осторожно, чем с настройками реестра. Отключение важных служб может привести к тому, что компьютер вообще не загрузится.

    INI-файл — INI file

    Тип формата Файл инициализации / конфигурации

    Файл INI — это файл конфигурации для компьютерное программное обеспечение , которое состоит из текстового содержимого со структурой и синтаксисом, состоящими из пар ключ-значение для свойств, и разделов, которые организуют свойства. Имя этих файлов конфигурации происходит от имени файла с расширением INI для инициализации, используемого в операционной системе MS-DOS , которая сделала этот метод конфигурации программного обеспечения популяризованным. Формат стал неформальным стандартом во многих контекстах конфигурации, но многие приложения в других операционных системах используют другие расширения имен файлов, такие как conf и cfg.

    Содержание

    История

    Основным механизмом конфигурации программного обеспечения в Windows изначально был формат текстового файла, который содержал текстовые строки с одной парой «ключ-значение» в каждой строке, организованные в разделы. Этот формат использовался для компонентов операционной системы, таких как драйверы устройств, шрифты, средства запуска. Файлы INI также обычно использовались приложениями для хранения индивидуальных настроек.

    Формат поддерживался в 16-битных платформах Microsoft Windows вплоть до Windows 3.1x . Начиная с Windows 95 Microsoft одобрила использование реестра Windows и начала уводить разработчиков от использования файлов INI для конфигурации. Все последующие версии Windows использовали реестр Windows для конфигурации системы, но приложения, созданные на .NET Framework, используют специальные файлы XML .config. Функции файла инициализации по-прежнему доступны в Windows, и разработчики по-прежнему могут их использовать. Системы

    Linux и Unix также используют аналогичный формат файла для конфигурации системы. Кроме того, программное обеспечение, не зависящее от платформы, может использовать этот формат файла для конфигурации. Это удобочитаемый и простой для синтаксического анализа формат, поэтому его можно использовать для файлов конфигурации, которые не требуют гораздо большей сложности.

    Файлы конфигурации Git похожи на файлы INI.

    Например, платформенно-независимый PHP использует формат INI для своего » php.ini «конфигурационный файл в системах Windows и Linux. Файлы

    Desktop.ini определяют отображение каталогов в Windows, например, значки для каталога.

    Формат

    Ключи (свойства)

    Базовым элементом, содержащимся в файле INI, является ключ или свойство. У каждого ключа есть имя и значение, разделенное знаком равно (=). Имя отображается слева от знака равенства. В реализации Windows знак равенства и точка с запятой являются зарезервированными символами и не могут появляться в ключе. Значение может содержать любой символ.

    Разделы

    Ключи могут, но не обязательно, группироваться в разделы с произвольным названием. Имя раздела появляется в отдельной строке в квадратных скобках ([и]). Все ключи после объявления раздела связаны с этим разделом. Нет явного разделителя «конец раздела»; разделы заканчиваются объявлением следующего раздела или в конце файла. Разделы не могут быть вложенными.

    Чувствительность к регистру

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

    Комментарии

    Точка с запятой (;) в начале строки обозначает комментарий . Строки комментариев игнорируются.

    Различные функции

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

    Комментарии

    Некоторое программное обеспечение поддерживает использование знака числа (#) в качестве альтернативы точке с запятой для обозначения комментариев. Однако он может быть включен в название ключа. Например, следующая строка создает переменную с именем «#var», но не переменную с именем «var»; иногда это используется для создания псевдо-реализации комментария.

    В общем, использование знака числа непредсказуемо, как в следующих строках (обратите внимание на пробел после знака числа во второй строке). По этой причине не следует использовать знак числа в начале комментария.

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

    Повторяющиеся имена

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

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

    escape-символы

    Некоторые реализации также предлагают различную поддержку для escape-символа , обычно с обратной косой чертой ( \ ). Некоторые поддерживают «продолжение строки», где обратная косая черта, за которой сразу следует EOL (конец строки), приводит к игнорированию разрыва строки и продолжению «логической строки» на следующей фактической строке из INI-файла. Также наблюдается реализация различных «специальных символов» с escape-последовательностями.

    Обычные escape-последовательности

    Последовательность Значение
    \\ \ (одиночная обратная косая черта , экранирующая escape-символ)
    \’ Апостроф
    Двойные кавычки
    \0 Нулевой символ
    \a Bell / Alert / Audible
    \b Backspace , Bell character для некоторых приложений
    \t Tab знак
    \r Возврат каретки
    \n Перевод строки
    \; Точка с запятой
    \# Знак числа
    \= Знак равенства
    \: Двоеточие
    \ x . Символ Юникода с шестнадцатеричнымкодовой точкой , соответствующей .

    Глобальные свойства

    Также могут быть разрешены необязательные «глобальные» свойства, которые объявляются перед объявлением любого раздела.

    Иерархия

    Чаще всего файлы INI не имеют иерархия разделов внутри разделов. Однако некоторые файлы имеют иерархическое соглашение об именах. Для раздела A, подраздела B, подраздела C, свойства P и значения V они могут принимать такие записи, как [ABC] и P = V (Windows ‘ xstart .ini ), [A \ B \ C] и P = V (файл драйвера IBM Windows devlist.ini ) или [A] и B, C, P = V (файл Microsoft Visual Studio AEMANAGR.INI ).

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

    Разделитель имени / значения

    Некоторые реализации допускают использование двоеточия ( : ) в качестве разделителя имени / значения (вместо знака равенства).

    Значения в кавычках

    Некоторые реализации позволяют заключать значения в кавычки, обычно с использованием двойных кавычек и / или апострофов . Это позволяет явно указывать пробелы и / или заключать в кавычки специальные символы (равно, точка с запятой и т. Д.). Стандартная функция Windows GetPrivateProfileString поддерживает это и удаляет кавычки, окружающие значения.

    Пробел

    Интерпретация пробела варьируется. Большинство реализаций игнорируют начальные и конечные пробелы вокруг имени свойства. Некоторые даже игнорируют пробелы в значениях (например, делая эквивалентными «имя хоста» и «имя хоста»). Некоторые реализации также игнорируют начальные и конечные пробелы вокруг значения свойства; другие считают, что все символы , следующие за знаком равенства (включая пробелы), являются частью значения.

    Порядок разделов и свойств

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

    Пример

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

    Доступ к файлам INI

    В Windows Profile API является программным интерфейс, используемый для чтения и записи настроек из классических файлов Windows .ini. Например, функция GetPrivateProfileString извлекает строку из указанного раздела в файле инициализации.

    В следующем примере программы C демонстрируется чтение значений свойств из приведенного выше примера INI-файла (пусть имя файла конфигурации будет dbsettings.ini ):

    Третий параметр функции GetPrivateProfileString — это значение по умолчанию, которое равно «127.0.0.1» и 143 соответственно в двух вызовах функций выше. Если аргумент, предоставленный для этого параметра, — ПУСТО (NULL), по умолчанию используется пустая строка «».

    В Unix существует множество различных библиотек конфигурации для доступа к файлам INI. Часто они уже включены в структуры и наборы инструментов. Примеры синтаксических анализаторов INI для Unix включают GLib , iniparser и libconfini .

    Сравнение анализаторов INI

    Имя Поддержка разделов Поддержка вложения разделов Распознавание отключенных записей Поддержка нескольких строк Типы значений Поддержка чтения / записи Платформа Лицензия Язык программирования Последняя версия выпуска
    Да Нет Нет Нестандартный Логический , Число , Строка Чтение + Запись * BSD , GNU / Linux , macOS , Windows PSFL C(реализация), Python (использование) 3.8.2
    GLib Да Да Нет Нет Логическое , Число , Строка , Массив Чтение + Запись * BSD , GNU / Linux , macOS , Windows LGPL C 2.64.4 (2 июля 2020 г .; 3 месяца назад (2020-07-02))
    Да Нет Нет Нет Логическое , Число , Строка Чтение + запись * BSD , GNU / Linux , macOS , Windows Apache Go 1.2.0 Да Нет Нет Да Логическое , Число , Строка Чтение * BSD , GNU / Linux , macOS , Windows BSD C 48 Да Нет Нет Да логическое , число , строка чтение + запись * BSD , GNU / Linux , macOS , Windows MIT C 4.1 Java (через java.util.Properties ) Нет Нет Нет Да Строка Чтение + запись Независимость от платформы Двойная лицензия: версия GPL 2 с исключением пути к классам и проприетарной лицензией . C(реализация), Java (использование) 15.0.1 (20 октября 2020 г .; 4 дня назад (2020-10-20))

    11.0.9 (11 сентября 2020 г .; 43 дня назад (2020-09-11))
    8u272 (28 сентября 2020 г .; 26 дней назад (2020-09-28))

    Да Да Да Да Логическое , Число , Строка , Массив Чтение * BSD , GNU / Linux , macOS , Windows GPL C 1.14.0 PyINI Да Нет Да Да Логическое , Число , Строка Чтение + запись Независимость от платформы GPL Python 1.0 Да Нет Нет Нет Логическое , Число , Строка Чтение + Запись GNU / Linux , Windows GPL C ++ Снято с производства — последняя версия 5.0.5, с ноября 2009 г. Windows API Да Нет Нет Нет Число , Строка , Структура Чтение + запись (неразрушающий) Windows Собственный C 1803 (10.0.17134.112) (июнь 12, 2018; 2 года назад (2018-06-12)) Wine (imp использование Windows API ) Да Нет Нет Нет Число , Строка , Struct чтение + запись (неразрушающий) Linux , macOS , Windows LGPL C 5.0.2 (7 августа 2020 г .; 2 месяца назад (2020-08-07)) Имя Поддержка разделов Поддержка вложенности разделов Распознавание отключенных записей Многострочный поддержка Типы значений Поддержка чтения / записи Платформа Лицензия Язык программирования Последняя версия выпуска

    Сопоставление файлов

    Инициализация сопоставление файлов создает сопоставление между файлом INI и реестром . Он был представлен в Windows NT и Windows 95 как способ перехода от хранения настроек в классических файлах .ini к новому реестру Windows . Сопоставление файлов перехватывает вызовы Profile API и, используя настройки из раздела реестра IniFileMapping , направляет чтение и запись в соответствующие места в реестре.

    Используя приведенный выше пример, можно выполнить строковый вызов, чтобы получить ключ имени из раздела владельца из файла настроек, например, dbsettings.ini. Возвращаемое значение должно быть строкой «Джон Доу»:

    Отображение INI принимает этот вызов API профиля, игнорирует любой путь в данном имени файла и проверяет, есть ли ключ реестра, соответствующий имени файла в каталоге:

    HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \
    CurrentVersion \ IniFileMapping

    Если он существует, он ищет имя записи, совпадающее с запрошенным разделом. Если запись найдена, отображение INI использует ее значение как указатель на другую часть реестра. Затем он ищет запрошенную настройку INI в этой части реестра.

    Если совпадающее имя записи не найдено и есть запись под именем записи (по умолчанию) , вместо нее используется сопоставление INI. Таким образом, каждое имя раздела не требует отдельной записи.

    HKEY_LOCAL_MACHINE \ Software \ . \ IniFileMapping \ dbsettings.ini
    (по умолчанию) @USR: Software \ oldprogs \ inisettings \ all
    база данных USR: Software \ oldprogs \ inisettings \ db

    Итак, в этом случае вызов профиля для раздела [владелец] отображается на:

    HKEY_CURRENT_USER \ Software \ oldprogs \ inisettings \ all
    name John Doe
    organization Acme Products

    , где найдено имя записи реестра « name », совпадающее с запрошенным ключом INI. Затем значение «John Doe» возвращается вызову Profile. В этом случае префикс @ по умолчанию препятствует чтению файла dbsettings.ini на диске. В результате любые настройки, не найденные в реестре, не ищутся в INI-файле.

    Запись реестра « база данных » не имеет префикса @ в значении; таким образом, только для раздела [database] сначала берутся настройки в реестре, а затем настройки в файле dbsettings.ini на диске.

    Альтернативы

    Начиная с Windows 95 , Microsoft начала активно продвигать использование реестра Windows вместо INI-файла. Файлы INI обычно ограничены двумя уровнями (разделы и свойства) и плохо обрабатывают двоичные данные. Однако это решение не было защищено от критики из-за того, что реестр является монолитным, непрозрачным и двоичным, должен быть синхронизирован с файловой системой и представляет собой единую точку отказа для операционной системы.

    Позже файлы конфигурации на основе XML стали популярным выбором для кодирования конфигурации в текстовых файлах. XML допускает произвольно сложные уровни и вложения и имеет стандартные механизмы для кодирования двоичных данных .

    В последнее время форматы сериализации данных , такие как JSON , TOML и YAML могут служить форматами конфигурации. Эти три альтернативных формата могут размещаться произвольно, но имеют другой синтаксис, чем файл INI. Среди них TOML больше всего напоминает INI, но идея сделать TOML сознательно совместимым с большим подмножеством INI была отклонена.

    Однако новейшие синтаксические анализаторы INI допускают такой же произвольный уровень вложенности XML , JSON , TOML и YAML предлагают эквивалентную поддержку типизированных значений и Unicode , хотя сохранить «неформальный статус» файлов INI, разрешив несколько синтаксисов для выражения одного и того же.

Читайте также:  Classic asp on linux
Оцените статью