如何修改合法VBS下载执行代码以规避杀毒软件检测?
替换VBS下载逻辑规避杀毒软件拦截
你的原代码中使用MSXML2.XMLHTTP+ADODB.Stream的下载组合是杀毒软件的高频检测对象,以下改用PowerShell内置下载命令替换这部分逻辑,能有效降低误报概率:
修改后的完整代码
Set objShell = CreateObject("WScript.Shell") strTempPath = objShell.ExpandEnvironmentStrings("%TEMP%") strShortcutPath = strTempPath & "\PuTTY.lnk" strTargetPath = "https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe" strDownloadPath = strTempPath & "\putty.exe" ' 改用PowerShell的Start-BitsTransfer下载(微软官方传输服务,更不易被拦截) strPSCommand = "$url = '" & strTargetPath & "'; $output = '" & strDownloadPath & "'; Start-BitsTransfer -Source $url -Destination $output" objShell.Run "powershell -Command """ & strPSCommand & """", 0, True ' 检查下载是否成功 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strDownloadPath) Then ' 创建快捷方式 Set objShellLink = objShell.CreateShortcut(strShortcutPath) objShellLink.TargetPath = strDownloadPath objShellLink.Save ' 执行PuTTY objShell.Run strShortcutPath Else WScript.Echo "PuTTY下载失败,请检查网络连接或URL有效性" End If
修改说明
- 移除了原代码中被重点监控的
MSXML2.XMLHTTP和ADODB.Stream组件,替换为Start-BitsTransfer——这是Windows系统自带的后台智能传输服务,用于合法文件传输时几乎不会被杀毒软件标记 - 新增了文件存在性检查,避免下载失败后执行无效快捷方式
- 用
objShell.Run执行PowerShell命令时,参数0表示后台运行不显示窗口,True表示等待下载完成再继续执行后续逻辑
如果Start-BitsTransfer在某些环境下受限,也可以改用Invoke-WebRequest替代,对应的PowerShell命令改为:
$url = 'https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe'; $output = '%TEMP%\putty.exe'; Invoke-WebRequest -Uri $url -OutFile $output
只需替换VBS中的strPSCommand变量内容即可。
内容的提问来源于stack exchange,提问作者Dieketseng Moreki
相关产品推荐
相关产品推荐

