检测进程是不是由 IE 在保护模式下启动

Posted

技术标签:

【中文标题】检测进程是不是由 IE 在保护模式下启动【英文标题】:Detecting if a process is started by IE in protected mode检测进程是否由 IE 在保护模式下启动 【发布时间】:2010-08-18 15:08:31 【问题描述】:

我正在编写一个用于简化应用程序安装程序下载的程序。该应用程序的工作非常简单:它只是要求 BITS 子系统从网上下载一个 ZIP 并在用户的桌面上解压缩并运行第二阶段安装程序(这个想法是我们的​​许多最终用户太笨了受信任的 ZIP 下载链接和有关如何安装程序的说明)。

现在,如果用户在 Vista/7 中运行 IE 7+,启用了 UAC 并选择“执行”而不是“另存为”,则程序将失败。事实上,由于 IE 的保护模式,所有写入文件系统或注册表的尝试都失败了。

为了解决这个问题,我标记了可执行文件以触发 UAC 提示,它工作正常。但是,即使不需要触发,它现在也会触发提示:程序设计为在后台进行下载,如果用户在完成之前关闭会话,则恢复下载。现在,每次启动可执行文件时都会触发 UAC 提示。

我想检测我在沙箱中运行的事实,在这种情况下,重新启动进程,这次使用 UAC 提示符(很容易做到)。我不知道如何检测到这种情况,但是没有尝试写入注册表。

有什么想法吗?

【问题讨论】:

澄清:您是否希望在 IE 进程中运行的代码检测 IE 进程本身的完整性是否较低,或者您是否希望在生成的子进程中运行的代码检测它是否是从低完整性生成的完整性 IE 进程,或者您是否希望子进程中的代码检测子进程是否是低完整性进程,而不管它是由哪个进程产生的? 我希望生成的进程能够检测它是否是从低完整性 IE 进程生成的,如果是这样,它可以作为常规进程重新启动自身(使用传递的“runas”操作到 Shellexecute)。 【参考方案1】:

调用IEIsProtectedModeProcess 函数。

一个很好的涵盖 IE 保护模式的文档是Understanding and Working in Protected Mode Internet Explorer。

【讨论】:

我相信 API 只能在 IE 进程中使用,而不能从衍生的进程中使用。

以上是关于检测进程是不是由 IE 在保护模式下启动的主要内容,如果未能解决你的问题,请参考以下文章

Python 检测PE所启用保护方式

Linux进程5——实模式和保护模式

X86保护模式入门简介

Android 逆向selinux 进程保护 ( selinux 进程保护 | 宽容模式 Permissive | 强制模式 Enforcing )

Android 逆向selinux 进程保护 ( selinux 进程保护 | 宽容模式 Permissive | 强制模式 Enforcing )

01保护模式