DuplicateHandle复制句柄保护文件
来源:互联网 发布:电信开80端口要备案 编辑:程序博客网 时间:2024/05/18 18:16
以独占方式打开一个文件,然后将文件的句柄复制到另一个进程,比如复制到System进程,然后自己的进程就可以退出。
在Ring3下只要句柄没有关闭,别人就删除不了文件。
#include <windows.h>
#include <stdio.h>
void SetPrivilege()
{
HANDLE hToken;
LUID destLuid;
TOKEN_PRIVILEGES TokenPrivileges;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken); //获得进程访问令牌的句柄
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &destLuid); //操作的类型为SE_DEBUG_NAME
TokenPrivileges.PrivilegeCount = 1;
TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
TokenPrivileges.Privileges[0].Luid = destLuid;
AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, 0, NULL, NULL); //提升权限
CloseHandle(hToken); //关闭句柄
}
BOOL ProtectFile(
IN LPCTSTR pszFilePath,
IN DWORD dwProcessId,
IN BOOL bFileCanBeRead
)
{
HANDLE hFile;
HANDLE hProcess;
// get the file handle
hFile = CreateFile(
pszFilePath,
GENERIC_READ,
(bFileCanBeRead ? FILE_SHARE_READ : 0),
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
// open the process handle
hProcess = OpenProcess(PROCESS_DUP_HANDLE, FALSE, dwProcessId);
if (!hProcess)
{
printf("OpenProcess error/n");
CloseHandle(hFile);
return FALSE;
}
// call duplicatehandle
BOOL fOk = DuplicateHandle(
GetCurrentProcess(), // source process handle
hFile, // source handle
hProcess, // target process handle
NULL, // target handle, we don't care it
0,
FALSE,
DUPLICATE_SAME_ACCESS
);
CloseHandle(hFile);
CloseHandle(hProcess);
return fOk;
}
void main()
{
SetPrivilege(); //提升进程权限
ProtectFile("C://1.txt",4,false);
}
- DuplicateHandle复制句柄保护文件
- DuplicateHandle进程间句柄复制
- DuplicateHandle()复制句柄函数的用法
- 内核对象 复制对象句柄 DuplicateHandle 跨进程边界共享内核对象
- 复制文件句柄dup2 函数
- DuplicateHandle
- DuplicateHandle
- duplicatehandle()
- DuplicateHandle 伪句柄 与 实句柄的应用
- DuplicateHandle伪句柄与实句柄的应用二
- 通过DuplicateHandle防止文件删除
- 有关dup2(fd,1),复制文件句柄的问题
- 复制对象句柄
- 如何复制位图句柄
- 文件句柄
- 文件句柄
- 文件句柄
- 文件句柄
- c++类型转换
- prototype的两个方法
- free live chat - comm100
- 放假后的各种悲剧
- Matlab遗传算法工具箱(gaot)下载及安装
- DuplicateHandle复制句柄保护文件
- 机器学习到支持向量机
- Qt 中获取字体的像素高度和宽度
- Runtime error go fuck yourself
- explicit关键字
- 中医教你“返老还童”三秘方
- 我不知道的C++概念
- POJ 2531
- 将基于 Swing 的开发工具插入 Eclipse 中