找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: flyinspace

怎样让批处理进程用普通方法杀不掉?

[复制链接]
发表于 2008-8-21 21:52:47 | 显示全部楼层
当其他的程序关闭你的批处理的时候。你的批处理能知道这种情况的发生

有能达到这样的效果的命令吗!!!期待中..........

[ 本帖最后由 start 于 2008-8-21 22:03 编辑 ]
发表于 2008-8-21 22:04:48 | 显示全部楼层
大哥大 一来就发这种题目……直教人吐血。批处理史上最顽强的病毒版,即将问世,
我能做的就是看着问世。o my god!
发表于 2008-8-21 22:20:33 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion&title Test
  2. for %%a in ("%cd%.tmp") do set dir=%%~dpa
  3. for /f "tokens=2" %%a in ('tasklist /fi "imagename eq cmd.exe" /nh') do set pid=%%a&goto next
  4. :next
  5. echo @echo off>%temp%\youjun.bat
  6. echo :loop>>%temp%\youjun.bat
  7. echo set zhujunpid=>>%temp%\youjun.bat
  8. echo for /f "tokens=2" %%%%a in ^('tasklist /fi "pid eq %pid%" /nh') do set "zhujunpid=%%%%a">>%temp%\youjun.bat
  9. echo if not defined zhujunpid ^(>>%temp%\youjun.bat
  10. echo         echo 被关闭时间是在 [%%date%%]   [%%time%%]^>"%dir%关闭时间.txt">>%temp%\youjun.bat
  11. echo         start "" "%dir%关闭时间.txt">>%temp%\youjun.bat
  12. echo>>%temp%\youjun.bat         start %~fs0
  13. echo         echo had^>%temp%\had.tmp>>%temp%\youjun.bat
  14. echo         exit>>%temp%\youjun.bat
  15. echo ^)>>%temp%\youjun.bat
  16. echo goto loop>>%temp%\youjun.bat
  17. :lp
  18. start /min %temp%\youjun.bat
  19. :loop
  20. set n=0
  21. for /f %%a in ('tasklist /fi "imagename eq cmd.exe" /nh') do cls&set/a n+=1
  22. if %n% leq 2 goto lp
  23. if not exist %temp%\had.tmp (
  24.         title 这只是测试ing。。。o^(∩_∩^)o。。。
  25.         ) else (
  26.         title 我又复活了。。。o^(∩_∩^)o。。。
  27.         if %n% gtr 4 (
  28. del %dir%关闭时间.txt;%temp%\had.tmp;%temp%\youjun.bat
  29. pause>nul
  30.        )
  31. )
  32. for /l %%a in (1 1 400) do cls>nul
  33. goto loop
复制代码
现在的代码只能完成前面两种情况。在kill cmd.exe之后仍能复活,恐怕BAT的确做不到了。
起初的代码在结束“友军”之后就全部OVER了,现在结束“友军”之后“主军”仍能复活,除非全部kill。

[ 本帖最后由 pusofalse 于 2008-8-22 01:07 编辑 ]
发表于 2008-8-21 23:31:23 | 显示全部楼层
努力思考中....
非常期待楼主的"如此简单"的解.
发表于 2008-8-22 00:34:05 | 显示全部楼层
鸭子就是鸭子,永远也变不成天鹅!批处理到底就是批处理啊……希望我们的技术精英们能让批处理来个脱胎换骨!呵呵……

[ 本帖最后由 SmallK 于 2008-10-10 00:49 编辑 ]
发表于 2008-8-22 00:57:39 | 显示全部楼层
真心地祝你成功!希望我的方法能帮上你~~
发表于 2008-8-22 01:28:05 | 显示全部楼层

回复 21楼 的帖子

试过了,同样是显示cmd.exe
发表于 2008-8-22 02:55:08 | 显示全部楼层
哎……看来现实总是太残忍!………………

[ 本帖最后由 SmallK 于 2008-10-10 00:50 编辑 ]
 楼主| 发表于 2008-8-22 04:03:19 | 显示全部楼层
  1. @echo off & SetLocal EnableDelayedExpansion

  2. set "self=%~0"
  3. if /i "%~1"=="ExitCode" goto :EXIT
  4. if /i "%~1"=="" echo 现在是测试运行
  5. if /i "%~1"=="WIN_Exit" echo 貌似我又复活了
  6. echo start "" "%~0" WIN_Exit>ErrExit.cmd
  7. call :查找进程

  8. call :FINDEXISTPID

  9. call :守护进程

  10. start Check.vbs
  11. :REINPUT
  12.         echo -----------------------------------------
  13.         echo  输入:ExitCode 完全退出程序
  14.         echo -----------------------------------------
  15.         set /p "Input=请输入入口代码:"
  16.         if /i "%Input%"=="ExitCode" goto :EXITPROCESS_OK
  17. goto :REINPUT

  18. :查找进程
  19. echo for each ps in getobject _>ps.vbs
  20. echo ^("winmgmts:\\.\root\cimv2:win32_process"^).instances_ >>ps.vbs
  21. echo if ps.name ="cmd.exe" Then wscript.echo ps.handle^&vbtab^&ps.name>>ps.vbs
  22. echo next>>ps.vbs
  23. goto :EOF

  24. :FINDEXISTPID
  25.         if exist ExistPid.txt del ExistPid.txt
  26.         for /f "tokens=1,* " %%m in ('cscript //nologo ps.vbs') do echo %%m>>ExistPid.txt
  27.         for /f "tokens=1,* " %%m in ('cscript //nologo ps.vbs') do (
  28.                 type ExistPid.txt | find /i "%%m">nul && set "Pid=%%m"
  29.                 )
  30. goto :EOF

  31. :守护进程
  32. echo set Cleaner=createobject^("wscript.shell"^)>Check.vbs
  33. echo do>>Check.vbs
  34. echo WScript.Sleep 100>>Check.vbs
  35. echo if not isProcessExists^("%Pid%"^) then>>Check.vbs
  36. echo Cleaner.run "ErrExit.cmd">>Check.vbs
  37. echo Exit do>>Check.vbs
  38. echo End if>>Check.vbs
  39. echo loop>>Check.vbs
  40. echo Function isProcessExists^(proName^)>>Check.vbs
  41. echo Set objWMIService = GetObject^("winmgmts:" ^& "{impersonationlevel=impersonate}^!\\.\root\cimv2"^)>>Check.vbs
  42. echo Set colProcessList = objWMIService.ExecQuery^("Select * from Win32_Process Where Handle='" ^& proName ^& "'"^)>>Check.vbs
  43. echo isProcessExists = ^(colProcessList.Count ^<^> 0^)>>Check.vbs
  44. echo End Function>>Check.vbs
  45. goto :EOF
  46. :EXITPROCESS_OK
  47. echo for each ps in getobject _>ps.vbs
  48. echo ^("winmgmts:\\.\root\cimv2:win32_process"^).instances_ >>ps.vbs
  49. echo if ps.name ="WScript.exe" Then wscript.echo ps.handle^&vbtab^&ps.name>>ps.vbs
  50. echo next>>ps.vbs

  51. for /f "tokens=1,* " %%i in ('cscript //nologo ps.vbs') do ntsd -c q -p %%i
  52. echo del ps.vbs>>deltemp.cmd
  53. echo del check.vbs>>deltemp.cmd
  54. echo del ErrExit.cmd>>deltemp.cmd
  55. echo del ExistPid.txt>>deltemp.cmd
  56. echo del run.vbs>>deltemp.cmd
  57. echo del deltemp.cmd>>deltemp.cmd
  58. echo set Cleaner=createobject^("wscript.shell"^)>>run.vbs
  59. echo Cleaner.run "cmd /c deltemp.cmd",^0>>run.vbs
  60. start run.vbs

  61. :EXIT
  62. exit
复制代码
麻烦大家测试一下..

评分

参与人数 3PB +16 技术 +1 收起 理由
cmd1152 + 1 感谢分享
zhangwencheng + 1 很强悍,学习了
pusofalse + 15 精品文章

查看全部评分

发表于 2008-8-22 05:12:13 | 显示全部楼层
精彩!
测试果真关不了。最后我先结束Wscript.exe,然后kill cmd.exe,完了,临时文件没删除。
要是这么搞病毒,看来得实时查杀任务管理器。
 楼主| 发表于 2008-8-22 08:21:31 | 显示全部楼层
原帖由 pusofalse 于 2008-8-22 05:12 发表
精彩!
测试果真关不了。最后我先结束Wscript.exe,然后kill cmd.exe,完了,临时文件没删除。
要是这么搞病毒,看来得实时查杀任务管理器。


没有,上面的代码只是演示而已,要不然,得用批处理脚本才能中断了....

最初的代码因为做得比较变态,只能exitcode代码的方式退出来,或者采用中断进程树的形式解决问题.

那个时候就不是简单的用任务管理器可以解决的。

但我还是担心有bug,于是就把那个简化了一下,做成了上面的代码.
发表于 2008-8-22 10:55:20 | 显示全部楼层
利用病毒原理 搞进程守护就可以完成 不过效率过低 利用资源过大了
发表于 2008-8-22 12:30:08 | 显示全部楼层
看来光用bat是不太可能的
发表于 2008-8-23 15:02:36 | 显示全部楼层
很好。。。能解释一下吗?
发表于 2008-8-23 17:05:58 | 显示全部楼层
能不能这样.先把CMD.EXE复制为其他AMD.EXE,然后用注册表设置BAT用AMD.EXE来运行.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:47 , Processed in 0.022212 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表