EPROCESS:NT进程的核心(更新)

原创 2005年02月25日 22:10:00

作者是 陆麟

是2000年写的了  呵呵 
内核类的文章沉寂了好长一段时间,再度开写.今天写的乃是未公开的WIN2000的EPROCESS结构.
EPROCESS乃是NT进程的核心.该结构定义了所有进程相关的数据.知道了该结构,NT的核心机密就公开了一半.下面乃是我于7.26挖到凌晨的奥秘.:)))看哪.大补啊.:DDD
该结构仅在英文WIN2000零售版上验证通过.如果以后WIN2000有了SERVICE PACK,并不保证兼容.使用者请自己注意.

typedef struct _DISPATCHER_HEADER {
UCHAR Type;
UCHAR Absolute;
UCHAR Size;
UCHAR Inserted;
LONG SignalState;
LIST_ENTRY WaitListHead;
} DISPATCHER_HEADER;

typedef struct _FIRSTPART_OBJ{
unsigned inheritable : 1;
unsigned protected :1;
unsigned pobj :14;
}FIRSTPART_OBJ;

typedef struct _OBJTBL{
FIRSTPART_OBJ firstpart_obj;
DWORD access_control_mask;
}OBJTBL,*POBJTBL;

typedef struct vad {
void *StartingAddress;
void *EndingAddress;
struct vad *ParentLink;
struct vad *LeftLink;
struct vad *RightLink;
ULONG Flags;
}VAD, *PVAD;

typedef struct{
struct KPCB Pcb; //0x0
INT ExitStatus; //0x6c
DISPATCHER_HEADER LockEvent; //0x70
__int64 LockCount; //0x80
__int64 CreateTime; //0x88
__int64 ExitTime; //0x90
UINT LockOwner; //0x98
UINT UniqueProcessId; //0x9c
LIST_ENTRY ActiveProcessLinks; //0xa0
__int64 QuotaPeakPoolUsage[0]; //0xa8
__int64 QuotaPoolUsage[0]; //0xb0
UINT PagefileUsage; //0xb8
UINT CommitCharge; //0xbc
UINT PeakPagefileUsage; //0xc0
UINT PeakVirtualSize; //0xc4
UINT VirtualSize; //0xc8
__int64 Vm; //0xd0
BYTE UNKNOW[0x48]; //0xd8
HANDLE DebugPort; //0x120
UINT ExceptionPort; //0x124
POBJTBL ObjectTable; //0x128
PTOKEN Token; //0x12c
BYTE WorkingSetLock[0x20]; //0x130
UINT WorkingSetPage; //0x150
BYTE ProcessOutswapEnabled; //0x154
BYTE ProcessOutswapped; //0x155
BYTE AddressSpaceInitialized; //0x156
BYTE AddressSpaceDeleted; //0x157
BYTE AddressCreationLock; //0x158
BYTE UNKNOWN2[0x23]; //0x159
UINT ForkInProgress; //0x17c
WORD VmOperation; //0x180
WORD ForkWasSuccessful; //0x182
UINT VmOperationEvent; //0x184
UINT LastFaultCount; //0x188
BYTE UNKNOW3[8]; //0x18c
PVAD VadRoot; //0x194
UINT VadHint; //0x198
UINT CloneRoot; //0x19c
UINT NumberOfPrivatePages; //0x1a0
UINT NumberOfLockedPages; //0x1a4
BYTE ExitProcessCalled; //0x1aa
BYTE CreateProcessReported; //0x1ab
HANDLE SectionHandle; //0x1ac
PPEB Peb; //0x1b0
PVOID SectionBaseAddress; //0x1b4
UINT QuotaBlock; //0x1b8
UINT LastThreadExitStatus; //0x1bc
PVOID WorkingSetWatch; //0x1c0
PVOID Win32WindowStation; //0x1c4
UINT InheritedFromUniqueProcessId; //0x1c8
UINT GrantedAccess; //0x1cc
UINT DefaultHardErrorProcessing; //0x1d0
PLDT_ENTRY LdtInformation; //0x1d4
UINT VadFreeHint; //0x1d8
PVOID VdmObjects; //0x1dc
PPROCESS_DEVICEMAP_INFORMATION DeviceMap;//0x1e0
DWORD *PageDirectoryPte; //0x1f0
WORD *ImageFileName; //0x1fc
BYTE UNKNOWN4[0xc]; //200
__int64 VmTrimFaultValue; //0x20c
PVOID Win32Process; //0x214
}EPROCESS,*PEPROCESS;

//---------------------------------------------------------------------------------------------------------

下面的结构来处费尔:

typedef struct _EPROCESS
{
KPROCESS Pcb;
NTSTATUS ExitStatus;
KEVENT LockEvent;
DWORD LockCount;
QWORD CreateTime;
QWORD ExitTime;
PVOID LockOwner;
DWORD UniqueProcessId;
QWORD ActiveProcessLinks;
DWORD QuotaPeakPoolUsage [2]; // NP, P
DWORD QuotaPoolUsage [2]; // NP, P
DWORD PagefileUsage;
DWORD CommitCharge;
DWORD PeakPagefileUsage;
DWORD PeakVirtualSize;
QWORD VirtualSize;
DWORD Vm [12];
DWORD LastProtoPteFault;
DWORD DebugPort;
DWORD ExceptionPort;
DWORD ObjectTable;
DWORD Token;
DWORD WorkingSetLock [8];
DWORD WorkingSetPage;
BOOLEAN ProcessOutswapEnabled;
BOOLEAN ProcessOutswapped;
BOOLEAN AddressSpaceInitialized;
BOOLEAN AddressSpaceDeleted;
DWORD AddressCreationLock [9];
DWORD ForkInProgress;
DWORD VmOperation;
DWORD VmOperationEvent;
DWORD PageDirectoryPte;
QWORD LastFaultCount;
PVOID VadRoot;
DWORD VadHint;
DWORD CloneRoot;
DWORD NumberOfPrivatePages;
DWORD NumberOfLockedPages;
WORD w184;
BOOLEAN ExitProcessCalled;
BOOLEAN CreateProcessReported;
HANDLE SectionHandle;
struct _PEB *Peb; // offset 0x1B0
PVOID SectionBaseAddress;
PVOID QuotaBlock;
NTSTATUS LastThreadExitStatus;
PROCESS_WS_WATCH_INFORMATION WorkingSetWatch;
DWORD InheritedFromUniqueProcessId;
ACCESS_MASK GrantedAccess;
DWORD DefaultHardErrorProcessing;
DWORD LdtInformation;
DWORD VadFreeHint;
DWORD VdmObjects;
KMUTANT ProcessMutant;
BYTE ImageFileName [16]; // offset 0x1FC
DWORD VmTrimFaultValue [2];
PVOID Win32Process;
DWORD d1F8;
DWORD d1FC;
}
EPROCESS,
* PEPROCESS,
**PPEPROCESS;

_EPROCESS结构简单了解!

lkd> dt _EPROCESS nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x06c ProcessLock ...
  • leitianjun
  • leitianjun
  • 2011年08月13日 21:59
  • 7437

WinDgb命令 持续更新

附看雪某人整理的WinDbg参考手册 v0.6(链接自搜) 链接: http://pan.baidu.com/s/1skM5I49 密码: 7bn9 1.线程 2.断点 3.查看 d系...
  • zhuhuibeishadiao
  • zhuhuibeishadiao
  • 2016年03月31日 16:01
  • 794

VirtualKD+Windbg+vmware 极速调试+Windbg下载符号

双机调试的时候,不管是Windbg+vmware,还是Windbg+1394,其调试速率都是相对比较低的,有时候执行一条p命令,Windbg的状态都会BUSY..好久...   Virtu...
  • kingswb
  • kingswb
  • 2016年05月22日 09:01
  • 543

获得进程的EPROCESS

获得进程的EPROCESS发布日期:2004-06-02文摘内容: 文摘出处:http://www.xfocus.net/articles/200406/706.html创建时间:2004-06-01...
  • Kendiv
  • Kendiv
  • 2005年01月31日 23:16
  • 4072

Windbg查看进程的_EPROCESS结构

最近研究某驱动DebugPort清零,学习了使用Windbg查看_EPROCESS结构地址,采用Syser下断查找清零代码。下面主要写下Windbg查看进程的_EPROCESS结构,便以后查阅。大家知...
  • never12345678
  • never12345678
  • 2010年10月15日 17:07
  • 1947

EPROCESS ;ethread WINDOWS 7结构

7600.16695eprocesslkd> dt _eprocessnt!_EPROCESS   +0x000 Pcb              : _KPROCESS   +0x098 Proce...
  • rryr2
  • rryr2
  • 2011年04月29日 21:56
  • 2581

ring0下的 fs:[124]

反汇编内核函数的时候经常会看到mov eax, fs:[124].一直没弄清楚fs寄存器在ring0存放的是什么。今天查了下资料。     fs寄存器在Ring0中指向一个称为KPCR的数据结构,即F...
  • whatday
  • whatday
  • 2013年11月14日 16:18
  • 2032

如何从EPROCESS辨别一个进程是否已退出

前面已经通过遍历活动进程双链,来得到一个进程列表. 但是,这个链表中有些进程其实是已经退出的进程. 因此,在得到一个EPROCESS之后,必须对其进行识别,判断其是否已经退出. 通过对一死一活两...
  • cosmoslife
  • cosmoslife
  • 2012年07月27日 23:35
  • 958

WIN7 进程隐藏 EPROCESS结构小结

win7下用windbg工具查看结构信息: ....... 在这个结构中有我们关心的两个数据,一个是偏移0x88处的ActiveProcessLinks,另一个是偏移0xc4处的ObjectT...
  • rosykee
  • rosykee
  • 2015年02月06日 10:27
  • 1077

EPROCESS 结构

每个进程都有一个 EPROCESS 结构,里面保存着进程的各种信息,和相关结构的指针。EPROCESS 结构位于系统地址空间,所以访问这个结构需要有ring0的权限。使用 Win2k DDK 的 KD...
  • swanabin
  • swanabin
  • 2016年07月05日 15:48
  • 1294
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EPROCESS:NT进程的核心(更新)
举报原因:
原因补充:

(最多只允许输入30个字)