本帖最后由 Demon 于 2012-7-25 20:03 编辑
标题: 批处理技术内幕:序
作者: Demon
链接: http://demon.tw/reverse/cmd-internal-preface.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
批处理是我见过的最丑陋的脚本,杂乱无章的语法,语焉不详的文档,似是而非的教程,良莠不齐的用户,一切都是那么的混乱不堪。
在我还没有听说过VBScript脚本之前,我就已经开始接触批处理了,那是大一第一个学期的期末考试之后,跟着中国DOS联盟的教程学习,幻想着自己有一天也能成为批处理的高手。后来,中国DOS联盟由兴盛转向衰落,我对VBScript从一无所知到略知一二,然而批处理水平却没有任何长进。
其实这并不能怪我,当你学习过任何一门正常点的编程语言之后再回过头看批处理,你就会对它凌乱的语法感到恶心,对它鸡肋的功能表示不满。如果批处理能做的VBScript都能做,批处理不能做的VBScript也能做,那我还学批处理做什么呢?
如果这个问题有答案的话,那么答案也许就是为了耍酷,或者换一个词,装逼。“嘿,你看,我连批处理都会,是不是很厉害?”
但是想深入了解批处理是很困难的,其他语言都可以在书店找到一摞厚厚的教科书,如果批处理也有那么一本价格不菲的权威书籍,你会掏钱买吗?当然不会!所以不会有这么一本书。至于网上的那些教程,大部分只是帮助文档的简单重复罢了。
于是我想到了逆向分析,借助OllyDbg和IDA Pro等工具来探索cmd.exe的内部运行机制,试图揭开批处理的神秘面纱。我会把分析的笔记整理出来,并取名为《批处理技术内幕》,听起来很牛逼,只不过是为了吸引眼球罢了。
最后以一行没有技术含量的代码结束:- @echo off&setlocal=enabledelayedexpansion&(for=%%!=in=(h=t=t=p=:=/=/=d=e=m=o=n=.=t=w)=do=set,=!,!%%!)&start=!,!&pause
复制代码 提示1:文章的测试环境均为Windows 7 Ultimate Service Pack 1 英文原版,恕不累述,不同的系统之间可能会有细微的差别。
提示2:批处理技术内幕系列文章并不是批处理教程,相反,我假定你有批处理基础,并且最好对字符编码、系统API函数、C语言有所了解,当然懂汇编就更好啦。 |