如何用Shell批量清除受NDSW恶意软件感染的多行缩进JS文件?
批量清理受NDSW恶意软件感染的JS文件方案
可以通过Shell命令结合文本处理工具批量清理这类感染文件,核心是利用恶意代码的特征边界精准剔除,以下是具体方案:
核心特征定位
这段NDSW恶意代码有明确的起止标记:
- 起始标识:
;;if(ndsw===undefined){ - 结束标识:末尾的
}};(连续两个大括号加分号)
借助这两个边界可以精准定位并删除整个恶意代码块。
具体实现命令
方案1:GNU sed(Linux系统默认适用)
sed支持多行范围匹配,直接批量处理文件:
find /目标JS文件目录 -name "*.js" -type f -exec sed -i ' /;;if(ndsw===undefined){/,/^}};$/d ' {} \;
find遍历指定目录下所有JS文件-exec sed -i对每个文件执行原地编辑/起始标记/,/结束标记/d删除标记范围内的所有行^}};$确保匹配恶意代码末尾的独立行,避免误删正常代码
方案2:awk(跨系统兼容,如macOS)
如果系统的sed不支持多行匹配,用awk更稳定:
find /目标JS文件目录 -name "*.js" -type f -exec bash -c ' awk "BEGIN { in_mal=0 } /;;if(ndsw===undefined){/ { in_mal=1; next } /^}};$/ { in_mal=0; next } !in_mal { print }" "$1" > "$1.tmp" && mv "$1.tmp" "$1" ' _ {} \;
- 通过
in_mal变量标记是否处于恶意代码块内 - 仅输出非恶意代码区域的内容到临时文件,最后替换原文件
关键注意事项
- 操作前必须备份所有JS文件,防止误删正常代码
- 先选取单个受感染文件测试命令,确认效果后再批量执行
- 若恶意代码的起止标记有细微变异,需调整正则匹配规则
内容的提问来源于stack exchange,提问作者razor7
相关产品推荐
相关产品推荐

