ASLR与mshta.exe报错“系统无法执行指定程序”有啥关系?

Posted

技术标签:

【中文标题】ASLR与mshta.exe报错“系统无法执行指定程序”有啥关系?【英文标题】:What is the relation between ASLR and the mshta.exe's error "The system cannot execute the specified program"?ASLR与mshta.exe报错“系统无法执行指定程序”有什么关系? 【发布时间】:2022-01-14 07:16:36 【问题描述】:

我在运行 mshta.exe 时遇到问题。如下图所示,我收到错误:The system cannot execute the specified program.

我创建了一个test.hta 文件,它也无法执行。我已经尝试了这些解决方案,但都没有奏效:

    我已禁用 App Locker 我已禁用防病毒软件 我已关闭 Windows 防火墙。

然而,当我启用ASLR 时,它起作用了! 我已将注册表值 MoveImages 编辑为 1。它位于键 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management 下。我之前禁用了 ASLR,因为有时我会调试 DLL。

我的问题是:为什么会这样? ASLR 如何帮助解决这个问题?

【问题讨论】:

更改 ASLR 设置后是否要重新启动? 不确定图像是否有帮助,您尝试运行的命令是什么,完整的命令? @Anders 是的,我确实重启了。 @user692942 是的,我尝试了完整的命令,但效果不佳。 我在问完整的命令是什么,图像无法帮助显示您运行的内容? 【参考方案1】:

我的一位朋友想分享一个有趣的答案:

“它的错误来自NtCreateUserProcess的内核,在这个api中,调用ZwMapViewOfSection将可执行图像映射到内存。在我们的例子中,MapView返回STATUS_CONFLICTING_ADDRESSES。 如果您阅读 ZwMapViewOfSection 文档,您会看到 Windows 缓存了一些地址范围,因此如果缓存中没有 ASLR 请求地址的图像,它将在 ZwMapViewOfSection 处失败。 ASLR 不会发生这种情况,因为 Windows 将保证新的图像基地址不会在任何缓存范围内”。

【讨论】:

以上是关于ASLR与mshta.exe报错“系统无法执行指定程序”有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章

使用mshta.exe绕过应用程序白名单(多种方法)

cmd怎么调用mshta显示图片?

关于Linux下ASLR与PIE的一些理解

Linux_x86下NX与ASLR绕过技术

Linux_x86下NX与ASLR绕过技术(续)

Linux_x86下NX与ASLR绕过技术(续)