the methods of kill process (ing...)
作者:迷走尘埃 日期:2009-03-20
所谓的“过***主动防御”、“过***自我保护”,无非都是杀进程,内核态的杀进程,服了,来回忽悠了我好多次,当然我也乐意被忽悠,知识还不是慢慢积累...
引用内容一、ring3下
1、FindWindow找到对应进程窗口界面 -- 发送WM_CLOSE消息
2、如果找到进程的线程 -- 调用PostThreadMessage 发送 WM_QUIT 消息结束主线程
3、OpenThread ---> TerminateThread 废话
4、待续...
1、FindWindow找到对应进程窗口界面 -- 发送WM_CLOSE消息
2、如果找到进程的线程 -- 调用PostThreadMessage 发送 WM_QUIT 消息结束主线程
3、OpenThread ---> TerminateThread 废话
4、待续...
引用内容二、ring0下
1、ZwOpenProcess -- ZwTerminateProcess
2、驱动中通过NtOpenProcess取得句柄, 然后在驱动中TerminateProcess来结束进程(不过一般有些自我保护意识的进程都会hook了NtOpenProcess,这样就杀不死它了,当然调用NtOpenProcess杀其他进程还是无所谓,毕竟hook了最终只是把自己过滤了)
3、枚举进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- 定位进程名字 -- KeStackAttachProcess挂在自己到进程空间 -- ZwTerminateProcess(0,0) -- KeUnstackDetachProcess 释放
4、枚举进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- 定位进程名字 -- PspTerminateProcess直接over进程
5、得到进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- PsGetNextProcessThread遍历进程中线程 -- TheKeInsertQueueApc给每个线程插入Apc例程 -- 线程自杀进程退出
具体可以看文章:http://www.my1984.com.cn/article.asp?id=656
6、得到进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- NtUnMapViewOfSection拆卸进程模块(或者调用更深一步的MiUnmapViewOfSection)
7、待续...
1、ZwOpenProcess -- ZwTerminateProcess
2、驱动中通过NtOpenProcess取得句柄, 然后在驱动中TerminateProcess来结束进程(不过一般有些自我保护意识的进程都会hook了NtOpenProcess,这样就杀不死它了,当然调用NtOpenProcess杀其他进程还是无所谓,毕竟hook了最终只是把自己过滤了)
3、枚举进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- 定位进程名字 -- KeStackAttachProcess挂在自己到进程空间 -- ZwTerminateProcess(0,0) -- KeUnstackDetachProcess 释放
4、枚举进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- 定位进程名字 -- PspTerminateProcess直接over进程
5、得到进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- PsGetNextProcessThread遍历进程中线程 -- TheKeInsertQueueApc给每个线程插入Apc例程 -- 线程自杀进程退出
具体可以看文章:http://www.my1984.com.cn/article.asp?id=656
6、得到进程PID -- 调用PsLookupProcessByProcessId来获得相应进程的EPROCESS结构 -- ObDereferenceObject(eprocess) -- NtUnMapViewOfSection拆卸进程模块(或者调用更深一步的MiUnmapViewOfSection)
7、待续...
引用内容三、备留手册
1、进程PID得到进程名称
1-1、调用API的方式
A、例如GetProcessImageFileName、GetModuleFileNameEx等
B、ZwQuerySystemInformation 参数5号,得到结构(struct _SYSTEM_PROCESSES *)SystemInformation,里面的ProcessName.Buffer就是名称字符罗~~
1-2、查看_EPROCESS,王道!!
A、从成员UCHAR ImageFileName[ 16 ]; 获取,容易找的很~
B、SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO ,里面是OBJECT_NAME_INMFORMATION,最终就是一个UNICODE_STRING
2、系统一些函数的获取
可以参考原先写的文章:http://www.my1984.com.cn/article.asp?id=653(系统函数获取小记)
3、用hook破解inline hook
inline hook一般都是修改调用函数前5个字节的内容,从而达到转向自己函数的调用,也就是一般原函数的入口地址是不便的,我们可以直接获取(即便原函数地址被hook,我们也可以想办法去恢复它) -- 获取原函数的地址后,我们可以hook这个原函数 -- 我们hook函数的内容是:先重新调用被inline hook前的5个字节的内容,然后跳转到原函数5字节后继续执行 -- 这样就相当于过了inline hook ,并且恢复了原函数。
1、进程PID得到进程名称
1-1、调用API的方式
A、例如GetProcessImageFileName、GetModuleFileNameEx等
B、ZwQuerySystemInformation 参数5号,得到结构(struct _SYSTEM_PROCESSES *)SystemInformation,里面的ProcessName.Buffer就是名称字符罗~~
1-2、查看_EPROCESS,王道!!
A、从成员UCHAR ImageFileName[ 16 ]; 获取,容易找的很~
B、SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO ,里面是OBJECT_NAME_INMFORMATION,最终就是一个UNICODE_STRING
2、系统一些函数的获取
可以参考原先写的文章:http://www.my1984.com.cn/article.asp?id=653(系统函数获取小记)
3、用hook破解inline hook
inline hook一般都是修改调用函数前5个字节的内容,从而达到转向自己函数的调用,也就是一般原函数的入口地址是不便的,我们可以直接获取(即便原函数地址被hook,我们也可以想办法去恢复它) -- 获取原函数的地址后,我们可以hook这个原函数 -- 我们hook函数的内容是:先重新调用被inline hook前的5个字节的内容,然后跳转到原函数5字节后继续执行 -- 这样就相当于过了inline hook ,并且恢复了原函数。
评论: 0 | 引用: 0 | 查看次数: 864
发表评论
上一篇
下一篇


文章来自:
Tags:









