Board logo

标题: [安全相关] 批处理一键结束非系统进程(测试版) [打印本页]

作者: cjiabing    时间: 2009-2-9 16:30     标题: 批处理一键结束非系统进程(测试版)

刚学批处理的时候学的东东,太烂了,丢人,修正修正一下:
  1. @echo off
  2. title !%0!
  3. taskkill /f /im explorer.exe
  4. for /f "skip=3 tokens=2" %%a in ('TASKLIST /FI "WINDOWTITLE  eq  %~n0"   /FI "STATUS eq running"') do set pcmd=%%a
  5. for /f "skip=3  tokens=1,2" %%a in ('tasklist') do echo %%a %%b|findstr /i /v "System smss.exe csrss.exe winlogon.exe services.exe lsass.exe svchost.exe conime.exe explorer.exe wmiprvse.exe Userinit.exe taskkill.exe spoolsv.exe ctfmon.exe alg.exe tasklist.exe qq.exe">>_npslist.txt
  6. for /f "tokens=1,2" %%a in (_npslist.txt) do (
  7. if /i "%%a"=="cmd.exe" (if not %%b==%pcmd% taskkill /f /t /pid %%b) else (taskkill /f /t /im %%a||NTSD -c q -P %%a)
  8. )
  9. start %windir%\explorer.exe
  10. del _npslist.txt
  11. pause
复制代码

以下是以前写的,留作纪念
_________________________________________________________________________
功能有限,代码写得也不够完美,但总算完成了,请大家批评指正!
       将本代码用记事本保存为“一键结束非系统进程.bat”,详细介绍请看上一篇博文《批处理:一键结束非系统进程》和《“一键结束非系统进程”辅助工具》。转载请注明出处。
  1. @echo off
  2. title 一键结束非系统进程
  3. MODE con: COLS=82 LINES=25
  4. COLOR 3C
  5. echo.                ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
  6. echo.                ☆                                            ★
  7. echo                 ★       一键结束非系统进程(测试版)           ☆
  8. echo                 ☆           BY:甲兵时代                     ★
  9. echo                 ★        http://hi.baidu.com/cjiabing        ☆
  10. echo.                ☆                                            ★
  11. echo.                ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
  12. echo.
  13. echo   ◇◇请仔细阅读使用说明◇◇
  14. echo *******************************************************************************
  15. echo.   1、本工具尚在测试阶段,使用具有一定风险,须自担风险。
  16. echo.   2、本工具适合于XP操作系统,最好将本工具直接放于盘符下运行。
  17. echo.   3、第一次使用须创建本系统的进程列表,请使用辅助工具获取代码,修改后
  18. echo.      分别替换后面标签3和标签4的代码。
  19. echo.   4、运行过程中如自动关闭,请删掉本工具产生的临时文件重新运行。
  20. echo.   5、临时文件1.bat—11.bat,1.txt—8.txt,ps.vbs,temp.bat,清理临时文件.bat
  21. echo.      本工具会自动清理,如清理失败请用 “清理临时文件.bat”手动清理。
  22. echo.   6、运行过程大概需要几分钟时间,如桌面长时间消失,请用ctrl+alt+del打开
  23. echo.      任务管理器,在新建任务中输入C:\WINDOWS\explorer.exe执行即可恢复桌面
  24. echo.   7、请保证文件名和代码的完整性,尝试修改本代码具有很大风险。
  25. echo.   8、第一次写批处理,本人博客“http://hi.baidu.com/cjiabing”欢迎你留言。
  26. echo *******************************************************************************
  27. pause
  28. for /l %%a in (30,-1,1) do set/p a= %%a<nul&ping /n 1 0.127.1>nul         
  29. :0
  30. echo set dd=0 >>清理临时文件.bat
  31. echo :del >>清理临时文件.bat
  32. echo set /a dd+=1 >>清理临时文件.bat
  33. echo del %%dd%%.txt >>清理临时文件.bat
  34. echo del %%dd%%.bat >>清理临时文件.bat
  35. echo if %%dd%% lss 11 goto del >>清理临时文件.bat
  36. echo del ps.vbs,temp.bat >>清理临时文件.bat
  37. :1
  38. set vv=0
  39. echo start 2.bat>>1.bat
  40. echo taskkill /t /f /im cmd.exe>>1.bat
  41. :loop
  42. set /a vv+=1
  43. set /a num=vv+1
  44. set /a str=vv-1
  45. ping/n 1 127.1>nul
  46. echo start %num%.bat>>%vv%.bat
  47. echo exit >>%vv%.bat
  48. if %vv% lss 10 goto loop
  49. if exist 1.bat start 1.bat
  50. echo for /f "skip=55 delims=" %%%%a in (一键结束非系统进程.bat) do echo %%%%a^>^>temp.bat >>11.bat
  51. echo start temp.bat>>11.bat
  52. echo exit >>11.bat
  53. ::if exist %vv%.bat start %vv%.bat
  54. ::★★★如不懂批处理,请不要修改以上任何内容,否则后果自负!!!★★★
  55. ::★★★修改以上内容和代码具有很大风险,请三思而后行!!!★★★
  56. :2
  57. @echo off
  58. echo 创建进程列表——8.txt
  59. echo for each ps in getobject _ >ps.vbs
  60. echo ("winmgmts:\\.\root\cimv2:win32_process").instances_ >>ps.vbs
  61. echo wscript.echo ps.handle^&vbtab^&ps.name^&vbtab^&ps.executablepath:next >>ps.vbs
  62. cscript //nologo ps.vbs>>8.txt
  63. :3
  64. echo ★标签3★
  65. echo 创建系统进程“名称”文本——1.txt
  66. echo 用本系统的进程名称代码替换以下代码。
  67. echo System >>1.txt
  68. echo System >>1.txt
  69. ::以上两行请记得保留。
  70. echo smss.exe >>1.txt
  71. echo csrss.exe >>1.txt
  72. echo winlogon.exe >>1.txt
  73. echo SERVICES.EXE >>1.txt
  74. echo LSASS.EXE >>1.txt
  75. echo SVCHOST.EXE >>1.txt
  76. echo SVCHOST.EXE >>1.txt
  77. echo SVCHOST.EXE >>1.txt
  78. echo SVCHOST.EXE >>1.txt
  79. echo SVCHOST.EXE >>1.txt
  80. echo EXPLORER.EXE >>1.txt
  81. echo SOUNDMAN.EXE >>1.txt
  82. echo spoolsv.exe >>1.txt
  83. echo ctfmon.exe >>1.txt
  84. echo SVCHOST.EXE >>1.txt
  85. echo alg.exe >>1.txt
  86. echo conime.exe >>1.txt
  87. echo cmd.exe >>1.txt
  88. echo cscript.exe >>1.txt
  89. echo wmiprvse.exe >>1.txt
  90. :4
  91. echo ★标签4★
  92. echo 创建系统进程“路径”文本——2.txt
  93. echo 第一次使用请用本系统的进程路径代码替换以下代码。
  94. echo Idle Process >>2.txt
  95. ::以上一行请记得保留。
  96. echo C:\WINDOWS\System32\smss.exe >>2.txt
  97. echo C:\WINDOWS\system32\winlogon.exe >>2.txt
  98. echo C:\WINDOWS\system32\services.exe >>2.txt
  99. echo C:\WINDOWS\system32\lsass.exe >>2.txt
  100. echo C:\WINDOWS\system32\svchost.exe >>2.txt
  101. echo C:\WINDOWS\System32\svchost.exe >>2.txt
  102. echo C:\WINDOWS\Explorer.EXE >>2.txt
  103. echo C:\WINDOWS\SOUNDMAN.EXE >>2.txt
  104. echo C:\WINDOWS\system32\spoolsv.exe >>2.txt
  105. echo C:\WINDOWS\system32\ctfmon.exe >>2.txt
  106. echo C:\WINDOWS\system32\svchost.exe >>2.txt
  107. echo C:\WINDOWS\system32\conime.exe >>2.txt
  108. echo C:\WINDOWS\system32\cmd.exe >>2.txt
  109. echo C:\WINDOWS\system32\cscript.exe >>2.txt
  110. :5
  111. for /f "tokens=1,3,*" %%i in (8.txt) do echo %%i %%j %%k>>3.txt
  112. set new=3.txt
  113. set old=2.txt
  114. set res=4.txt
  115. for /f "delims=" %%i in (%new%) do (
  116. findstr "%%i" %old%>nul ||echo %%i>>%res%
  117. )
  118. findstr /i /l "exe"   %res%>>5.txt
  119. for /f "tokens=1delims= " %%i in (5.txt) do taskkill /f /t /im %%i
  120. if "%errorlevel%" == "1" call :7
  121. :6
  122. for /f "tokens=2" %%i in (8.txt) do echo %%i>>6.txt
  123. set new=6.txt
  124. set old=1.txt
  125. set res=7.txt
  126. for /f "delims=" %%i in (%new%) do (
  127. findstr "%%i" %old%>nul || taskkill /f /t /im %%i
  128. )
  129. if "%errorlevel%" == "1" call :9
  130. :11
  131. start %windir%\explorer.exe
  132. echo del temp.bat>>清理临时文件.bat
  133. echo del 清理临时文件.bat^&exit >>清理临时文件.bat
  134. start 清理临时文件.bat&exit
  135. :7
  136. set var=0
  137. NTSD -c q -P %%i
  138. if "%errorlevel%" == "0" goto 8
  139. IF ERRORLEVEL 1 goto :eof
  140. :8
  141. set /a var+=1
  142. wmic process where Handle="%%i" call Terminate
  143. if %var% lss 20 goto 8
  144. IF ERRORLEVEL 1 goto 11
  145. echo.&echo 操作失败,请尝试其他办法。
  146. ping/n 3 127.0>nul&goto :eof
  147. :9
  148. set var=0
  149. NTSD -c q -Pn %%i
  150. if "%errorlevel%" == "0" goto 10
  151. IF ERRORLEVEL 1 goto :eof
  152. :10
  153. set /a var+=1
  154. wmic process where name="%%i" call terminate
  155. if %var% lss 20 goto 10
  156. IF ERRORLEVEL 1 goto 11
  157. echo.&echo 操作失败,请尝试其他办法。
  158. ping/n 3 127.0>nul&goto :eof
复制代码
本篇为原创,转载请注明出处。 http://hi.baidu.com/cjiabing     甲兵时代,为你服务。

[ 本帖最后由 cjiabing 于 2010-11-11 00:24 编辑 ]
作者: 随风    时间: 2009-2-9 16:45

期待大作。。。
作者: cjiabing    时间: 2009-2-9 17:54

原来是随风前辈,久仰大名!大作不敢当,代码已经放我博客,来不及转到论坛,第一次写批处理,请多多指教!只能手机上网不便多言。
作者: wxcute    时间: 2009-2-9 18:23

猜一下怪招,是不是复制一个 CMD.EXE 为其他名字,再基于新控制台运行批处理。
作者: Batcher    时间: 2009-2-9 21:29

建议把代码更新在顶楼,花不了几分钟时间吧,否则可能有为自己博客打广告之嫌。
作者: cjiabing    时间: 2009-2-10 00:19

你心急我更急,我电脑半年上不了网了,今天得上了半个钟好不容易发了个帖,还因为新手限制发在这里了,而手机又无法拷代码进来,所以只能占位了。再者先发博客也是慎重起见,今晚在同事机子做了进一步测试和完善,明天有时间再发。
作者: cjiabing    时间: 2009-2-10 00:30

原帖由 wxcute 于 2009-2-9 18:23 发表
猜一下怪招,是不是复制一个 CMD.EXE 为其他名字,再基于新控制台运行批处理。

没那么复杂,再猜猜!
我将其称为‘’批处理的可控核聚变‘’或‘’自生自灭死亡游戏‘’触发一点它就会瞬间产生许多子程序,同时引发一个关闭cmd.exe进程的命令,产生和关闭做时间赛跑,最后一般是程序胜利,但也不全是,遗憾。
作者: Batcher    时间: 2009-2-10 00:33     标题: 回复 6楼 的帖子

可以请版主帮你转移到你想要的版块
作者: yahan    时间: 2010-12-25 21:28

下来试试效果如何。。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2