阅读:1636回复:9
关于NT内核模式中的进程问题,一直都没人解决,不知大牛们对此有何看法??
根据IRP既然可以得到宿主进程的信息,如名字和路径,那么能否得到宿主进程的ID呢?
是有代码可以得到IRP的进程ID的,得到的是PEPROCESS ProcessID,那么这个进程ID和用户模式的任务管理器中看到的进程ID有什么关系??它们是同一个东西吗???内核模式中由一个进程ID如何得到其父进程的ID?? 我看到微软的例子中都是用下面的结构定义进程ID: typedef struct _EPROCESS *PEPROCESS; 为什么进程ID是一个结构的地址??这个结构的具体细节如何知道?? ![]() |
|
|
沙发#
发布于:2007-01-08 17:53
看一下filemon的代码问题差不多都解决了,,
剩下的问题在于如何根据一个进程的ID得到父进程ID?? 有大牛可以帮忙吗??? |
|
|
板凳#
发布于:2007-01-08 15:39
http://dev.csdn.net/develop/article/20/20210.shtm
EPROCESS 结构 这篇文章说得很清楚, 进程ID (PID) +09c void *UniqueProcessId 父进程ID +1c8 void *InheritedFromUniqueProcessId |
|
|
地板#
发布于:2007-01-08 14:51
下载symbols文件
|
|
|
地下室#
发布于:2007-01-08 14:45
windbg : dt _EPROCESS or dt _ETHREAD need symbols
|
|
5楼#
发布于:2007-01-08 14:16
终于明白了..这些是微软没有公开没有文档的秘密..
---------------------------- 美国曾进出过两本很有影响的书,一本叫《Undocumented DOS》,另外一本叫《Undocumented Windows》,两本书都被列入DOS/Windows系统程序员的必备工具书。在这两本书中,作者们(Andrew Schulman, David Maxey, Matt Pietrek等)一一列举了进过他们辛勤努力才破译和总结出来的DOS/Windows API实际上提供了但确没有列入Microsoft技术资料的许多有用(而且重要)的功能。作者们认为,Microsoft没有讲这些功能列入其技术资料的原因是无法用疏忽或者遗漏加以解释的,而只能是故意向用户隐瞒。 --------------------------- 《Undocumented Windows 2000 Secrets简体中文版.pdf》一书中写道: 未文档化,但并没有隐藏:这些信息不能在任何官方文档和开发文档中找到,但其中的一部分对调试工具是可用的。可执行文件或符号文件中的所有符号化信息都属于这一部分。最好的例子是内核调试器的!processfields和!threadfields命令,这两个命令会给出两个未文档化的结构:EPROCESS和ETHREAD的成员名称及其偏移量。 |
|
|
6楼#
发布于:2007-01-08 13:29
DDK头文件里应该都有定义吧?
|
|
|
7楼#
发布于:2007-01-08 09:39
天啊,EPROCESS 结构里面有这么多东西啊???
这个结构的定义哪里有啊? 2. 查看EPROCESS结构 kd> !processfields !processfields EPROCESS structure offsets: Pcb: 0x0 ExitStatus: 0x6c LockEvent: 0x70 LockCount: 0x80 CreateTime: 0x88 ExitTime: 0x90 LockOwner: 0x98 UniqueProcessId: 0x9c ActiveProcessLinks: 0xa0 QuotaPeakPoolUsage[0]: 0xa8 QuotaPoolUsage[0]: 0xb0 PagefileUsage: 0xb8 CommitCharge: 0xbc PeakPagefileUsage: 0xc0 PeakVirtualSize: 0xc4 VirtualSize: 0xc8 Vm: 0xd0 DebugPort: 0x120 ExceptionPort: 0x124 ObjectTable: 0x128 Token: 0x12c WorkingSetLock: 0x130 WorkingSetPage: 0x150 ProcessOutswapEnabled: 0x154 ProcessOutswapped: 0x155 AddressSpaceInitialized: 0x156 AddressSpaceDeleted: 0x157 AddressCreationLock: 0x158 ForkInProgress: 0x17c VmOperation: 0x180 VmOperationEvent: 0x184 PageDirectoryPte: 0x1f0 LastFaultCount: 0x18c VadRoot: 0x194 VadHint: 0x198 CloneRoot: 0x19c NumberOfPrivatePages: 0x1a0 NumberOfLockedPages: 0x1a4 ForkWasSuccessful: 0x182 ExitProcessCalled: 0x1aa CreateProcessReported: 0x1ab SectionHandle: 0x1ac Peb: 0x1b0 SectionBaseAddress: 0x1b4 QuotaBlock: 0x1b8 LastThreadExitStatus: 0x1bc WorkingSetWatch: 0x1c0 InheritedFromUniqueProcessId: 0x1c8 GrantedAccess: 0x1cc DefaultHardErrorProcessing 0x1d0 LdtInformation: 0x1d4 VadFreeHint: 0x1d8 VdmObjects: 0x1dc DeviceMap: 0x1e0 ImageFileName[0]: 0x1fc VmTrimFaultValue: 0x20c Win32Process: 0x214 Win32WindowStation: 0x1c4 |
|
|
8楼#
发布于:2007-01-08 09:18
引用第1楼znsoft于2007-01-08 09:04发表的“”: "里面"指的是什么? |
|
|
9楼#
发布于:2007-01-08 09:04
里面有比你想到的多得多的信息
|
|
|