请教一个得到当前线程的问题!
内核PsGetCurrentThread()里是用KeGetCurrentThread(void)来实现的,再往下大概是这样子的,只是个大概,别对话入座
- C/C++ code
PRKTHREAD FORCEINLINE KeGetCurretThread(void){ return ((PKIPCR)KeGetPcr()->PrcbData.CurrentThread);}然而这里的KeGetPcr我没有看懂,他的定义是如下的:
- C/C++ code
#if !defined(CONFIG_SMP) && !defined(NT_BUILD)#define KeGetPcr() PCR#else#define KeGetPcr() ((volatile KPCR * const)__readfsdword(0x1C))#endif
这个上面我没有看懂,麻烦请详细指教!谢谢!
[解决办法]
__readfsdword(0x1C)
==>
mov eax , fs[0x1C]