liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
阅读:1636回复:9

关于NT内核模式中的进程问题,一直都没人解决,不知大牛们对此有何看法??

楼主#
更多 发布于:2007-01-08 08:47
  根据IRP既然可以得到宿主进程的信息,如名字和路径,那么能否得到宿主进程的ID呢?
是有代码可以得到IRP的进程ID的,得到的是PEPROCESS ProcessID,那么这个进程ID和用户模式的任务管理器中看到的进程ID有什么关系??它们是同一个东西吗???内核模式中由一个进程ID如何得到其父进程的ID??
我看到微软的例子中都是用下面的结构定义进程ID:
typedef struct _EPROCESS *PEPROCESS;
为什么进程ID是一个结构的地址??这个结构的具体细节如何知道??

 
大家好
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-08 17:53
看一下filemon的代码问题差不多都解决了,,
剩下的问题在于如何根据一个进程的ID得到父进程ID??
有大牛可以帮忙吗???
大家好
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-08 15:39
http://dev.csdn.net/develop/article/20/20210.shtm
EPROCESS 结构
这篇文章说得很清楚,
进程ID (PID)

+09c void *UniqueProcessId

父进程ID

+1c8 void *InheritedFromUniqueProcessId
大家好
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-08 14:51
下载symbols文件
大家好
mpAkenrUI
驱动牛犊
驱动牛犊
  • 注册日期2004-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-08 14:45
windbg : dt _EPROCESS or dt _ETHREAD need symbols
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
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的成员名称及其偏移量。
大家好
NewBaby.Natas
驱动牛犊
驱动牛犊
  • 注册日期2007-01-05
  • 最后登录2007-01-30
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-01-08 13:29
DDK头文件里应该都有定义吧?
流氓不可怕,就怕流氓有文化。
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
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
大家好
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-01-08 09:18
引用第1楼znsoft2007-01-08 09:04发表的“”:
里面有比你想到的多得多的信息


"里面"指的是什么?
大家好
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
9楼#
发布于:2007-01-08 09:04
里面有比你想到的多得多的信息
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部