首页
社区
课程
招聘
[求助]关于实现unlocker解锁功能的问题
发表于: 2009-6-14 12:27 4431

[求助]关于实现unlocker解锁功能的问题

2009-6-14 12:27
4431
先是用一下代码实现一个文件把自身的句柄给了另一个进程,从而无法被读取。

然后想模仿 Unlocker 软件的功能,实现这个解锁这个文件,但是不知道从何下手,请教下大家,给个思路或者提示。

BOOL zanyong( LPCTSTR lpFileName,const DWORD dwRemoteProcessId)
{
        BOOL    bRet;

        //提升自身权限
        if(EnableDebugPriv(SE_DEBUG_NAME))
        {
                printf("add privilege error");
                return FALSE;
        }
       
        HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwRemoteProcessId);   
       
        if ( hProcess == NULL )
        {         
                return FALSE;
        }
       
        HANDLE hFile;
        HANDLE hTargetHandle;
       
        hFile = CreateFile( lpFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);   
       
       
        if ( hFile == INVALID_HANDLE_VALUE )
        {
                CloseHandle( hProcess );
                return FALSE;
        }
       

        bRet = DuplicateHandle( GetCurrentProcess(), hFile, hProcess, &hTargetHandle,
                0, FALSE, DUPLICATE_SAME_ACCESS|DUPLICATE_CLOSE_SOURCE);
       
        CloseHandle( hProcess );
       
        return bRet;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
有人发过相关代码,其实就是ZwQuerySystemInformation枚举下句柄找其中File类型的,Dup过来查询文件名,若是目标文件就DupCloseSource
2009-6-14 13:09
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
白痴的问句····Dup过来查询文件名~~~这个用到什么函数···

看你说的有思路了,但是还希望有具体的函数·
2009-6-14 13:13
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
就是DuplicateHandle啊,查询用ZwQueryInformationFile,查询FileNameInformation
2009-6-14 13:31
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好的,谢谢了,我去弄弄~!
2009-6-14 13:53
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyp
6
网上有人写过教程了
2009-6-14 17:06
0
雪    币: 191
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以参考开源项目OpenFileFinder.dll
2009-6-16 16:44
0
游客
登录 | 注册 方可回帖
返回
//