(DWORD) PsGetCurrentProcess(); 返回的 是一个 结构体. 结构体第一个成员是 第一个EPROCESS的地址.
PLIST_ENTRY PsActiveProcessHead = (PLIST_ENTRY)0x805637b8; //这个硬编找的 . 上面那个EPROCESS+88=这个值了;//88是 xp sp2的 活动进程 链表的 偏移 pid =84
PLIST_ENTRY List = PsActiveProcessHead->Blink;
while( List != PsActiveProcessHead )
{
char* name = ((char*)List-0x88)+0x174;
DbgPrint("name = %s/n",name);
List=List->Blink;
}
感觉这个方法比 修改 ssdt函数表 更简单
PLIST_ENTRY PsActiveProcessHead = (PLIST_ENTRY)0x805637b8; //这个硬编找的 . 上面那个EPROCESS+88=这个值了;//88是 xp sp2的 活动进程 链表的 偏移 pid =84
PLIST_ENTRY List = PsActiveProcessHead->Blink;
while( List != PsActiveProcessHead )
{
char* name = ((char*)List-0x88)+0x174;
DbgPrint("name = %s/n",name);
List=List->Blink;
}
感觉这个方法比 修改 ssdt函数表 更简单