Как создать inf файл

Обновлено: 06.07.2024

Цикл подошел к концу. В этой статье я расскажу об еще нескольких способах инсталляции драйверов
(в прошлый раз мы рассмотрели инсталляцию с помощью простого изменения
реесстра (вручную или с использованием .reg - файла) и с использованием программы Monitor из состава Driver Studio) - с помощью inf - файла и с использованием возможностей SCM - менеджера. А последний пункт вплотную подводит нас к написанию собственной консольной проги для тестирования возможностей нашего драйвера.

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

Инсталляция драйвера (продолжение)

В данной статье мы рассмотрим еще два способа инсталляции драйвера: с помощью inf - файла и с использованием возможностей SCM - менеджера. Начнем с первого.

Для того, чтобы мы могли корректно установить наш драйвер с использованием виндошного Мастера Установка, нам необходимо создать inf - файл с правильной структурой. Пример оного вместе с комментариями читай ниже:

; Primer.Inf
[Version]
Signature="$Hacker$"
Class=Unknown
Provider=%HackerMagazine%
DriverVer=27/10/2005,0.0.0.1

[Hacker.Magazine]
%Primer%=Primer.Install, *hackermagazine\Primer

[DestinationDirs]
Primer.Files.Driver=10,System32\Drivers ; путь для копирования драйвера под Windows 98
Primer.Files.Driver.NTx86=10,System32\Drivers ; путь для копирования драйвера под Windows NT

[SourceDisksNames]
1="Primer build directory".

[SourceDisksFiles]
Primer.sys=1,drv\w98 ; путь, где находится версия драйвера под Windows 98

[SourceDisksFiles.x86]
Primer.sys=1,drv\nt ; путь, где находится версия драйвера под Windows NT
; в нашем случае обе версии драйверов, конечно, одинаковые

; Windows 98
; секция, используемая в случае установки драйвера под Windows 98
[Primer.Install]
CopyFiles=Primer.Files.Driver
AddReg=Primer.AddReg

[Primer.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,Primer.sys
[Primer.Files.Driver]
Primer.sys

; Windows 2000, XP, Server 2003
; секция, используемая в случае установки драйвера под Windows NT
[Primer.Install.NTx86]
CopyFiles=Primer.Files.Driver.NTx86

[Primer.Files.Driver.NTx86]
Primer.sys. %COPYFLG_NOSKIP%

[Primer.Install.NTx86.Services]
AddService = Primer, %SPSVCINST_ASSOCSERVICE%, Primer.Service

[Primer.Service]
DisplayName = %Primer.ServiceName%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_AUTO_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %10%\System32\Drivers\Primer.sys

; Строки
[Strings]
HackerMagazine="Napisanie draiverov v podrobnostjah №4"
Primer="Primer driver: checked build"
Primer.ServiceName="Primer NTDDK driver (V.001)"

SPSVCINST_ASSOCSERVICE=0x00000002
COPYFLG_NOSKIP=2
SERVICE_KERNEL_DRIVER=1
SERVICE_AUTO_START=2
SERVICE_DEMAND_START=3
SERVICE_ERROR_NORMAL=1

Сохраняй этот файлик с расширением inf. Ну а теперь можешь запускать Мастер Установки, в нем указывай способ выбора устройства вручную
(без автоматического поиска и определения), путь к каталогу с inf - файлом. Ну, думаю, тебя не нужно учить общению с Мастером 🙂 После завершения установки, если все пройдет нормально, то драйвер успешно встанет в систему и ты сможешь лицезреть его в списке устройств. Все, теперь его можно тестировать.

Перейдем к SCM - менеджеру. SCM - менеджер - это сервис Windows NT, предоставляющий удобную возможность работать с драйвером без использования Мастера Установки - с помощью функций, вызываемых из пользовательского приложения. Для того, чтобы начать работать с SCM - мененджером, необходимо вызвать функцию OpenSCManager, а для завершения работы - CloseServiceHandle. Но, к сожалению, работать с помощью SCM - менеджера можно не со всеми типами драйверов.

Ну а теперь мы приступим к написанию своего консольного приложения, тестирующего драйвер и использующего SCM - менеджер.

Написание консольного приложения для тестирования драйвера

Во-первых, нужно создать файл Ioctl.h. Его содержимое
(которое, надо думать, тебе знакомо по файлу Driver.h :)):

Вот содержимое файла resource.h:

. и файла ресурсов .rc:

1 TEXTINCLUDE MOVEABLE PURE
BEGIN
"resource.h\0"
END

3 TEXTINCLUDE MOVEABLE PURE
BEGIN
"\r\n"
"\0"
END

Ну а теперь головной .cpp - шник программы с комментариями:

// Начинаем знакомиться с SCM - менеджером. Далее - функция установки драйвера на основе его вызовов.
BOOL InstallDriver(SC_HANDLE scm, LPCTSTR DriverName, LPCTSTR driverExec)
SC_HANDLE Service =
CreateService (scm, // открытый дескриптор к SCManager
DriverName, // имя сервиса - Primer
DriverName, // для вывода на экран
SERVICE_ALL_ACCESS, // желаемый доступ
SERVICE_KERNEL_DRIVER, // тип сервиса
SERVICE_DEMAND_START, // тип запуска
SERVICE_ERROR_NORMAL, // указывает, как обрабатывается ошибка
driverExec, // путь к бинарному файлу
// Остальные параметры не используются – укажем NULL
NULL, // Не определяем группу загрузки
NULL, NULL, NULL, NULL);
if (Service == NULL) // неудача
DWORD err = GetLastError();
if (err == ERROR_SERVICE_EXISTS) */>
// более серьезная ошибка:
else printf ("ERR: Can’t create service. Err=%d\n",err);
return FALSE;
>
CloseServiceHandle (Service);
return TRUE;
>

// Функция удаления драйвера на основе SCM вызовов
BOOL RemoveDriver(SC_HANDLE scm, LPCTSTR DriverName)
SC_HANDLE Service =
OpenService (scm, DriverName, SERVICE_ALL_ACCESS);
if (Service == NULL) return FALSE;
BOOL ret = DeleteService (Service);
if (!ret) < /* неудача при удалении драйвера
*/ >

CloseServiceHandle (Service);
return ret;
>

// Функция запуска драйвера на основе SCM вызовов
BOOL StartDriver(SC_HANDLE scm, LPCTSTR DriverName)
SC_HANDLE Service =
OpenService(scm, DriverName, SERVICE_ALL_ACCESS);
if (Service == NULL) return FALSE; /* open failed */
BOOL ret =
StartService(Service, // дескриптор
0, // число аргументов
NULL); // указатель на аргументы
if (!ret) // неудача
<
DWORD err = GetLastError();
if (err == ERROR_SERVICE_ALREADY_RUNNING)
ret = TRUE; // драйвер уже работает
else < /* другие проблемы */>
>

CloseServiceHandle (Service);
return ret;
>
// Функция остановки драйвера на основе SCM вызовов
BOOL StopDriver(SC_HANDLE scm, LPCTSTR DriverName)
SC_HANDLE Service =
OpenService (scm, DriverName, SERVICE_ALL_ACCESS);
if (Service == NULL) // невозможно выполнить остановку драйвера
DWORD err = GetLastError();
return FALSE;
>
SERVICE_STATUS serviceStatus;
BOOL ret =
ControlService(Service, SERVICE_CONTROL_STOP, &serviceStatus);
if (!ret)
DWORD err = GetLastError();

CloseServiceHandle (Service);
return ret;
>

// Соберем вместе действия по установке, запуску, останову
// и удалению драйвера (для учебных целей).
// Пользоваться этой функцией в данном примере нам не придется,
// поэтому закомментируем ее.
/*
void Test_SCM_Installation(void)
SC_HANDLE scm = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(scm == NULL) // неудача
<
// получаем код ошибки и ее текстовый эквивалент
unsigned long err = GetLastError();
PrintErrorMessage(err);
return;
>
BOOL res;
res = InstallDriver(scm, DRIVERNAME, DRIVERBINARY);
// ошибка может быть не фатальной. Продолжаем:
res = StartDriver (scm, DRIVERNAME);
if(res)
// Здесь следует разместить функции работы с драйвером
res = StopDriver (scm, DRIVERNAME);
if(res) res = RemoveDriver (scm, DRIVERNAME);
>
CloseServiceHandle(scm);
return;
>
*/

// Основная функция тестирующего приложения.
// Здесь диагностике ошибочных ситуаций уделено очень мало внимания.
// В реальных приложениях так делать
// нельзя!

// делаем попытку установки драйвера
res = InstallDriver(scm, DRIVERNAME, DRIVERBINARY);
if(!res) // неудача, но, быть может, драйвер уже установлен ?
printf("Cannot install service");

HANDLE hHandle = // Получаем доступ к драйверу
CreateFile("\\\\.\\Primer",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hHandle==INVALID_HANDLE_VALUE)
printf("ERR: can not access driver Primer.sys !\n");
return (-1);
>
DWORD BytesReturned; // Переменная для хранения числа
// переданных байт
// Приступаем к тестированию драйвера. Последовательно выполняем обращения к драйверу
// с различными кодами IOCTL:

unsigned long ioctlCode=IOCTL_PRINT_DEBUG_MESS;
if(!DeviceIoControl(hHandle,
ioctlCode,
NULL, 0,
NULL, 0,
&BytesReturned,
NULL))
printf("Error in IOCTL_PRINT_DEBUG_MESS!");
return(-1);
>

ioctlCode=IOCTL_CHANGE_IRQL;
if(!DeviceIoControl(hHandle,
ioctlCode,
NULL, 0,
NULL, 0,
&BytesReturned,
NULL))
printf("Error in IOCTL_CHANGE_IRQL!");
return(-1);
>

ioctlCode=IOCTL_TOUCH_PORT_378H;
if(!DeviceIoControl(hHandle,
ioctlCode,
NULL, 0,
NULL, 0,
&BytesReturned,
NULL))
printf("Error in IOCTL_TOUCH_PORT_378H!");
return(-1);
>

// Продолжаем тестирование. Получаем 1 байт данных из драйвера.
// По окончании данного вызова переменная xdata должна
// содержать значение 33:
unsigned char xdata = 0x88;
ioctlCode=IOCTL_SEND_BYTE_TO_USER;
if(!DeviceIoControl(hHandle,
ioctlCode,
NULL, 0,
&xdata, sizeof(xdata),
&BytesReturned,
NULL))
printf("Error in IOCTL_SEND_BYTE_TO_USER!");
return(-1);
>

// Выводим мессагу в дебаговую консоль:
printf("IOCTL_SEND_BYTE_TO_USER: BytesReturned=%d xdata=%d",
BytesReturned, xdata);

// Выполнение следующего теста в Windows NT приведет к
// краху ОС`и
/*
ioctlCode=IOCTL_MAKE_SYSTEM_CRASH;
if(!DeviceIoControl(hHandle,
ioctlCode,
NULL, 0,
NULL, 0,
&BytesReturned,
NULL))
printf("Error in IOCTL_MAKE_SYSTEM_CRASH!");
return(-1);
>
*/
// Закрываем дескриптор доступа к драйверу:
CloseHandle(hHandle);

res = RemoveDriver (scm, DRIVERNAME);
if(!res)
printf("Cannot remove driver!");
CloseServiceHandle(scm);
return -1;
>

Правка солюшенов визуальной студии

<?xml version = "1.0" encoding = "windows-1251" ?>
<VisualStudioProject ProjectType = "Visual C++"
Version = "7.00"
Name = "Primer"
SccProjectName = " "
SccLocalPath = " " >
<Platforms><Platform Name = "Win32" />
</Platforms>
<Configurations> <Configuration Name = "Checked | Win32 "
OutputDirectory = ".\checked"
IntermeaditeDirectory = ".\checked"
ConfigurationType = "2"
UseOfMFC = "0"
ATLMinimizesCRunTimeLibraryUsage = "FALSE"
CharacterSet = "1" >
<Tool Name = "VCCLCompilerTool"
AdditionalOptions = "/Zel - cbstring /QIfdiv- /QIf /Gi- /Gm- /GX"
Optimization = "0"
EnableIntrinsicFunctions = "FALSE"
OmitFramePointers = "TRUE"
OptimizeForProcessor = "2"
AdditionalIncludeDirectories
PreprocessorDefinitions
IgnoreStandartIncludePath="TRUE"
StringPooling = "TRUE"
ExceptionHandling = "TRUE"
RuntimeLibrary="0"
StructMemberAlignment="4"
BufferSecurityCheck = "FALSE"
EnableFunctionLevelLinking = "TRUE"
PrecompiledHeaderFile = ".\checked/Primer.pch"
AssemblerListingLocation = ".\checked/"
ObjectFile=".\checked/"
ProgramDataBaseFileName= ".\checked\Primer.pdb"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CallingConvention="2"
CompileAs = "0"
ForcedIncludeFiles= "warning.h"/>
<Tool Name = "VCCustomerBuildTool"/>
<Tool Name = "VCLinkerTool" AdditionalOptions = " "
AdditionalDependencies
OutputFile = ".\checked\Primer.sys"
Version = "5.0"
LinkIncremental TRUE"
AdditionalLibraryDirectories = "C:\WinDDK\2600\lib\w2k\i386"
IgnoreAllDefaultsLibraries = "TRUE"
ProgramDatabaseFile = ".\checked/Primer.pdb"
GenerateMapFile = "TRUE"
MapFileName = "Primer.map"
StackReserveSize = "262144"
StackCommitSize = "4096"
OptimizeReferences = "2"
EnableCOMDATFolding = "2"
EntryPointSymbol = "DriverEntry"
SetChecksum = "TRUE"
BaseAddress = "0x10000"
ImportLibrary = " "
MergeSections = ".rdata = .text"
TargetMachine = "1" />

<Tool Name = "VCMIDILTool"
MkTypeLibCompatible = "TRUE"
SuppressStartupBanner = "TRUE"
TargetEnvironment = "1"
TypeLibraryName = ".\checked/Primer.tlb"/>
<Tool Name = "VCPostBuildEventTool" />

<Tool Name = "VCPreBuildEventTool"/>
<Tool Name = "VCPreLinkEventTool" />

<Tool Name = "VCResourceCompilerTool"/>
<Tool Name = "VCWebServiceProxyGeneratorTool" />

<Tool Name = "VCWebDeploymentTool" />

</Configuration>
</Configurations>
<Files> <Filter Name = "Header Files" Filter = ".h">
<File RelativePath = ".\Driver.h"> </File>
</Filter>
<Filter Name = "Source Files" Filter = ".c;.cpp">
<File RelativePath = ".\main.cpp"> </File>
</Filter>
</Files>
<Globals></Globals>
</VisualStudioProject>

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

Ну вот и все. Желаю удачи и интересных находок в плавании по увлекательному океану драйверов и железа! Да не облысеют твои пятки!

Всем привет!
Сегодня я хочу, поговорит о полезности файла «autorun.inf». Файл «autorun.inf» используют для быстрого запуска программ, игр и других приложений с CD/DVD диска или USB-накопителей.

Как это работает? Каждый раз, когда вы вставляете в комп флешку, дискетку, CD/DVD диск, операционная система Windows в первую очередь будет просматривать в самом корне файл «autorun.inf». Если «autorun.inf» присутствует, тогда операционная система прочитывает и запускает весь код, который был прописан в этом фале.

Итак, «autorun.inf» – это текстовый файл с расширением (.inf), в котором содержатся некоторые команды для автозапуска различных приложений.

Как создать файл «autorun.inf».

Чтобы создать загрузочный файл «autorun.inf», сделайте такие действия:
1. Откройте «Блокнот» . (Для тех, кто не знает, где найти Блокнот: «Пуск» => «Все программы» => «Стандартные» => «Блокнот» ).

2. В Блокноте впишите стандартный код

[AutoRun]
open = имя_программы.exe
icon = имя_значка.ico

Разъяснения:
open – этот параметр указывает, какой файл нужно запускать при подключении диска или флешки
icon – этот параметр служит для отображения иконки (маленькая картинка, логотип) при просмотре дисков через «Мой компьютер».

Как создать файл «autorun.inf»

3. Сохраните в блокноте этот файл как «autorun.inf» в корне флэш или диска.

Если файл и иконку разместить в какую-то папку, например « file », тогда в файле autorun нужно указать к ним путь.
Это будет выглядеть следующим образом:

[autorun]
open = file /имя_программы.exe
icon = file /имя_значка.ico

Давайте посмотрим пример, как я использовал «autorun.inf» для DWD-диска. Моей задачей было сделать автоматический запуск программы с красивой иконкой.
Приступим:
1. Я создал файл «autorun.inf» с таким кодом:

[AutoRun]
open = WPI.exe
icon =icon.ico

2. Все файлы, которые я подготовил для диска вместе с файлом «autorun.inf» я записываю на диск через программу «NERO».

Внимание: файл «autorun.inf», WPI.exe, icon.ico должны находиться в корне диска.

Как создать Autorun для диска

Давайте разберем, все то, что я написал.

Когда я вставлю диск в компьютер, автоматически выполнится загрузка файла « WPI.exe », так как в параметрах « open » я указал « WPI.exe ».

Если зайти и посмотреть на вид диска через «Мой компьютер», можно увидеть красивую иконку, которая тоже загружается автоматически, благодаря параметру « icon ».
Кстати, если вы хотите создать красивые иконки ico, вы можете прочитать об этом тут.

Дополнительные возможности файла «autorun.inf».

Запуск PDF документа и HTML-страницы.
При помощи загрузочного файла «autorun.inf» можно запускать не только приложение «exe», но и файлы PDF или документы HTML-страницы.

Для этого в созданном файле « autorun.inf », пропишите такой код:

[autorun]
open =autorun.bat index.htm
icon =имя_значка.ico

Теперь таким же образом, как вы создавали файл « autorun.inf », создайте файл « autorun.bat », и впишите следующий код:

echo off
@start %1 %2 %3 %4 %5 %6 %7 %8 %9
@exit

Есть другой вариант с использованием команды ShellExecute :

[autorun]
ShellExecute =index.htm
icon = имя_значка.ico

Еще одна возможность в авторане, в меню автозапуска можно отобразить текст запуска. Для этого следует использовать команду action .
Это выглядит вот так:

[AutoRun]
open = имя_программы.exe
action =Программа для BlogGood-ru

Если ваши глаза устали видеть надпись «Съемный диск» и вы желаете ее поменять, то это можно сделать при помощи параметра label . Пропишите в файле Autorun.inf такой код:

[AutoRun]
open = имя_программы.exe
action = Программа для BlogGood-ru
icon =имя_иконки.ico
label = Крутая флешка

Конечно, изменить на флэшке надписи «Съемный диск» можно и без использования файла Autorun.inf, но это работает только в Windows XP. Думаю, вам эта информация пригодится.
Достаточно нажать правой кнопкой мыши на флэшку и в открывшемся окне выбрать «Переименовать» . Пишите любое название и THE END.

И напоследок: для создания файла «Autorun» вы можете воспользоваться программой Create Autorun. При помощи программы Create Autorun, вы сможете с легкостью создать автозапуск для дисков. Но это еще не все, к запуску можно присоединить какой-нибудь комментарий и настроить вид окна.

Как создать Autorun на диске или флешке? Когда вставляешь диск или флешку в компьютер, появляется стандартное окно, где предлагается выбрать действие (например, открыть папку). Это не всегда удобно, например, если диск с игрой или программой, есть смысл добавить на него файл автоматического запуска.

Создание Autorun.inf для флешки и диска за 5 минут

Когда к компьютеру подключается флешка или диск, система сразу проверяет, есть ли на них файл Autorun.inf . Если он есть, то сразу производится запуск.

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

Что такое Autorun.inf? Это обычный текстовый документ, его можно создать в блокноте. Много ума для того, чтобы его заполнить не требуется. Открываете блокнот и добавляете туда вот такие строчки:

  • [AutoRun]
  • open= программа.exe
  • icon= значок.ico

Вместо слова программа, необходимо указать название запускаемого файла. Вместо значок, название иконки. Всё, жмете сохранить и не забываете указать формат в названии:

Как создать Autorun на диске или флешке?

Этот текстовый файл нужно добавить на диск или флешку. В одной папке с ним должен находиться значок и файл в формате .exe (который будет запускаться).Следовательно, на флешке или диске должно всё выглядеть так:

Как создать Autorun на диске или флешке?

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

Если будете добавлять Autorun.inf в корневую папку, а значок или программа будут в других папках, адрес нужно будет указывать полностью (open= Audio/555/программа.exe

Если хотите, чтобы Autorun.inf выполнял дополнительные функции, добавляйте в него ещё пару строчек:

  • [AutoRun]
  • open= программа.exe
  • action= запуск программы Workion
  • icon= значок.ico
  • label= название флешки

Функция action открывает текст при запуске авторана. Строчка label пригодится, если вам надоело видеть привычную надпись «Съемный диск», она заменяет имя.

Также вместо программы можно запускать и другие файлы. Например, если прописать строчку ShellExecute=страничка.htm (вместо open= программа.exe) будет открываться HTML страничка, добавленная на флешку.

Если нужно создать оригинальный авторан, лучше использовать программу Create Autorun. Через неё можно добавить комментарии к автозапуску, а также настроить окно.

Времена дисков почти прошли, раньше многие создавали Autorun, занимаясь разными видами бизнеса (продавая диски с играми, передавая фотографии клиентам и т.д.).

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

Функция автозапуска компакт-дисков, предусмотренная почти во всех операционных системах, позволяет значительно облегчить жизнь пользователя. За управление автозапуском отвечает простой текстовый файл autorun.inf, который можно создать как с помощью одной из множества специальных утилит, так и самостоятельно – был бы текстовый редактор и минимальный набор знаний.

Способ первый


Файл значка тоже должен храниться в корневом каталоге диска.

Другой вариант

Если программа для автозапуска хранится не в корневом каталоге диска, в файле autorun.inf следует указать путь к ней:

[autorun]
open=папка1\папка1A\имя_программы.exe
icon=имя_значка.ico

Иногда для автоматического запуска программы бывает необходимо указать аргумент:

[autorun]
open=имя_программы.exe /аргумент
icon=имя_значка.ico

Автозапуск без программы

Если на диск записаны презентации, файлы PDF или документы HTML для клиентов, инвесторов и сотрудников, файл autorun.inf должен выглядеть немного иначе, а в корневом каталоге диска должен храниться командный файл DOS. В такой конфигурации файл autorun.inf запускает командный файл, а тот открывает записанные на диск файлы с помощью приложения по умолчанию, выбранного для данного типа файлов. Например:

А в файле autorun.bat должен содержаться следующий код:

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

Использование файла autorun.inf для автозапуска самозаписанных CD-дисков избавит пользователей от ненужной головной боли и повысит вероятность того, что важная информация достигнет получателей. А поскольку это – простой текстовый файл, его можно создать с помощью любого текстового редактора и просто записать на диск.

Способ второй

Файл autorun.inf, созданный первым способом, будет работать на любых компьютерах – за исключением тех, в которых функция автозапуска по тем или иным причинам в принципе не работает. Командный файл, используемый в первом случае, не предусматривает вероятности возникновения ошибок, а поэтому просто не срабатывает, если ошибки все-таки происходят.

В таком случае пригодится утилита оболочки от одного из сторонних производителей. В таких утилитах содержатся механизмы разрешения распространенных ошибок, что позволяет завершить процесс автозапуска даже при возникновении сбоя. В нашем примере используется утилита autorun.exe, которую можно загрузить с сайта компании Tarma Software Research. Утилиту Tarma можно свободно и бесплатно использовать как в индивидуальных, так и в коммерческих целях безо всяких лицензий и пользовательских соглашений.

Чтобы воспользоваться утилитой, нужно просто заменить autorun.bat на autorun.exe в файле autorun.inf. Тогда простой файл autorun.inf будет выглядеть так:

Единственное, что требуется – записать копию утилиты autorun.exe (8 Кб) в корневой каталог CD-диска. Утилита обладает и другими возможностями, позволяющими составлять файлы autorun.inf сложной структуры для более гибкого управления автозапуском.

Автор: Mark Kaelin
Перевод: SVET


Оцените статью: Голосов

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

Перейдем к действию. Вставляем флешку, открываем ее в проводнике, и на свободном от файлов месте нажимаем правой кнопкой мыши, предварительно зажав на клавиатуре клавиши CTRL+SHIFT. В открывшемся меню выбираем пункт Открыть окно команд.



Вводим следующие команды.


В окне флешки появится папка с именем autorun.inf.


Теперь, попробуем удалить созданную папку autorun.inf. С начала в через контекстное меню.



Папка не удаляется.

Теперь попробуем удалить ее через командную строку. Пишем следующие команды.


Удалить данную папку, можно. Но только в обратном порядке ее создания.


Дополнительно, можно сделать папку autorun.inf скрытой и системной. Для этого вводим команду.


Способ второй.

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

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

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

В моем случае это будет папка MFLDR с внутренней папкой ALL.


Отключаем наследование прав доступа, для внутренней папки. Нажимаем правой кнопкой мыши по папке, выбираем в меню пункт Свойства.


В открывшемся окне переходим на вкладку Безопасность, и жмем на кнопку Дополнительно.


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



Жмем на кнопку OK в обоих окнах.


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


В окне свойств диска, переходим на вкладку Безопасность и жмем на кнопку Дополнительно.


В дополнительных параметрах безопасности выбираем субъект Все и жмем на кнопку Изменить.


В открывшемся окне выставления прав разрешений, оставляем галочки на пунктах Чтение и выполнение, Список содержимого папки, Чтение. Остальное все отключаем. Жмем OK.


Закрываем предыдущие окна нажатием кнопки OK.


Возможно появится окно с предупреждение, жмем Продолжить во всех случаях.


Теперь у нас на руках флешка защищенная от записи, с возможностью записи файлов только в каталог MFLDR\ALL.

Читайте также: