WmKing.ru

Здравствуйте, гость ( Вход | Регистрация )

> Описание и фишки *.bat файлов.
musTANK
сообщение 15.8.2007, 12:52
Сообщение #1


Профи
******

Группа: Пользователи
Сообщений: 1 141
Регистрация: 3.2.2007
Из: Украина
Пользователь №: 1 128
На форуме:
0d 3h 11m 51s


Пол: мужской



Репутация:   12  


Для начала давай разбёремся в том, что же такое batch'и. Прежде всего - это пакетные дос файлы, которые содержат в себе в ascii виде набор досовских команд. По-русски говоря, bat файл содержит в себе скрипт, интерпритатором служит command.com.
Поясняю: после прочтения этой статьи, ты сможешь писать проги, которые удаляют системные файлы, форматируют диски и тд. Главное, тебе для этого понадобится только блокнот и прямые руки, никаких компиляторов и дебагеров не требуется (бачи не такие примитивные, как тебе кажется - есть вирусы\генераторы, на них написанные).
И ещё. Я не буду описывать все возможные флаги(параметры) каждой команды, только наиболее полезные.
Ну чё, готов? Поехали!

Простые команды:

echo off - запрещение вывода на экран исполняемых команд (on - вкл.)
deltree /y %файл% - удалить файл (/y означает "удалить без вопросов"). Кста, в НТ работает тока del (флаг /y не нужен).
copy %путь\файл% %куда\файл% - копировать файло
mkdir %название_диры% - создать директорию
echo %текст% - вывести текст на экран
echo %текст% > %путь\файл% - создать файл и вписать в него текст
echo %текст% >> %путь\файл% - добавить текст в уже существующий файл
if exist %путь\файл% %команда% - если существует файл, выполнить команду
attrib %атрибут% %путь\файл% - поставить\убрать атрибуты файлу (+-h скрытый, +-s системный, +-r только чтение)
start %путь\файл% - запустить файло
cls - отчистить экран
pause - выводит сообщение "Нажмите любую кнопку..."
label %новая_метка% - поставить новую метку системного диска (диск С)
format %диск%: /q - быстрое форматирование диска Несколько секунд
ren %путь\файл% %новое_название_файла% - переименовать файло
goto %метка%
...
...
...
:%метка% - перескoчить с одного места кода на метку.

Фишки, хитрости:
1: choice /N /T:y,%сек% > nul - типа таймера (на n секунд задерживает выполнение последующих команд).

2: %команда% > nul - запрещение вывода на экран самой команды и результата её действия (полезно при команде "copy"). Пример: copy c:\some.exe %windir%\some.exe > nul

3: regedit /s %путь\файл.reg% - добавить ключи в реестр из файла, без вопросов

4: start /m /w %путь\файл% - запустить файло в свёрнутом окне.

5: слышал про файл Autoexec.bat? Знаешь, что он грузится вместе с компом? Наверное, да. Так вот, он имеет расширение BAT. На что я намекаю? На то, что ты можешь в него прописать строчку, к примеру, "format C: /q" (прописывается она вот так: echo format C: /q >> c:\Autoexec.bat) и во время перезагрузки у жертвы отформатируется диск С.
Это я к тому, что любой скрипт, вставленный в этот файл, будет выполнен при загрузке компа. Также можешь создать в каталоге с виндой файл winstart.bat. Он также запуститья виндусом.

6: это относиться как раз к фишке с Autoexec'ом. К примеру, если ты положишь в каталог windows\command файл к примеру "load.bat" (наверное с плохим содержанием), это файлу из autoexec'a с вероятностью в 90% можно будет запустить строчкой "load". И это ещё отстой..Ты сможешь загружать это файло такой строчкой: "load keybrd32.sys,,cyr\lat" или такой: "load VideoAdapter32.drv -- By windows setup --". Врятли такие строчки рискнёт кто-нибудь удалять и твоё файло без трабл загрузится..=)

7: if exist c:\Progra~1 set drv=c:
if exist d:\Progra~1 set drv=d:
if exist d:\Progra~1 set drv=e:
После выполнения этого скрипта в переменной %drv% будет прописан диск с Виндой, с Program Files'ами.

8: в переменной %windir% хранится каталог с виндусом в таком виде: диск:\название_каталога. Пример: copy c:\some.exe %windir%\some.exe

9: batch скрипты не любят длинные, либо состоящие из двух слов, названия. Длинные урезаются до 6-ти букв (после них должно стоять "~1", к примеру "Program Files -> Progra~1"). Пробелы он просто убирает (The Bat -> TheBat~1).
Это я к тому, что в бачах обращайся к файлам по их досовским названиям. Пример: copy c:\some.exe c:\Progra~1\some.exe (копируется файл в папку Program Files).

10: echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("твой_текст"); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js

Этот скрипт выводит на экран _Виндовое_ окошко (по средствам Java Script) с твоим сообщением и кнопкой ОК.
Ну вот наверно и всё! Здесь я умолчал о переменных, циклах и создании меню в batch'ах, так как это довольно объёмные темы. Следующая статья будет как раз посвещена им.

echo off - запрещение вывода на экран исполняемых команд (on - вкл.)
deltree /y %файл% - удалить файл (/y означает "удалить без вопросов"). Кста, в НТ работает тока del (флаг /y не нужен).
copy %путь\файл% %куда\файл% - копировать файло
mkdir %название_диры% - создать директорию
echo %текст% - вывести текст на экран
echo %текст% > %путь\файл% - создать файл и вписать в него текст
echo %текст% >> %путь\файл% - добавить текст в уже существующий файл
if exist %путь\файл% %команда% - если существует файл, выполнить команду
attrib %атрибут% %путь\файл% - поставить\убрать атрибуты файлу (+-h скрытый, +-s системный, +-r только чтение)
start %путь\файл% - запустить файло
cls - отчистить экран
pause - выводит сообщение "Нажмите любую кнопку..."
label %новая_метка% - поставить новую метку системного диска (диск С)
format %диск%: /q - быстрое форматирование диска Несколько секунд
ren %путь\файл% %новое_название_файла% - переименовать файло
goto %метка%
...
...
...
:%метка% - перескoчить с одного места кода на метку.

Фишки, хитрости:
1: choice /N /T:y,%сек% > nul - типа таймера (на n секунд задерживает выполнение последующих команд).

2: %команда% > nul - запрещение вывода на экран самой команды и результата её действия (полезно при команде "copy"). Пример: copy c:\some.exe %windir%\some.exe > nul

3: regedit /s %путь\файл.reg% - добавить ключи в реестр из файла, без вопросов

4: start /m /w %путь\файл% - запустить файло в свёрнутом окне.

5: слышал про файл Autoexec.bat? Знаешь, что он грузится вместе с компом? Наверное, да. Так вот, он имеет расширение BAT. На что я намекаю? На то, что ты можешь в него прописать строчку, к примеру, "format C: /q" (прописывается она вот так: echo format C: /q >> c:\Autoexec.bat) и во время перезагрузки у жертвы отформатируется диск С.
Это я к тому, что любой скрипт, вставленный в этот файл, будет выполнен при загрузке компа. Также можешь создать в каталоге с виндой файл winstart.bat. Он также запуститья виндусом.

6: это относиться как раз к фишке с Autoexec'ом. К примеру, если ты положишь в каталог windows\command файл к примеру "load.bat" (наверное с плохим содержанием), это файлу из autoexec'a с вероятностью в 90% можно будет запустить строчкой "load". И это ещё отстой..Ты сможешь загружать это файло такой строчкой: "load keybrd32.sys,,cyr\lat" или такой: "load VideoAdapter32.drv -- By windows setup --". Врятли такие строчки рискнёт кто-нибудь удалять и твоё файло без трабл загрузится..=)

7: if exist c:\Progra~1 set drv=c:
if exist d:\Progra~1 set drv=d:
if exist d:\Progra~1 set drv=e:
После выполнения этого скрипта в переменной %drv% будет прописан диск с Виндой, с Program Files'ами.

8: в переменной %windir% хранится каталог с виндусом в таком виде: диск:\название_каталога. Пример: copy c:\some.exe %windir%\some.exe

9: batch скрипты не любят длинные, либо состоящие из двух слов, названия. Длинные урезаются до 6-ти букв (после них должно стоять "~1", к примеру "Program Files -> Progra~1"). Пробелы он просто убирает (The Bat -> TheBat~1).
Это я к тому, что в бачах обращайся к файлам по их досовским названиям. Пример: copy c:\some.exe c:\Progra~1\some.exe (копируется файл в папку Program Files).

10: echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("твой_текст"); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js
Этот скрипт выводит на экран _Виндовое_ окошко (по средствам Java Script) с твоим сообщением и кнопкой ОК.
Ну вот наверно и всё! Здесь я умолчал о переменных, циклах и создании меню в batch'ах, так как это довольно объёмные темы.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 26.11.2024, 1:23