调用[System.Reflection.Assembly]::Load加载EXE失败,报错格式不正确
问题分析与解决
错误原因
[System.Reflection.Assembly]::Load() 方法仅用于加载**.NET程序集**(包括.NET编译的.exe或.dll文件),而你下载的tinytask.exe是原生Win32可执行文件,并非.NET程序集,因此用该方法加载会触发「格式不正确」的报错。
正确执行方式
方法1:保存到本地后执行
这是最直接且安全的方式:
# 下载文件到本地临时目录 Invoke-WebRequest -Uri "http://raw.githubusercontent.com/frankwick/t/main/tinytask.exe" -OutFile "$env:TEMP\tinytask.exe" # 执行下载的文件 & "$env:TEMP\tinytask.exe"
方法2:内存中执行原生PE文件(进阶)
若需在内存中直接执行原生可执行文件,需要借助专门的PE注入技术,比如使用PowerShell的PE注入脚本实现,但这种方式复杂度高且存在安全风险,仅建议在明确可信的场景下使用。
注意事项
从互联网下载并执行未知来源的可执行文件存在恶意代码感染风险,请确保文件来源完全可信。
内容的提问来源于stack exchange,提问作者MegaBomber
相关产品推荐
相关产品推荐

