早在DOS时代,操作系统还没有如今这么方便的操作和简单易懂。当时要叫系统做事,必须在命令行里敲出命令,让系统执行。还记得我也是在那个时代把学校的操作系统给格了,后来老师来找我重装,哈哈~ 当windows基于图形界面的操作系统出来之后,命令行的普及率也就明显降低了。如今更是有很多人,都不知道Windows其实也是支持命令行命令的(命令提示符)。当然,另外还有一批人,他们对命令行却是非常的着迷,因为命令行是一个另类的与操作系统对话的窗口,如果有人知道已成为历史的“空连接入侵”的话,就知道命令提示符的强大了。
基于此,有很多人开始学习一种新的编程——“批处理”。这是一种简单易学的编程,因为它其实就是由操作系统解释执行的脚本程序,它的每一句其实就是一个命令行命令。建议大家了解性的学习一点,很有用的。有人也许会疑问,这和C语言编病毒有什么关系呢?哈哈,这正是我们开始让C语言接触操作系统的第一步。还记得上一篇的最后,给大家介绍的那个函数system()吗?这可以作为C语言初学者接触操作系统的第一步。具体怎么做呢?我希望大家能在看这个之前首先看看命令提示符下的一些基本命令。而实际的调用很简单,函数原型为:int system( const char *command ) 。
这样说估计有点抽象,大家还是来看一个例子吧:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("dir C://");
system("pause");
return 0;
}
这样,就可以在命令提示符下显示出你C盘的文件和文件夹(当然是没有隐藏的,若要显示隐藏,可使用"dir C:// /a" 这样的命令,具体自己查看命令行命令吧。)显示如下:
也许这个"dir"命令不能引起你的兴趣,但是命令行命令本身是非常强大的。比如我们可以用system("tasklist");看看,这个外部命令将显示出你电脑如今正在运行的进程,当然不仅仅如此,它还可以查看每个进程所加载的模块等等功能。除此之外,你甚至还可以用命令提示符来调用你自己的程序。总之,这个与操作系统对话的函数是个非常方便非常强大的工具。
但是,大家也许已经发现,如果一个病毒,仅仅将它想取得的信息显示在命令提示符的窗口上是远远不符合要求的。我们需要这样的信息能作为文件保存在硬盘里,这样在需要时就可以编程,在文件里查找有用的信息。那么如何将本来应该显示在窗口上的信息保存到文件里呢?这样的方法不止一种。我们在这一节仅讲最简单的,一说大家都明白的方法,它本身也是命令行命令的一部分,所以大家自己查资料吧,我就给出解决方法就好了。
比如,你把你现在正在运行的进程放到当前文件夹下的"info.txt"里(注:此文件本身不存在,会新建,若存在则覆盖。),那么你可以这样:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("tasklist >info.txt");
system("pause");
return 0;
}
这个程序在我电脑上运行之后,结果就会保存到程序所在文件夹下的"info.txt"文件里,打开这个文件,大家可以看到这样的结果:
其中命令中的“>info.txt” 是一个输出到文件的输出重定向。当然有输出重定向,就有输入重定向。大家也许会问,到底输入输出重定向是个什么意思呢?大家就根据这个例子,大胆的发挥想象吧~我们下一节,在具体讨论输入输出重定向的问题。