Xor 发表于 2011-3-20 19:24:04

hook kideliverapc干什么用

也是防apc的吗?比hookk*insertapc好吗?好在哪里?

Tesla.Angela 发表于 2011-3-20 21:09:19

其实我想问一句,APC是用来干什么的。。。
现在玩游戏都玩傻了。。。

Tesla.Angela 发表于 2011-3-20 21:10:51

反正神马底层的东西我都忘光了,楼主还是等待现任的底层斑竹回答吧。。。

ywledoc 发表于 2011-3-21 19:18:33

本帖最后由 ywledoc 于 2011-3-21 19:24 编辑

在网上找到以下资料:
KiDeliverApc每处理完一个User APC就把UserApcPending清零,所以User APCs在返回用户空间时还是只能投递一次!KiDeliverApc中用while处理完所有Kernel Mode APCs,但User Mode APC却只处理一个!事实上User APC的投递是很特殊的,以后会讲到,而且每次只能投递一次!
估计是用来控制APC的,敌人没必要得到运行。跟Hook KiSwapContext(KiSwapThread, KiSwapProcess)等是一个性质的。

Tesla.Angela 发表于 2011-3-21 19:35:16

回复 ywledoc 的帖子

呵呵,前年我最喜欢杀进程,杀进程最喜欢用APC,现在悲剧得连APC是啥都忘记了。。。

Xor 发表于 2011-3-21 20:55:32

回复 ywledoc 的帖子

也就是说:hook这个函数可以达到防杀进程的目的,因为可以阻止apc执行?

ywledoc 发表于 2011-3-21 21:01:11

回复 Tesla.Angela 的帖子

能进ring0什么都好说,现在问题是很难进ring0。只能各种YY了。

ywledoc 发表于 2011-3-21 21:11:52

回复 Xor 的帖子

从前面得到的资料 上来说是可以的。具体的要看代码了。
KiDeliverApc中用while处理完所有Kernel Mode APCs,但User Mode APC却只处理一个!
这句话很关键。再结合另一段文字(pjf 的终止进程的内幕):
线程是怎样结束的呢。PspTerminateThreadByPointer并不是直接“杀掉”指定线程,实质上线程是“自杀”的,呵呵。系统简单的使用KeInitializeApc/KeInsertQueueApc插入了一个核心态的APC调用,若是用户线程,会再插入用户态的APC调用,最终线程在自己的执行环境中使用PspExitThread(...=>KeTerminateThread=>KiSwapThread)悲壮的自行了断。
所以,可以阻止内核态下APC的操作,至于用户态的APC,听天由命吧。

Tesla.Angela 发表于 2011-3-21 21:45:13

不知道楼主要干神马,如果仅仅是防APC的话,DKOM吧。
修改神马结构的哪个偏移我忘记了,自己google一下吧。

Xor 发表于 2011-3-25 23:26:31

回复 Tesla.Angela 的帖子

就是那个,防不了ki

Xor 发表于 2011-8-17 17:48:43

Tesla.Angela 发表于 2011-3-21 21:45 static/image/common/back.gif
不知道楼主要干神马,如果仅仅是防APC的话,DKOM吧。
修改神马结构的哪个偏移我忘记了,自己google一下吧。 ...

dkom防apc防不了kiinsertqueueapc
页: [1]
查看完整版本: hook kideliverapc干什么用