|
|
|
[讨论]关于System Idle Process 的一点问题
嗯, 一个是指针,一个是实体, |
|
[讨论]关于System Idle Process 的一点问题
typedef struct _KPCR { KPCR_TIB Tib; /* 00 */ struct _KPCR *Self; /* 1C */ struct _KPRCB *Prcb; /* 20 */ KIRQL Irql; /* 24 */ ULONG IRR; /* 28 */ ULONG IrrActive; /* 2C */ ULONG IDR; /* 30 */ PVOID KdVersionBlock; /* 34 */ PUSHORT IDT; /* 38 */ PUSHORT GDT; /* 3C */ struct _KTSS *TSS; /* 40 */ USHORT MajorVersion; /* 44 */ USHORT MinorVersion; /* 46 */ KAFFINITY SetMember; /* 48 */ ULONG StallScaleFactor; /* 4C */ UCHAR DebugActive; /* 50 */ UCHAR ProcessorNumber; /* 51 */ UCHAR Reserved; /* 52 */ UCHAR L2CacheAssociativity; /* 53 */ ULONG VdmAlert; /* 54 */ ULONG KernelReserved[14]; /* 58 */ ULONG L2CacheSize; /* 90 */ ULONG HalReserved[16]; /* 94 */ ULONG InterruptMode; /* D4 */ UCHAR KernelReserved2[0x48]; /* D8 */ KPRCB PrcbData; /* 120 */ } KPCR, *PKPCR; 讨论中学习,收获很大呀 ~ |
|
[讨论]关于System Idle Process 的一点问题
汗,原来2个都可以的. static inline PKPRCB KeGetCurrentPrcb(VOID) { ULONG value; #if defined(__GNUC__) __asm__ __volatile__ ("movl %%fs:0x20, %0\n\t" : "=r" (value) : /* no inputs */ ); #elif defined(_MSC_VER) . . . . . . #endif return((PKPRCB)value); } fs:0x20就是KPCR数据结构中的指针Prcb,指向相应的KPRCB数据结构 而KPCR的0x120处也是指向prcb结构的 |
|
[讨论]关于System Idle Process 的一点问题
[QUOTE=xPLK;410532] KPRCB = *((ULONG *)(KPCR + 0x020)); [QUOTE] 哈哈,硬编码还写错了.是 0x120 |
|
|
|
|
|
[分享]射-->XP/2003/VISTA的简单INLINE HOOK
mj牛的东西向来好啊 |
|
|
|
|
|
[总结]获取内核ntoskrnl.exe基地址的几种常见办法
FS:[0X124] 指向的是ETHREAD. fs 在内核模式下指向KPCR (Kernel Process Control Region) 用户模式下指向TEB 这个方法无局限性 不管是ntoskrnl.exe还是ntkrnlpa.exe |
|
|
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值