标题:
[特效代码]
批处理中的转义符为何把内存在十秒之内会用得精光
[打印本页]
作者:
x9tiancmd
时间:
2009-4-30 20:08
标题:
批处理中的转义符为何把内存在十秒之内会用得精光
@echo off
>>a.txt echo ^%^%
运行上面这段代码你会发现你电脑的内存十秒之内会用得精光, 天呀太恐怖了! 哪个能解释这是为什么
这应当是批处理最简短的一个病毒写法吧晕晕
再试试
echo ^%^%>>a.txt
却没有出现这个现像
还有关于为什么批处理在DOS窗口 "%i" 要写成"%%i"的原因:
“ % ” 要写入文本不能用“^ ” 转义 要用“%”来转义 如:
echo.%%i>a.bat
打开a.bat
你会发现 只一个%i
这因当是批处理文本为什么%i 要写成%%i的真正原因吧
[
本帖最后由 x9tiancmd 于 2009-4-30 20:21 编辑
]
作者:
x9tiancmd
时间:
2009-4-30 20:23
>>a.txt echo ^%^%
谁能解释下这 个运行为什么会出现内存一下耗光的情况 呀
知道的说下嘛
作者:
yslyxqysl
时间:
2009-4-30 20:31
是不是把磁盘剩下的文件全都写进去?
猜想:转义结尾符
echo ^%^%>>a.txt
却没有出现这个现像
因为只转义了一个>符号
作者:
pusofalse
时间:
2009-4-30 20:43
对NULL字符转义的结果吧,你确定echo ^%^%后面无任何内容了吗? 任何,包括回车或者其他空白字符。
作者:
x9tiancmd
时间:
2009-4-30 20:43
我到虚拟机里面用空白虚拟磁盘试下
等下有了结果再来回复下 嘿嘿
作者:
x9tiancmd
时间:
2009-4-30 20:53
虚拟机试了没是 但是我这就是运行就内存十秒内用个精光, 真是怪事来了
我就复制上面的代码保存为BAT(附件里有) 运行的, 不信你们自忆试下嘛, 真的太恐怖了
[
本帖最后由 x9tiancmd 于 2009-4-30 20:57 编辑
]
作者:
随风
时间:
2009-4-30 21:55
测试了下,确实是的,好像是因为echo后没有换行,至于为什么这样就不知道了,好像形成了个死循环。难道是因为转义符号没东西转?
作者:
x9tiancmd
时间:
2009-4-30 21:59
因当不是死循环, 你多加入一条命令 (红色的)
@echo off
>a.txt echo.^%
>>a.txt echo.^%^%
你运行这个, 它根本就没有创建a.bat 出来呀,, 你说这不是怪了,死循环最少也会创建“a.bat”吧
作者:
everest79
时间:
2009-5-1 00:49
原帖由
随风
于 2009-4-30 21:55 发表
测试了下,确实是的,好像是因为echo后没有换行,至于为什么这样就不知道了,好像形成了个死循环。难道是因为转义符号没东西转?
我猜是因为^后边没回车,执行时转义破坏了textfile的eof标志,因为标志的最后一个ascii码是0x13
而使用追加符又跳过了行输出长度检查,所以造成批处理一直往缓存空字符
作者:
wxcute
时间:
2009-5-1 11:23
我这儿内存倒是不会被用光,只是严重影响了运行速度。
echo
^
%^%
先把
^
当作变量解释,变量
^
未定义,因此等同于 echo
^
>>a.txt echo ^%^%
等同于 >>a.txt echo ^
作者:
x9tiancmd
时间:
2009-5-3 21:22
嗯 楼上的说法好像蛮有理的, 呵呵,, 学习了谢谢
难道说, 这echo 是: 先写入内存, 再生成 a.bat ? 然后再把内存的数据写入a.bat ??
我用个十几M的文件没这个现像呀,,, 好像是: 先生成a.bat 再把数据 慢慢的写入a.bat 看到窗口里面的 a.bat 文件变化呀 ??
还是有点? 我想也只能是楼上的么解释了@
[
本帖最后由 x9tiancmd 于 2009-5-3 21:28 编辑
]
欢迎光临 批处理之家 (http://bathome.net./)
Powered by Discuz! 7.2