Consent.exe 如何知道要显示什么?

信息安全 uac 窗口权限
2021-08-23 13:32:25

consent.exe负责显示 UAC 对话框。使用 Process Explorer 查看命令行参数,我看到以下内容:

consent.exe 1316 748 000000004385BD60

我有

到目前为止,我只弄清楚了第一个数字:它是父进程的进程 ID(PID),这恰好是svchost.exe我的情况。

如何consent.exe从该命令行信息中找出要启动的可执行文件的路径是什么?

2个回答

根据您链接的 Russinovich TechNet 文章:请记住,应用程序调用应用程序信息服务 (AIS) 来提升。因此,consent.exe 不需要知道如何启动程序。它的存在只是为了建立用户同意,并将结果返回给 AIS。AIS 然后进行实际启动(假设同意.exe 返回成功)。

可以看到,第一个参数是consent.exe 的父进程的PID。通过监视这个父进程(它是一个“svchost”)在创建同意进程之前调用的 API,我能够发现第三个参数是一个指向 svchost 堆内结构的指针,第二个参数是结构的长度。该结构似乎包含要运行的进程的路径、它的工作目录和它的参数。还有一些我无法弄清楚的字节。但是这些信息肯定足以挖掘 exe 的完整路径。

此答案仅在 Windows 10 x64 1809 上测试