找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 3145|回复: 1

远程关闭句柄之远程去除句柄保护

[复制链接]

280

主题

203

回帖

0

精华

版主

积分
1808
发表于 2010-12-14 16:12:18 | 显示全部楼层 |阅读模式
别的地方转载的~啥子地方忘记了~
在文件解锁中经常要用到远程关闭句柄,通常有两个做法,一个DuplicateHandle远程关闭,另外一个创建远程线程CloseHandle(ZwClose)关闭,这种方法能够成功的前提是对方句柄没有设置保护,如果对方用SetHandleInformation来设置保护防止关闭,以上两个方法均会失效,所以有必要远程关闭句柄保护,话说微软很不厚道,句柄只能保护起来,没有去除保护,操起IDA对Kernel32逆向SetHandleInformation,发现其使用NtSetInformationObject来设置保护,所以我们只需要远程线程NtSetInformationObject即可,思路就这样,但是操作起来有难度,因为SetHandleInformation需要4个参数,而我们只能通过CreateRemoteThread传递一个参数过去,所以写了下面这一段ShellCode,ShellCode完全使用标准帖构造……
UCHAR StrShellCode[]=
{
0x8B,0xFF,//            mov         edi,edi
0x55,//                 push        ebp
0x8B,0xEC,//            mov         ebp,esp
0x8B,0x5D,0x08,//       mov         ebx,dword ptr [ebp+8]
0x6A,0x02,//            push        8   
0x53,//                 push        ebx
0x6A,0x04,//            push        4   
0x68,0x00,0x00,0x01,0x00,//   push        10000h //把句柄值写在这里
0xBB,0x00,0x10,0x40,0x00,//   mov         ebx,offset Func 将NtSetInformationObject函数地址写进来
0xFF,0xD3,            //call        ebx
0x5D,               ////pop         ebp
0xC2,0x04,0x00       // ret         4   
};
到时候将ObjectInformation参数传递给CreateRemoteThread即可了,这样就可以去除句柄保护了……之后关闭即可,至于返回值GetExitCodeThread就是了……

280

主题

203

回帖

0

精华

版主

积分
1808
 楼主| 发表于 2010-12-15 12:21:59 | 显示全部楼层
回复 naylon 的帖子

给个代码看看
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表