|

楼主 |
发表于 2007-12-5 00:13:19
|
显示全部楼层
千万不要小瞧Administrators权限,有时可能会出麻烦。感兴趣的自己做个试验,看下面的图
已经把该文件夹的权限设为不允许任何人访问,可fastcopy依然可以轻松把这个文件夹删除掉。它是怎么绕过NTFS权限实现删除的?
第二次实验:把所有权限都设为拒绝,fastcopy依旧可以删除数据。
这里,关键在于权限!!!fastcopy软件具有提升自身权限的代码,fastcopy.cpp 25行开始:
-
- BOOL SetPrivilege(LPTSTR pszPrivilege, BOOL bEnable)
- {
- HANDLE hToken;
- TOKEN_PRIVILEGES tp;
- if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
- return FALSE;
- if (!::LookupPrivilegeValue(NULL, pszPrivilege, &tp.Privileges[0].Luid))
- return FALSE;
- tp.PrivilegeCount = 1;
- if (bEnable)
- tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
- else
- tp.Privileges[0].Attributes = 0;
- if (!::AdjustTokenPrivileges(hToken, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0))
- return FALSE;
- if (!::CloseHandle(hToken))
- return FALSE;
- return TRUE;
- }
复制代码
而要想提升自身权限,条件必须是Administrators组用户即管理员组,当然,SYSTEM组权限更高。如果在User组,Fastcopy则不能提升权限。 |
|