本实验在Windows Vista Build 5231上进行,测试帐户为TestAdmin,是管理员组成员。为了查看进程的访问令牌,需要借助聪明人Mark所提供的Process Explorer工具(这个工具实在太好了,我们经常用它来查看IE浏览器所加载的dll文件,以便进行排错),下载地址如下:http://www.sysinternals.com/Utilities/ProcessExplorer.html。
要能够修改系统时间,只需单击“时间和日期”窗口右下侧的“Unlock”按钮,即可打开如图4所示的对话框,同时可以看到系统启动了一个consent进程。单击“I want to complete this action”选项,现在应该可以修改系统时间了。看来这个consent进程负责传递消息,以便系统确认提升操作权限。其本质应该是修改相关进程的访问令牌,对于本例来说,应该是在相关进程的安全令牌里添加SeSystemTimePrivilege特权。
反复重新做实验后,终于发现,单击“I want to complete this action”选项后,系统会新增一个dllhost进程(在Process Explorer中绿色显示),在dllhost进程属性对话框的“Image”标签页的“Command Line”文本框里可以看到“/Processid: {9DF523B0-A6C0-4EA9-B5F1-F4565C3AC8B8}”参数。搜索注册表得知,{9DF523B0-A6C0-4EA9-B5F1-F4565C3AC8B8}就是timedate.cpl的AppID,如图5所示。