当前位置:七道奇文章资讯安全技术操作系统
日期:2010-01-16 13:19:00  来源:本站整理

14种办法完毕进程[操作系统]

赞助商链接



  本文“14种办法完毕进程[操作系统]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

释放驱动HOOK了SSDT表中的NtOpenProcess,但是对参数过滤不严密,只过滤   PROCESS_TERMINATE, PROCESS_WRITE, XXXX(忘掉了),,三种.然后对比的PID是放在全局变量中,可以通过发送 DeviceIoControl 改变这个值~

所以我们还是可以以其他的参数翻开这个进程的(只要不含有那三个参数)~

不过大家仿佛都不感爱好这个标题,于是代码就不放了,想要可以直接给我消息.趁便要求刀客公开他的办法~~


1.利用 FindWindow 的办法,然后想窗口发送 WM_CLOSE 的消息

2.找到进程的线程, PostThreadMessage 发送 WM_QUIT 消息完毕主线程

3.OpenThread ---> TerminateThread

4.RemoteExitProcess,以 PROCESS_CREATE_THREAD|VM_OPERATION方法翻开进程,然后成立个远程线程,线程开始地址是 ExitProcess 参数0 ,程序自行了断.

5.首先确保进程能被翻开(8和9介绍),然后成立一个线程去 DebugActiveProcess 他,然后什么也不做退出线程,程序无人接纳,于是挂掉~

6.以 VM_OPERATION方法翻开进程, 然后调用 NtUnmapViewOfSection 卸载掉他的ntdll.dll 这个时刻程序还未崩溃,然后再随便发送个消息给它,它的程序一经调用直接就会非常,但是ntdll已经挂掉,无法用户空间非常处理,自行了断~(我认为这个办法应和往进程空间写垃圾数据属于同一办法)

7.发送键盘 ESC 单击的消息(这个和发送窗口消息不能算同一个的).

8.下面是重点要介绍的:-----------------------------
由于CrackMeApp翻开了驱动的文件句柄,所以直接不能卸载驱动的.因此需求把这个句柄给关闭.
于是怎么去获得远程的文件句柄呢?首先想到的是 DuplicateHandle ,
BOOL DuplicateHandle(
   HANDLE hSourceProcessHandle,   // handle to source process
   HANDLE hSourceHandle,       // handle to duplicate
   HANDLE hTargetProcessHandle,   // handle to target process
   LPHANDLE lpTargetHandle,    // duplicate handle
   DWORD dwDesiredAccess,        // requested access
   BOOL bInheritHandle,       // handle inheritance option
   DWORD dwOptions             // optional actions
);

先看最后一个参数:
DUPLICATE_CLOSE_SOURCE 
Closes the source handle. This occurs regardless of any error status returned. 
DUPLICATE_SAME_ACCESS 
Ignores the dwDesiredAccess parameter. The duplicate handle has the same access as the source handle. 

也就是说当我们挑选DUPLICATE_CLOSE_SOURCE时,远程的句柄就会自动关闭了

第一个参数,我们可以直接OpenProcess(PROCESS_DUP_HANDLE ,XXX)得到,
第二个参数对比难找,就是CrackMeApp进程里翻开驱动的句柄,要想得到这个我们得借助个ntdll.dll中的一个 API, ZwQuerySystemInformation 这个可以得到整个系统中全部的句柄信息,我们可以全部找出来,然后判断哪些句柄是属于 CrackMeApp进程的,并且ObjectTypeNumber范例为文件范例的.关于这个的具体实现可以看我的实现代码.

typedef struct _SYSTEM_HANDLE_INFORMATION { // Information Class 16 
   ULONG ProcessId; 
   UCHAR ObjectTypeNumber; 
   UCHAR Flags;   // 0x01 = PROTECT_FROM_CLOSE, 0x02 = INHERIT 
   USHORT Handle; 
   PVOID Object; 
   ACCESS_MASK GrantedAccess; 
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;

这样CrackMeApp进程中通过CreateFile翻开的句柄就全找到了,普通有三个,我们可以把它全部都关闭,也可以只关闭最后一个(因为最后就是翻开驱动的句柄,翻开驱动是最后一次调用CreateFile).


这个我就得到了第二个参数,下面的参数都很简单了~

于是一调用这个 DuplicateHandle ,我们不但关闭了远程的句柄,并且还得到了驱动的句柄,为所欲为了~~

于是我的第8个办法就是发送IO恳求到CrackMeApp的驱动里,恳求它改正被保护的进程PID为0,这样我们便可以用通例办法完毕它了(Open+Terminate)

9.上面办法的远程句柄关闭了,我们就自然可以去卸载驱动了~于是这个就是去 ZwUnloadDriver大概终止了它的Service.这样再用通例办法完毕~~

10.全部的win32子系统的进程城市有一个句柄在csrss.exe进程里面,CrackMeApp.exe自然也在,于是我们便可以把 csrss.exe 里面的句柄给 dup 过来自己利用,DUP过来的办法大致和上面相同,不过判断的进程该为csrss,范例要该为5(进程句柄的范例),然后呢对每个进程句柄做一个ZwQueryInformationProcess() 参数为 BASIC_INFORMATION=0 的查询,看看这个句柄是不是CrackMeApp的 ,假如是就直接拿来用,TerminateProcess之~

---------------以下是用借助驱动来完毕的-----------

11.用驱动patch了它的保护的PID值,然后用户空间里通例办法~

12.用驱动恢复SSDT中ZwOpenProcess,这里我偷懒直接硬编码,调用那个驱动自身的恢复SSDT的函数,嘿嘿~~之后用户空间里通例办法(这个和11不算一种的)

13.直接在驱动里调用 NtOpenProcess绕过它的SSDT HOOK便可以了,不过应当注意的是需求先把 KTHREAD 构造体里的 PreviousMode 值改成KernelMode,不然有大概会失利的~

[1] [2]  下一页


  以上是“14种办法完毕进程[操作系统]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 14种办法完毕进程
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .