如何在系统登陆桌面运行程序(续)

本文探讨了在不获取TCB特权的情况下,通过修改Winlogon内核对象的权限实现ADMIN账号运行桌面程序的方法。关键在于调整特定内核对象的安全设置。
前面说在系统登陆桌面运行程序必须取得TCB特权,今天研究了一下,这话说的有点儿绝对了。在网上搜索了一下,大名鼎鼎的Phrack上的有一篇文章介绍如何操作Physical Memory给了我启发。问题的关键不在于TCB特权,而在于ADMIN帐号没有权限操作"/Winlogon"内核对象。从下面这张图可以看出SYSTEM帐号和ADMIN帐号在"/Winlogon"内核对象上的权限区别:

那么在"/Winlogon"内核对象上给ADMIN帐号加上相应的访问权限是不是就可以了呢?答案是肯定的。添加权限的代码如下:
BOOL GrantAccessRights(HANDLE hWinlogonDesktop)
{
    PACL OldDacl
=NULL, NewDacl=NULL;
    PSECURITY_DESCRIPTOR SecDesc
=NULL;
    EXPLICIT_ACCESS Access;
    BOOL retval 
= FALSE;
    
    DWORD Res 
= GetSecurityInfo(
hWinlogonDesktop, SE_KERNEL_OBJECT, 
        DACL_SECURITY_INFORMATION, NULL, NULL, 
&OldDacl,
        NULL, 
&SecDesc);
    
    
if (Res != ERROR_SUCCESS)
        
return FALSE;
    
    Access.grfAccessPermissions 
= ACTRL_PERM_1|ACTRL_PERM_2;
    Access.grfAccessMode 
= GRANT_ACCESS;
    Access.grfInheritance 
= NO_INHERITANCE;
    Access.Trustee.MultipleTrusteeOperation 
= NO_MULTIPLE_TRUSTEE;
    
// change these informations to grant access to a group or other user
    
    Access.Trustee.TrusteeForm 
= TRUSTEE_IS_NAME;
    Access.Trustee.TrusteeType 
= TRUSTEE_IS_USER;
    Access.Trustee.ptstrName 
= "CURRENT_USER";
    
    
// create the new ACL
    
    
if (ERROR_SUCCESS != SetEntriesInAcl(1&Access, OldDacl, &NewDacl))
        
goto cleanup;

    
// update ACL
    
    retval 
= ERROR_SUCCESS == SetSecurityInfo(
hWinlogonDesktop, SE_KERNEL_OBJECT,
        DACL_SECURITY_INFORMATION, NULL, NULL, NewDacl, 
        NULL);

cleanup:
    
if (NewDacl)
        LocalFree(NewDacl);
    
if (SecDesc)
        LocalFree(SecDesc);
    
return retval;
}

项目功能: 注册、登录、查找用户、添加好友、好友列表。 (02)自拍头像。 (03)文字聊天、字体设置、GIF动态表情、窗口震动、截图、手写板、登录状态(在线、离开、忙碌、勿打扰、隐身)、输入提醒 (04)群功能:创建群、加入群、退出群、群聊天 (05)文件传送、文件夹传送(支持断点传) (06)语音视频聊天 (07)远程磁盘 (08)远程协助 (09)共享桌面(可以指定要共享的桌面区域) (10)可靠的P2P (11)网盘 (12)离线消息 (13)离线文件 (14)托盘闪动:跟QQ完全一样,当接收到消息时,托盘会闪动对应好友的头像。点击头像,将弹出与好友的聊天框。 (15)最近联系人列表 (16)系统设置:开机自动启动、麦克风设备索引、摄像头设备索引,叉掉主窗口时关闭程序还是隐藏窗口。 (17)聊天记录:支持本地保存和服务器端保存两种方式。 (18)好友分组:新增/删除分组,修改分组名称,改变好友的所属分组。 (19)打开聊天窗口时,自动显示上次交谈的最后一句话。 (20)输入提醒:像QQ一样,当对方正在输入消息时,我这边的聊天框可以看到对方“正在输入”的提示。 (21)自动记录:GG2014会自动记录上次打开的主界面的位置、大小;最后一次打开的聊天窗口的大小;最后一次设定的字体的颜色、大小等。 (22)主窗体靠边自动隐藏。 (23)录制视频聊天。 (24)支持数据库(SqlServer 2000/2005/2008、MySQL),并可以通过配置在真实数据库和虚拟数据库之间自由切换。 (25)语音视频设备测试 (26)聊天消息加密 (27)系统通知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值