首页
社区
课程
招聘
[求助]windows线程切换
发表于: 2013-10-17 00:38 7701

[求助]windows线程切换

2013-10-17 00:38
7701
执行SwapContext的线程的ethread有时候等于esi,有时候是个随机的值,请问这个随机的ethread是被时钟中断的线程吗?

还有 esi指向的线程,如果被换出的时候EIP指向0x401010,那么它被唤醒的时候,怎么从SwapContext函数执行到0X401010呢。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
同问,好深奥.
2013-10-17 06:56
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
EIP会保存下来的。  windows 的源码我没看过。 linux 进程切换的看过。

saves the address labeled 1 in prev-thread.eip when the process being replaced resumes its execution . the process executes the instuction labeled as 1

movl $1f, 480(%eax)


因为eip指向CPU下一条执行的指令,所以将EIP从一个线程栈切换到另一个线程栈,就是实际执行了线程切换,其他的代码都是用于现场保护及数据保护的。
2013-10-17 08:59
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个看这有点高深,关注
2013-10-17 09:20
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2013-10-17 11:18
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
弄明白了。
SwapContext返回的时候,栈已经换成了切换前的状态了,一路retn就行了。
被剥夺的线程,最后通过iret返回中断时候的eip。
2013-10-17 18:50
0
游客
登录 | 注册 方可回帖
返回
//