echo Checking if we have the following directory... & dir "E:\starcraft II" & echo Seems it does not exist.
echo Checking if we have the following directory... && dir "E:\starcraft II" && echo Seems it does not exist.
它们的区别是一目了然的,前者会有 Seems its not exist. 的输出,而后者却没有。
dir Z: & dir C: || echo Howdy
dir C: & dir Z: || echo Howdy
dir Z: && dir C: || echo Howdy
dir C: && dir Z: || echo Howdy
dir C: && dir C: || echo Howdy
dir C: || echo Howdy && echo Hi there
dir Z: || echo Howdy & echo Hi there
dir Z: || echo Howdy && echo Hi there
实验一下,看看结果是不是跟预期的一样。
为了方便作记录,我们可以执行类似下面的一条命令:dir %windir%\system32\*.exe>D:\%DATE:~0,10%的exe文件.txt 。其中,%windir% 是当前启动系统所在的目录,默认情况下通常是 C:\WINDOWS ;%DATE:~0,10% 是指当天的日期,比如2007-11-30,如果您没有忘记在3.1.4节里曾描述过的话。而整条命令的结果就是把 System32 里的所有可执行文件名称及信息记录到一个指定的文本文件里了。同理:我们可以记录 System32 里的所有 dll 文件:dir %windir%\system32\*.dll>D:\%DATE:~0,10%的dll文件.txt 。
在经过一段时间后,我们可以再次使用上面两条命令,从而得到两个新的记录文件。然后对比一下两个文件看看有什么差异。DOS 命令里提供了这样一条命令 fc ,它允许我们对两个文件之间的差异进行比较。使用时就像:fc d:\2007-11-30的exe文件.txt d:\2007-12-01的exe文件.txt 。[1]
netstat 用于显示当前的网络连接情况,参数 /a 显示所有连接和监听端口;/n 以数字形式显示地址和端口号。仅仅执行 netstat /a /n 后,您将会看到输出的结果为:各种协议下的本地和目标的地址及端口,以及它们的连接状态。
命令 find 则可以搜索指定的字符串,在指定的文件中。netstat /a /n 的输出结果将通过 | 成为命令 find 的第二个参数。因此整个的一条命令可以理解为:在网络连接状态的输出结果中,查找字符串 7626 ,如果查找成功的话,将输出被感染的提示,否则便提示未感染。&& 和 || 请参考第5.1.3节的例子。(端口 7626 是冰河所使用的默认端口。事实上,这并不是一个严谨的检测冰河木马存在的方法,但它却是说明组合命令和管道命令一个很好的例子)