如何关闭其他进程的句柄

cobra_chen 2012-10-30 11:18:22
微软的Process Explorer有一个CloseHandle的功能,
想自己实现,可是无法实现。
欲使用DuplicateHandle,GetLastError = 6
想使用ZwQueryObject , GetLastError = 5
用AdjustTokenPrivileges或RtlAdjustPrivilege提升到Debug权限,还是不行。
在Process Explorer查看进程Properties > Privilege > SeDebugPrivilege 是Enabled的。

还有比调试权限更高的么?怎么才能提到那么高的权限?
或者说有其他的方法,可以关闭其他进程的句柄?
...全文
1018 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
yisikaipu 2012-11-03
  • 打赏
  • 举报
回复
引用 22 楼 cobra_chen 的回复:
这个值怎么获取?
总要有点信息吧,比如名字什么的 获取进程ID总没有问题吧 这个链接里有代码可下载。我试过了,可以运行,把进程ID作为参数,即可列出该进程所有句柄,总能找到你需要的那个 http://forum.sysinternals.com/topic18892.html
yisikaipu 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]比如关掉Event[/Quote]

都可以的啊,只要有句柄,就可以关掉

int main()
{
DWORD id_another_proc=0x08c8; //假设已取得该值
DWORD num_evt=0x0040; // 假设已取得该值

HANDLE h_another_proc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id_another_proc);
HANDLE h_src=(HANDLE)num_evt;
HANDLE h_tar=NULL;

DuplicateHandle(h_another_proc,
h_src,
GetCurrentProcess(),
&h_tar,
0,
FALSE,
DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); // 关闭

CloseHandle(h_tar);
CloseHandle(h_another_proc);

return 0;
}
cbzjzsb123 2012-11-02
  • 打赏
  • 举报
回复
cobra_chen 2012-11-02
  • 打赏
  • 举报
回复
比如关掉Event


[Quote=引用 17 楼 的回复:]

引用 16 楼 的回复:知我者yisikaipu也
确实搞不懂
微软的秘密总是那么多

呵呵,你是什么类型的句柄关不掉?举个具体的小例子看看

我用 DuplicateHandle 带参数 DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE 直接就可以把源进程里的句柄关掉了
[/Quote]
cobra_chen 2012-11-02
  • 打赏
  • 举报
回复
这个值怎么获取?

[Quote=引用 21 楼 的回复:]

引用 19 楼 的回复:比如关掉Event

都可以的啊,只要有句柄,就可以关掉

C/C++ code
int main()
{
DWORD id_another_proc=0x08c8; //假设已取得该值
DWORD num_evt=0x0040; // 假设已取得该值

HANDLE h_another_proc=OpenProcess(PROCESS……
[/Quote]
majia2011 2012-11-01
  • 打赏
  • 举报
回复
procexp*.sys

微软的秘密需要你去反,呵呵呵
yisikaipu 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]知我者yisikaipu也
确实搞不懂
微软的秘密总是那么多[/Quote]

呵呵,你是什么类型的句柄关不掉?举个具体的小例子看看

我用 DuplicateHandle 带参数 DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE 直接就可以把源进程里的句柄关掉了
cobra_chen 2012-11-01
  • 打赏
  • 举报
回复
知我者yisikaipu也
确实搞不懂
微软的秘密总是那么多

[Quote=引用 15 楼 的回复:]

引用 14 楼 的回复:注入进程!

楼主的意思是process explorer没有dll

我查了一下,貌似真没有调用CreateRemoteThread

那么会是怎样实现的?问的是这个。
[/Quote]
yisikaipu 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]注入进程![/Quote]

楼主的意思是process explorer没有dll

我查了一下,貌似真没有调用CreateRemoteThread

那么会是怎样实现的?问的是这个。
herman~~ 2012-10-31
  • 打赏
  • 举报
回复
注入进程!
cobra_chen 2012-10-31
  • 打赏
  • 举报
回复
一般如果需要从内核着手的话,
DDK一边都是编译sys文件,但是process explorer并没有附带sys文件啊。
还是DDK可以直接编译到exe中?
我在网上搜到唯一的线索就是调用MS未公开的API,但是使用这些API,却提示权限不足。
感觉很奇怪。

[Quote=引用 12 楼 的回复:]

不会提供这样的API, 可以使用DDK,从内核中着手。
[/Quote]
mujiok2003 2012-10-31
  • 打赏
  • 举报
回复
不会提供这样的API, 可以使用DDK,从内核中着手。
mujiok2003 2012-10-31
  • 打赏
  • 举报
回复
估计process explorer修改了内核中其他的进程的句柄表,一般不会这样的API, 这事太危险了!

Quote=引用 10 楼 的回复:]
你的意思是,在原来的进程中创建一个子进程?
那还不如创建子线程来的容易吗?
另外在似乎没有CreateRemoteProcess这个函数。
我想知道window中process explorer怎么不用dll实现关闭其他进程句柄的。


引用 9 楼 的回复:

子进程可以继承父进程的句柄(如果父进程允许的话),其他情况下,一个进程(内核进程除外)的句柄只在本进程有意义。大的方向要……
[/Quote]
cobra_chen 2012-10-31
  • 打赏
  • 举报
回复
你的意思是,在原来的进程中创建一个子进程?
那还不如创建子线程来的容易吗?
另外在似乎没有CreateRemoteProcess这个函数。
我想知道window中process explorer怎么不用dll实现关闭其他进程句柄的。

[Quote=引用 9 楼 的回复:]

子进程可以继承父进程的句柄(如果父进程允许的话),其他情况下,一个进程(内核进程除外)的句柄只在本进程有意义。大的方向要正确。

引用 5 楼 的回复:
就是遍历句柄的时候提示权限不够。
这个如何解决?


引用 4 楼 的回复:

(内核对象)句柄是为了从本进程的句柄表(在内核中)的位置,这个值对于其他用户进程没有任何意义。你拿到其他进程的句柄值没有多大的意义,这是为了健壮……
[/Quote]
mujiok2003 2012-10-31
  • 打赏
  • 举报
回复
子进程可以继承父进程的句柄(如果父进程允许的话),其他情况下,一个进程(内核进程除外)的句柄只在本进程有意义。大的方向要正确。

[Quote=引用 5 楼 的回复:]
就是遍历句柄的时候提示权限不够。
这个如何解决?


引用 4 楼 的回复:

(内核对象)句柄是为了从本进程的句柄表(在内核中)的位置,这个值对于其他用户进程没有任何意义。你拿到其他进程的句柄值没有多大的意义,这是为了健壮性考虑的。
[/Quote]
赵4老师 2012-10-31
  • 打赏
  • 举报
回复
VirtualAlloc
CreateRemoteThread
cobra_chen 2012-10-31
  • 打赏
  • 举报
回复
注入进程必须要用dll?
微软的process explorer没有单独的依赖dll啊。

[Quote=引用 6 楼 的回复:]

进程注入后,然后就可以了。
[/Quote]
guolisen 2012-10-30
  • 打赏
  • 举报
回复
这种问题应该找个黑客网站问问吧,哈哈,或者找本黑客的书
jngd 2012-10-30
  • 打赏
  • 举报
回复
进程注入后,然后就可以了。
cobra_chen 2012-10-30
  • 打赏
  • 举报
回复
就是遍历句柄的时候提示权限不够。
这个如何解决?

[Quote=引用 4 楼 的回复:]

(内核对象)句柄是为了从本进程的句柄表(在内核中)的位置,这个值对于其他用户进程没有任何意义。你拿到其他进程的句柄值没有多大的意义,这是为了健壮性考虑的。
[/Quote]
加载更多回复(3)

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧