[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 千浪 于 2008-8-23 17:05 发表
能不能这样.先把CMD.EXE复制为其他AMD.EXE,然后用注册表设置BAT用AMD.EXE来运行.

你可以设置一下实验咯。

直接点关闭按钮关闭Amd.exe试下就知道了。

其实与这个无关。

TOP

  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. ::下面的功能是一次调用。
  8. call :查找进程
  9. call :FINDEXISTPID
  10. call :守护进程
  11. start Check.vbs
  12. :REINPUT
  13.         echo -----------------------------------------
  14.         echo  输入:ExitCode 完全退出程序
  15.         echo -----------------------------------------
  16.         set /p "Input=请输入入口代码:"
  17.         if /i "%Input%"=="ExitCode" goto :EXITPROCESS_OK
  18. goto :REINPUT
  19. :查找进程
  20. :: 创建 vbs脚本,用于检测系统中运行的进程和改进程的pid。
  21. echo for each ps in getobject _>ps.vbs
  22. echo ^("winmgmts:\\.\root\cimv2:win32_process"^).instances_ >>ps.vbs
  23. echo if ps.name ="cmd.exe" Then wscript.echo ps.handle^&vbtab^&ps.name>>ps.vbs
  24. echo next>>ps.vbs
  25. goto :EOF
  26. :FINDEXISTPID
  27. :: 这里是获取进程的 进程的pid。 以便于以后使用。
  28.         if exist ExistPid.txt del ExistPid.txt
  29.         for /f "tokens=1,* " %%m in ('cscript //nologo ps.vbs') do echo %%m>>ExistPid.txt
  30.         for /f "tokens=1,* " %%m in ('cscript //nologo ps.vbs') do (
  31.                 type ExistPid.txt | find /i "%%m">nul && set "Pid=%%m"
  32.                 )
  33. goto :EOF
  34. :守护进程
  35. :: 写入一个vbs脚本,检测守护的cmd进程是否关闭,如果关闭则重新打开这个cmd脚本。
  36. :: 检测cmd进程是通过 进程的pid 功能完成的。
  37. echo set Cleaner=createobject^("wscript.shell"^)>Check.vbs
  38. echo do>>Check.vbs
  39. echo WScript.Sleep 100>>Check.vbs
  40. echo if not isProcessExists^("%Pid%"^) then>>Check.vbs
  41. echo Cleaner.run "ErrExit.cmd">>Check.vbs
  42. echo Exit do>>Check.vbs
  43. echo End if>>Check.vbs
  44. echo loop>>Check.vbs
  45. echo Function isProcessExists^(proName^)>>Check.vbs
  46. echo Set objWMIService = GetObject^("winmgmts:" ^& "{impersonationlevel=impersonate}^!\\.\root\cimv2"^)>>Check.vbs
  47. echo Set colProcessList = objWMIService.ExecQuery^("Select * from Win32_Process Where Handle='" ^& proName ^& "'"^)>>Check.vbs
  48. echo isProcessExists = ^(colProcessList.Count ^<^> 0^)>>Check.vbs
  49. echo End Function>>Check.vbs
  50. goto :EOF
  51. :EXITPROCESS_OK
  52. :: 这里是退出程序,也就是exit-code的入口点。。
  53. echo for each ps in getobject _>ps.vbs
  54. echo ^("winmgmts:\\.\root\cimv2:win32_process"^).instances_ >>ps.vbs
  55. echo if ps.name ="WScript.exe" Then wscript.echo ps.handle^&vbtab^&ps.name>>ps.vbs
  56. echo next>>ps.vbs
  57. for /f "tokens=1,* " %%i in ('cscript //nologo ps.vbs') do ntsd -c q -p %%i
  58. echo del ps.vbs>>deltemp.cmd
  59. echo del check.vbs>>deltemp.cmd
  60. echo del ErrExit.cmd>>deltemp.cmd
  61. echo del ExistPid.txt>>deltemp.cmd
  62. echo del run.vbs>>deltemp.cmd
  63. echo del deltemp.cmd>>deltemp.cmd
  64. echo set Cleaner=createobject^("wscript.shell"^)>>run.vbs
  65. echo Cleaner.run "cmd /c deltemp.cmd",^0>>run.vbs
  66. start run.vbs
  67. :EXIT
  68. exit
复制代码

对我写的部分代码的解析。。
只解释段代码。。批处理基础过关的人应该都可以看明白了。

TOP

顶起哦!!!
期待!

TOP

回复 32楼 的帖子

这批处理好牛,要是能用来控制其他程序不被杀就好了

TOP

按服务来加载,利用系统日志,然后以高特权账户登录,这样超级管理员是无法终止的

TOP

原帖由 everest79 于 2008-9-15 17:57 发表
按服务来加载,利用系统日志,然后以高特权账户登录,这样超级管理员是无法终止的

光说没用,写出来。。。。

呵呵

TOP

你自已太懒了,嘿嘿!

TOP

原帖由 everest79 于 2008-10-9 08:16 发表
你自已太懒了,嘿嘿!

怎么这么说我呢。。。。我至少还写了代码呀。

拜托,吧你的结论写出来吧。。。

我想批处理室的好多人都在拭目以待呢 。

TOP

LZ的代码中vbs的查找进程并不一定能准确的找到运行的批处理的pid,因为实际上找的是cmd.exe的。

TOP

原帖由 rat 于 2008-10-18 22:21 发表
LZ的代码中vbs的查找进程并不一定能准确的找到运行的批处理的pid,因为实际上找的是cmd.exe的。


刚才太冲了点。具体你研究吧。。

或者拿出更好的方案出来。。

[ 本帖最后由 flyinspace 于 2008-10-19 12:24 编辑 ]

TOP

set a=createobject("wscript.shell")
a.run "cmd /c @echo Can you close me? &pause>nul &exit",,true
a.run "cmd /c @echo 这是第二次 &pause>nul &exit",,true
wscript.quit

TOP

回复 40楼 的帖子

流氓一下……
set a=createobject("wscript.shell")
for i =  1 to 2 step 0
a.run "cmd /k @echo Can you close me? &pause>nul &exit",,true
next

TOP

这年头,人怎么这么强大的呢
批处理都能开发病毒了

TOP

老大,我把你这个p文件直接按键"shift+delete",再点关闭就死翘翘了,呵呵
老大继续完善程序,屏蔽这个bug.期待ing

[ 本帖最后由 qlcom 于 2008-12-18 21:18 编辑 ]

TOP

如果可以像Worm.Win32.AutoRun.enw的asue.exe和acer.exe进程互锁就可以了。

TOP

返回列表