首页
社区
课程
招聘
[求助] SwapContext 到底是什么功能那?
发表于: 2013-4-1 18:17 5528

[求助] SwapContext 到底是什么功能那?

2013-4-1 18:17
5528
按照论坛上各位大大的说法,线程切换等都要经过 SwapContext 函数,那么我就想了她应该和驱动入口函数KifastCallEntry一样的,只不过一个是管理线程切换的,一个是调度内核API调用的,我HOOK了 SwapContext函数实现了下面的功能:

在多核CPU的情况下,我限定我自己的程序只能在CPU 0上运行,然后发现是我自己的程序访问IDT表就把CPU 0上的IDT表恢复了, 如果是别的程序通过CPU 0访问IDT表,就把他恢复成原始被HOOK的状态,按我自己的理解应该没错吧,因为检测的话也要通过SwapContext 这里切换到CPU 0才可以检测HOOK有没有被修改, 但是为啥我失败了那?  检测还是能检测到CPU 0上的HOOK让恢复了那?????  不明白,想不通................................

那个大大能给点思路,或者解释下,是不是我的理解错了

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
只为了限定自己的程序在CPU0?话说何必这么复杂...MS有标准的处理方式啊.
SetProcessAffinityMask;
2013-4-1 19:21
0
雪    币: 282
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我就是这样做的啊, HOOK了 SwapContext 后 发现CPU 0上调用 SwapContext进行线程切换的不是自己保护的 就把IDT给恢复了啊,为啥 检测还能检测到哪?
2013-4-1 19:58
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
DPCTimer可以位于任意线程上下文。
2013-4-1 20:51
0
雪    币: 282
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
明白了,谢谢楼上的大大,真是高手,呵呵,我再想想怎么处理
2013-4-1 22:18
0
雪    币: 282
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果是这样的话,我直接HOOK KeSetTimer修改它的延迟时间大一点,这样是不是就可以逃过检测了那?
2013-4-1 23:54
0
游客
登录 | 注册 方可回帖
返回
//