乔丹二世 发表于 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
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就是了……

乔丹二世 发表于 2010-12-15 12:21:59

回复 naylon 的帖子

给个代码看看
页: [1]
查看完整版本: 远程关闭句柄之远程去除句柄保护