CMD的混淆是JS、VBA、powershell等混淆语言中最难解的,因为对于CMD来说是没有公开的调试器的,需要去了解繁杂众多的CMD语法。CMD为了使用方得便,命令中有很多容错率,从而也导致BAT脚本可以被混淆得很厉害。
以下是CMD中容易使用用来混淆的字符:
语法符号 | 功能作用 |
---|---|
>、>> | 重定向 |
竖杠 | 管道 |
&&、&、双竖杠 | 语句连接 |
^ | 转义字符,该字符不影响命令的执行 |
,和 ; | 这两个符号可以互换,可以取代命令中的合法空格 |
() | 在参数中该符号也不影响命令执行 |
CMD参数 /?显示帮助,最被常用得两个参数 /C /V。/V:ON参数启用时,可以不使用call命令来扩展变量,使用 %var% 或 !var! 来扩展变量,!var!可以用来代替%var%,也就是可以使用感叹号字符来替代运行时的环境变量值。
语法
%VarName:~offset[,length]%
主要用于获取环境变量VarName的变量值。
如系统已有的环境变量%comspec%变量的值默认值是“C:\WINDOWS\system32\cmd.exe”ÿ