Вот в общем недавно изучал... Мож кому тоже нужно.
Автор: 'Неизвестен'
Источник:
http://www.secnull.org/index.php?net=articles&act=show&aid=166 Для начала давай разбёремся в том, что же такое batch\'и. Прежде всего - это
пакетные дос файлы, которые содержат в себе в ascii виде набор досовских команд.
По-русски говоря, bat файл содержит в себе скрипт, интерпритатором служит
command.com.
Поясняю: после прочтения этой статьи, ты сможешь писать проги,
которые удаляют системные файлы, форматируют диски и тд. Главное, тебе для этого
понадобится только блокнот и прямые руки, никаких компиляторов и дебагеров не
требуется (бачи не такие примитивные, как тебе кажется - есть вирусы\\генераторы,
на них написанные).
И ещё. Я не буду описывать все возможные флаги(параметры)
каждой команды, только наиболее полезные.
Ну чё, готов?
Поехали!
Простые команды:
Для начала давай разбёремся в том, что же
такое 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\'ах, так как это довольно объёмные темы. Следующая статья будет как
раз посвещена им.