Board logo

标题: [原创]批处理隐藏运行的10种思路 [打印本页]

作者: electronixtar     时间: 2006-10-16 21:26    标题: [原创]批处理隐藏运行的10种思路

1.基础

HideRun.vbs
CODE:  [Copy to clipboard]
CreateObject("WScript.Shell").Run "cmd /cD:\test.bat",0
其中D:\test.bat是你的批处理路径
HideRun.bat
CODE:  [Copy to clipboard]
echo CreateObject("WScript.Shell").Run "cmd /cD:\test.bat",0>$tmp.vbs
cscript.exe /e:vbscript $tmp.vbs
del $tmp.vbs
这个批处理其实不能使其批处理本身隐藏,但是下面大部分隐藏调用批处理的原理和基础。
HideRun.js
CODE:  [Copy to clipboard]
new ActiveXObject('WScript.Shell').Run('cmd /cD:\Test.bat',0);
用Javascript有什么好处呢?js的字符串变量可以用单引号,从而方便命令行作为参数调用,而且js很好的支持多行语句用 ; 分隔写成一行。要注意的是:js要区分大小写,方法必须用括号,结尾必须有分号。所以就成了下面的命令:
CODE:  [Copy to clipboard]
mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /cD:\test.bat',0);window.close()"
2.用快捷方式

如果要使一个批处理本身隐藏,可以参考附件里的一个快捷方式,修改附件中的相关路径即可隐藏启动你的批处理。可以用vbs来建立一个 .lnk,其实用批处理也行(先echo一个vbs出来)

3.利用系统服务

可以用sc建立一个系统服务然后启动这个服务来启动批处理。缺点是启动服务较慢,需要管理员权限
查考这个帖子,
http://www.cn-dos.net/forum/view ... =%E6%9C%8D%E5%8A%A1
asbai 兄的大作,极大的方便了我们的使用。
CODE:  [Copy to clipboard]
runassrv add /cmdline:"C:\Windows\System32\cmd.exe /cD:\test.bat" /name:"mysrv"
net start mysrv
4.利用at计划任务

用at可以建立一个计划任务,在不输入 /interactive 参数可以后台运行。但是建使用at必须有管理员权限
CODE:  [Copy to clipboard]
at 09:10 "cmd /cD:\Test.bat"
然后在 9:10 系统就会自动后台以SYSTEM权限运行这个bat

5.利用ftype文件关联

综合上面的技术,使所有批处理都隐藏运行
CODE:  [Copy to clipboard]
ftype batfile=C:\Windows\System32\mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c%1',0);window.close();"
大家可以讨论下下面的思路,目前没有明确的方法,但是理论上是可行的

6.rundll32

其实这个方法只是理论上估计的,这里提出来占个位置,留个记号,等待高手研究
rundll32可以调用 dll 里的API,如果有个dll可以隐藏run一个exe就可以实现隐藏启动批处理,呵呵。目前我也没找到方法。

7.其他用户

Windows 2k/XP支持多用户,如果能在后台登陆另一个账户的桌面然后运行一个批处理,就能完全达到隐藏的目的

8.bat2vbs

这个方法只是一个不是很成熟的思路。
查考这个帖子:
http://www.cn-dos.net/forum/view ... p;highlight=exe2bat
这使我们产生了一个想法:把bat转换成vbs,然后vbs生成一个临时bat文件,然后WScript.Shell.Run隐藏启动这个临时bat

9. .NET编译

参考这个帖子:
http://www.cn-dos.net/forum/view ... hlight=script%2Bnet
里面提到了一个 .NET Warpper,我们完全可以利用系统自带的组件把bat编译到 exe 当中。如果bat不涉及交互,exe自然就安静的运行了。

10.注入汇编

最后向大家推出的今天最隆重的,ASCII Assembly Code专家 Herbert Kleebauer 的又一力作:showwin.exe

  Quote:
showwin.exe let you minimize/maximize/hide the command window
within a batch program (requires W2k or better).


Usage:  showwin.exe number


0 SW_HIDE
   Hides the window and activates another window.


1 SW_SHOWNORMAL
   Activates and displays a window. If the window is minimized or maximized,
   the system restores it to its original size and position. An application
   should specify this flag when displaying the window for the first time.


2 SW_SHOWMINIMIZED
   Activates the window and displays it as a minimized window.


3 SW_MAXIMIZE
   Maximizes the specified window.


3 SW_SHOWMAXIMIZED
   Activates the window and displays it as a maximized window.


4 SW_SHOWNOACTIVATE
   Displays a window in its most recent size and position. This value is
   similar to SW_SHOWNORMAL, except the window is not actived.


5 SW_SHOW
   Activates the window and displays it in its current size and position.


6 SW_MINIMIZE
   Minimizes the specified window and activates the next top-level window
   in the Z order.


7 SW_SHOWMINNOACTIVE
   Displays the window as a minimized window. This value is similar to
   SW_SHOWMINIMIZED, except the window is not activated.


8 SW_SHOWNA
   Displays the window in its current size and position. This value is
   similar to SW_SHOW, except the window is not activated.


9 SW_RESTORE
   Activates and displays the window. If the window is minimized or maximized,
   the system restores it to its original size and position. An application
   should specify this flag when restoring a minimized window.


10 SW_SHOWDEFAULT
   Sets the show state based on the SW_ value specified in the STARTUPINFO
   structure passed to the CreateProcess function by the program that
   started the application.


11 SW_FORCEMINIMIZE
   Windows 2000/XP: Minimizes a window, even if the thread that owns the
   window is not responding. This flag should only be used when minimizing
   windows from a different thread.


---------------------------------------------------------------------------


A simple example:


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>showwin.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>showwin.com
echo T}{zE~@gwkBG@OEKcUt`E}@mqqBsy?seHBEaPhxr?@zAB`LrPEyoDt@Cj?>>showwin.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>showwin.com
echo FEvAUSQ?_YLTQ@@?~QCo_F~RDU@?aU?@MQ_AMy1GHs?Gw`LbLK@shM`S_d>>showwin.com
echo bD_nsDddlTr_sPdlnTcnaTv_xP_ngD_rhDhsrT_kkDhrtT_fmDRNCTILk?>>showwin.com
echo staThg_So_rPfnqTl`qTdq_ShtpTrdqThV_Sqrm@ILm?O?cOKFDP?@@?dx>>showwin.com
echo OdFUu?N?_B@J@??KD?HUA?QOGB_QO?F?SCAQO?UDF?UCE?Q_F?DUA?CUB?>>showwin.com
echo OFO?FOS?DUO?IUO?FOW?RU{OWFO?mYU?wdsTeQs@OQ@?QAQ?LUA?_F_og~>>showwin.com
echo UODUO?FOSAFOeAUOyAO_DCSHUOOQO?OCFGuHUOGFO?TUO?DRTTqrQ@kcmS>>showwin.com
echo gFkPFUO?ngRThVvTncmTJFvPMQDTrKDDcmqOFkkDFOSAFOeAUOyAdFFSnB>>showwin.com
echo sT`llTKcmTdmhTFQ@PBsdTrmnTdknTmhVTvncTwDSSOshTbnqTrrdTT~?K>>showwin.com
echo ?OGOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it\=upkNQD??OuQsQG[i?>>showwin.com
echo RwrqosHy?Mjmv\@IuBlpUrHdjNAslF~mH}OKT?U??PT~OL?O?O?i?COT~B>>showwin.com
echo U?OCU?YF0x>>showwin.com


showwin.com>showwin.exe
del showwin.com


dir


:: wait 4 seconds
ping -n 4 localhost >nul


:: hide window
showwin.exe 0


dir /b


:: wait 4 seconds
ping -n 4 localhost >nul


:: show window
showwin.exe 5


:: wait 4 seconds
ping -n 4 localhost >nul


del showwin.exe

原帖地址在
http://groups.google.com/group/a ... ad/b30d93c7f43b6731
问题是我后脸皮发的。嘿嘿
不过我还没有测试成功。估计是keyboard layout和language/code page不同造成的

出于个人意愿。此帖拒绝外传。违者斩,嘿嘿
里面绝大多数技巧在这个论坛里早就出现了,所以感谢论坛里的朋友、前辈们的启迪
大家还有什么好的方法、思路也都发上来呀


[ Last edited by electronixtar on 2006-10-16 at 21:43 ]
附件 1: HideRun.lnk.rar (2006-10-16 21:28, 873 bytes, 下载附件所需积分 1 点 ,下载次数: 679)

作者: pengfei     时间: 2006-10-16 21:32
经典, 沙发先~~~
作者: NaturalJ0     时间: 2006-10-16 21:33
文件 -> 另存为...
作者: maya0su     时间: 2006-10-16 22:55
那个解决2,有意思!
下载下来后,发现是调用一MSHTA.EXE的程序
可是在CMD下,竟然无法查看这个程序的使用方法
直接运行这个程序,也看不出有什么不妥
郁闷ing……
作者: electronixtar     时间: 2006-10-17 00:38
mshta 就是 .hta 文件的宿主程序,可以直接用vbs/js语句
作者: vkill     时间: 2006-10-17 00:49
经典~
作者: fastslz     时间: 2006-10-17 01:09
经典~
不过对于那些喜欢用批处理干坏事的人士也有福了...
作者: benteng302     时间: 2006-10-17 02:42
简直台经典了。另存了
作者: electronixtar     时间: 2006-10-17 23:56
其实稍微改以下就可以实现exe的隐藏启动的。

大家还有没有其他的方法啊,都放出来啊
作者: vlq5299     时间: 2006-12-5 02:59
不错,谢谢了
作者: vkill     时间: 2006-12-18 04:35
http://bbs.wglm.net/上看到的

1、可以把批处理用 快速批处理文件编译器 编成exe文件执行,在选项中把模式改为 幽灵模式就行了。
3、在组策略中开机脚本中调用
作者: redtek     时间: 2006-12-18 04:55
精彩!!!收藏!!!
作者: fjcyz     时间: 2006-12-23 11:10
记号,有收获.
作者: scriptor     时间: 2006-12-23 11:31    标题: My idea!

Just using it in CMD-Line,  you can hide a batch file running background.

Of course , if there is not right, please criticise it.

Thanks!

[ Last edited by scriptor on 2007-1-13 at 02:24 PM ]
作者: zfb     时间: 2007-1-10 22:46
哎,又要上一层次,就是看不太懂啊,一、基础就不懂,有牛人详细解释就好了,高手们可能要说了:哎,对你我都不知道从哪里开始说了.
寄希望于:willsort、无奈何等斑主
作者: nicholasmaxwell     时间: 2007-1-14 02:15
我靠!楼主真是高手!
作者: redtek     时间: 2007-1-23 01:26
狂顶+欣赏~~~
作者: happy3     时间: 2007-1-24 06:33
不错,谢谢了 !!!
作者: zhenyun168     时间: 2007-1-27 14:00
收了~呵呵~
作者: xuduo     时间: 2007-1-30 16:26
我的批处理是一个每5秒扫描一个文件,它将长期运行,把它隐藏后,如何恢复呢?
请教各位高手!
作者: hngaoshou     时间: 2007-1-30 23:45
经典啊!
作者: eternitelove     时间: 2007-2-3 05:33    标题:


作者: ADM     时间: 2007-2-3 10:24
第10个方法的example竟然被有些人当作自己的作品发了出来,我开始还以为他真有那么强呢:)
作者: zgren1979     时间: 2007-2-3 11:24
漫漫消化.....征途漫漫......多谢楼主...很有启发
作者: 6158119     时间: 2007-2-4 10:57
经典~
作者: 无奈何     时间: 2007-2-4 11:55
水一贴
俺就笨多了只会用现成的工具,隐藏运行一般使用 nircmd.exe 和 cmdow.exe ,只是都是第三方工具只能在自己的机器上鼓捣鼓捣。
有兴趣的可以玩玩
nircmd:http://www.nirsoft.net/
cmdow:http://www.commandline.co.uk
作者: vkill     时间: 2007-2-4 18:30


  Quote:
Originally posted by 无奈何 at 2007-2-4 11:55:
水一贴
俺就笨多了只会用现成的工具,隐藏运行一般使用 nircmd.exe 和 cmdow.exe ,只是都是第三方工具只能在自己的机器上鼓捣鼓捣。
有兴趣的可以玩 ...

进去看了看觉得那cmdhear 那reg文件很好
作者: gxsanhen     时间: 2007-2-6 12:55
我觉得楼猪说漏了,现在还可以用AU3实现隐藏运行呢。
作者: electronixtar     时间: 2007-2-7 00:38
本人写脚本从来不考虑第三方工具,几乎全部都是调用系统自带功能。用第三方工具还不如自己编译exe
作者: jianyaogao     时间: 2007-3-17 21:14
又有学习了
作者: pmwz008     时间: 2007-3-26 23:10
记号,有收获.
作者: 47cc     时间: 2007-4-10 03:50
看不懂~~顶下
作者: xinhepc     时间: 2007-4-10 04:14
经典,顶DDDD
作者: jmm988     时间: 2007-4-12 05:22
我用ExeScript211选安静模式生成的EXE文件也很好用!
作者: zhezhe     时间: 2007-4-20 00:21
怎么AT命令不能打开以BAT结尾的文件啊?
作者: zqdarkday     时间: 2007-4-22 06:00
受了
作者: wgx1688     时间: 2007-4-24 04:18    标题: 恩试~下

顶下先~~~
作者: tiancaizfy     时间: 2007-6-17 11:55
帅   实在佩服           可是还是看不太懂
作者: 19951001     时间: 2007-6-17 19:30
又学到了新东西
作者: blue812     时间: 2007-8-3 15:27
不错,学习了.
作者: sunny04551     时间: 2007-8-20 15:09
收藏
斑竹辛苦了
作者: sunny04551     时间: 2007-8-20 15:21
收藏
斑竹辛苦了
作者: lslsyqyq     时间: 2007-8-20 23:53
下面的一大串   一点不懂啊
作者: cikegate     时间: 2007-8-21 10:29
很好,值得学习
作者: cikegate     时间: 2007-8-21 10:30
就是要难点了
作者: kingyn     时间: 2007-8-27 19:33
好是好,就是大部分看不懂
作者: putao     时间: 2007-10-20 18:50
崇拜啊
作者: kgdetg1127     时间: 2007-10-24 18:54
牛逼!
作者: cbcyll     时间: 2007-10-24 19:04
谢谢你啊
作者: shtcool     时间: 2007-10-31 16:46
受教了,谢谢!
作者: wwwflybox     时间: 2007-11-3 11:24
又来学习啦  谢谢
作者: qinwang     时间: 2007-11-4 16:50
不错。学习了啊,哈哈
作者: cbcyll     时间: 2007-11-5 19:13
hao
作者: hpwsb     时间: 2007-11-13 20:24
不错,精华东东,兄弟我收下了,嘻
作者: genteman     时间: 2007-11-13 21:58
对这方面一窍不通,学习下
作者: sword221     时间: 2007-11-22 00:00
哈哈   
楼上的说得很实在啊
作者: Dos2008     时间: 2007-11-22 17:55
好,经典内容!
作者: xtpewfn     时间: 2007-11-23 00:11
初学者勤奋中
作者: zysheng110     时间: 2007-11-23 00:28
太棒了!!好好的研究下!嘿嘿
作者: crocodile     时间: 2007-12-5 16:32
好贴, 受教了, 借力不少
俺认为只要是优秀,功能完善,第三方还是可以考虑的, 有利提高生产效率嘛
作者: zyz0304360     时间: 2008-1-16 08:46
收藏
作者: xingyun206     时间: 2008-1-17 09:21
不错,学习以下!!!!!!!!!
作者: icm     时间: 2008-1-17 14:57
好象有点难
作者: qzwqzw     时间: 2008-1-17 19:03
将mshta的方案再改短点,支持命令行参数了

  Quote:
if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit /b
shift /1

[ Last edited by qzwqzw on 2008-1-17 at 07:39 PM ]
作者: long626201     时间: 2008-1-19 22:16
不错啊
谢了LZ
作者: Vortex     时间: 2008-1-24 18:00
实在太爽了,谢谢了
作者: electronixtar     时间: 2008-2-5 17:12


  Quote:
Originally posted by plp626 at 2008-1-16 23:40:
(刚搜到的)若直接双击隐藏还有更简洁的,
http://blog.163.com/jializhi_hac ... 601200711250014570/
源代码如下:

不过若.bat的路径含空格好像 ...

那个会闪一下 :-)
作者: 5872169     时间: 2008-3-3 16:51
收藏了,谢谢
作者: 313885174     时间: 2008-3-15 03:50
最后个看不懂
作者: nforce1     时间: 2008-3-19 19:09
又一个隐藏批处理的方法.学习了.
作者: 19951001     时间: 2008-3-20 00:23
有学到了新东西,谢谢各位
作者: suntb     时间: 2008-3-20 00:38
学习下 估计有处还挺大的
作者: chishingchan     时间: 2008-4-10 21:02    标题: 直接应用在批处理文件的第一行就行了。

CODE:  [Copy to clipboard]
@if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit

作者: chishingchan     时间: 2008-4-10 21:04    标题: 再缩短四个字符

CODE:  [Copy to clipboard]
@if not %1*==h* mshta vbscript:createobject("wscript.shell").run("%~sf0 h%",0)(window.close)&exit
[ Last edited by chishingchan on 2008-4-10 at 09:12 PM ]
作者: plp626     时间: 2008-4-10 23:37
不小心把62楼的那个删了,可惜。
----------------------------------------
第11种方法,起个吓人的名字 ----借尸还魂。其实和vbs有关的实质上都是一种方法

若只为实现双击隐藏(直接放在第一句)下面这三个 "一句话代码"都行但各有各的长处:
code 1:
@if %1* neq 0* mshta vbscript:createobject("wscript.shell").run("%~s0 0",0)(window.close)&exit
code 2:
@if %1* neq 0* (goto c) else mshta vbscript:createobject("wscript.shell").run("%~s0 0",0)(window.close)&exit
code 3:(这个最短,嘿嘿,my code)
@if exist .vbs (del .vbs) else echo createobject("wscript.shell").run "%~s0",0 >.vbs&.vbs&exit
~~~~~~~~~~  plp626 于2008-3-25 整理~~~~~~~~~~~
--------------------------------------------------------------------------------------------------
想研究的就往下看吧,上面代码是下面代码的精简

思路:

  Quote:
以代码3为例:
cmd启动时判断当前路径下是否有#hide.vbs(这个vbs是用来隐藏调用你的cmd),
若没有:那就生成这个#hide.vbs并启动#hide.vbs紧接着退出cmd.
若有:那就删除#hide.vbs,然后跳转到隐藏执行的代码段

将此思路利用mshta实现:
CODE:  [Copy to clipboard]
@if %1* neq 0* mshta vbscript:createobject("wscript.shell").run("%~s0 0",0)(window.close)&exit
::要隐藏执行的任务
set set1=ping -n 2 127.1 1^>nul 2^>nul
for /l %%i in (1 1 5) do md test-%%i&%set1%
for /l %%i in (5 -1 1) do rd test-%%i&%set1%
msg %username% /v /w "~~~~~测试完毕,点确定退出cmd~~~~"
exit
调用格式:
CODE:  [Copy to clipboard]
@echo off
if not %1.==. call%*
pause
goto:hid

:code
set set1=ping -n 2 127.1 1^>nul 2^>nul
for /l %%i in (1 1 5) do md test-%%i&%set1%
for /l %%i in (5 -1 1) do rd test-%%i&%set1%
msg %username% /v /w "~~~~~测试完毕,点确定退出cmd~~~~"
exit

:: --------subprocess----------
:hid
if not %1.==. (goto:code) else mshta vbscript:createobject("wscript.shell").run("%~s0 :hid 0",0)(window.close)
...

[ Last edited by plp626 on 2008-6-1 at 08:22 PM ]
作者: crocodile     时间: 2008-4-12 00:30
真是越写越强了,  mshta有些电脑上会有权限提示弹出, 不知可有改进方法
作者: plp626     时间: 2008-4-12 00:37
所以说各有各得长处,根据具体的机子选用代码
作者: would     时间: 2008-4-15 23:26
經典好文
收藏一個
謝了
作者: crocodile     时间: 2008-4-21 17:29    标题: 碰到提示了

使用第11种方法出现这个提示:


作者: BWSkyer     时间: 2008-4-21 17:43
太强大了嘛~~~收藏了抽查了..
作者: wangzenggogo     时间: 2008-5-30 08:33
很好压 西西诶拉
作者: hansom     时间: 2008-5-30 21:56
CODE:  [Copy to clipboard]
up up
作者: joyn     时间: 2008-5-30 23:29
太好了~~
作者: bhsx     时间: 2008-8-10 00:31
收藏收藏
作者: bhsx     时间: 2008-8-10 00:31
收藏收藏收藏收藏
作者: devil1832     时间: 2008-8-17 09:25
经典滴 ~#!@#顶飞~~#
作者: HuangBigGhost     时间: 2008-8-29 01:02
先顶再看~
作者: HuangBigGhost     时间: 2008-8-29 01:02    标题: 先顶再看~

先顶再看~
作者: Savvy     时间: 2008-9-13 11:19
先收下,还没看明白。
作者: Savvy     时间: 2008-9-13 11:19
先收下,还没看明白。
作者: Savvy     时间: 2008-9-13 11:22
高手!
作者: hhasee     时间: 2008-9-26 10:48
太强了!谢谢共享!!
作者: kinghuai     时间: 2008-9-28 13:05
在这里确实学到不少东西啊!
作者: kinghuai     时间: 2008-9-28 13:07
真是学习了啊!
作者: judas     时间: 2008-10-10 14:53
精彩,收藏
作者: judas     时间: 2008-10-10 14:53
精彩,收藏
作者: weasel     时间: 2008-11-5 23:00
别让帖子沉。。。。
作者: 84906424     时间: 2008-11-6 22:00
好贴!!!
作者: goodbat     时间: 2008-11-7 00:56
好东西,收藏
作者: hahaweber     时间: 2008-11-7 09:34
这个帖子很强悍啊,可惜我还是入门阶段
作者: ucdos12     时间: 2008-11-7 15:20
佩服,经典,好好学习
作者: hqso     时间: 2008-11-14 11:01
hao
作者: hqso     时间: 2008-11-14 11:02
好东西
作者: zuiwangqiuyue     时间: 2008-11-14 14:20
开眼界了,收获甚丰呀,顶下!!!!




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5