wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1511回复:7

PPEB EPROCESS

楼主#
更多 发布于:2005-05-19 11:12
在 EPROCESS 中有个指针p指向PEB,而PEB这个结构应该是用户空间的.
(1)在有的时候,在内核中使用p可以获得一些信息
(2)有的时候却不能,例如在DriverEntry中,这是因为对于p而言,其地址是用户空间的地址,如果你 *p 就会stop.

现在的问题是:
给定一个eprocess(用户空间的进程的),如何安全访问 PEB呢,也就是
*p 是安全的.
琢磨悟真知
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-25 09:55
[quote]

我打开了一个普通用户进程
NTSTATUS DriverEntry( IN PDRIVER_OBJECT  DriverObject,IN PUNICODE_STRING  RegistryPath )
{
......
NtRtn = ZwOpenProcess(&OpenProcessHandle,READ_CONTROL ,&Objattr,&ClientId);
}

if(NT_SUCCESS(NtRtn))
{
KeAttachProcess(OpenProcessHandle);
...
KeDetachProcess() ;
}
}

系统进程是没有PEB的. [/quote]
PEB对于System 和Idle有用吗,它们进用户区吗,其实他们都是OS造出来的,叫他们进程只是挂个名而已,它们有用户地址空间吗?
2003 server sp1下载地址
http://www.microsoft.com/downloads/details.aspx?familyid=22CFC239-337C-4D81-8354-72593B1C1F43&displaylang=en
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-05-23 09:16


我打开了一个普通用户进程
NTSTATUS DriverEntry( IN PDRIVER_OBJECT  DriverObject,IN PUNICODE_STRING  RegistryPath )
{
......
NtRtn = ZwOpenProcess(&OpenProcessHandle,READ_CONTROL ,&Objattr,&ClientId);
}

if(NT_SUCCESS(NtRtn))
{
KeAttachProcess(OpenProcessHandle);
...
KeDetachProcess() ;
}
}

系统进程是没有PEB的.
琢磨悟真知
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-23 08:54
如果是确定上下文还可以
用ProbeForRead
如果非确定上下文,需要地址映射
IoAllocateMdl
MmProbeAndLockPages
MmGetSystemAddressForMdlSafe
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-05-19 12:13
[quote][quote][quote]在 EPROCESS 中有个指针p指向PEB,而PEB这个结构应该是用户空间的.
(1)在有的时候,在内核中使用p可以获得一些信息
(2)有的时候却不能,例如在DriverEntry中,这是因为对于p而言,其地址是用户空间的地址,如果你 *p 就会stop.

现在的问题是:
给定一个eprocess(用户空间的进程的),如何安全访问 PEB呢,也就是
*p 是安全的.

KeAttachProcess [/quote]

法帖前就试了,stop!了 [/quote]
怎么用的,在哪里stop了 [/quote]

我打开了一个普通用户进程
NTSTATUS DriverEntry( IN PDRIVER_OBJECT  DriverObject,IN PUNICODE_STRING  RegistryPath )
{
......
NtRtn = ZwOpenProcess(&OpenProcessHandle,READ_CONTROL ,&Objattr,&ClientId);
}

if(NT_SUCCESS(NtRtn))
{
KeAttachProcess(OpenProcessHandle);
...
KeDetachProcess() ;
}
}
琢磨悟真知
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-19 12:06
[quote][quote]在 EPROCESS 中有个指针p指向PEB,而PEB这个结构应该是用户空间的.
(1)在有的时候,在内核中使用p可以获得一些信息
(2)有的时候却不能,例如在DriverEntry中,这是因为对于p而言,其地址是用户空间的地址,如果你 *p 就会stop.

现在的问题是:
给定一个eprocess(用户空间的进程的),如何安全访问 PEB呢,也就是
*p 是安全的.

KeAttachProcess [/quote]

法帖前就试了,stop!了 [/quote]
怎么用的,在哪里stop了
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2005-05-19 11:43
[quote]在 EPROCESS 中有个指针p指向PEB,而PEB这个结构应该是用户空间的.
(1)在有的时候,在内核中使用p可以获得一些信息
(2)有的时候却不能,例如在DriverEntry中,这是因为对于p而言,其地址是用户空间的地址,如果你 *p 就会stop.

现在的问题是:
给定一个eprocess(用户空间的进程的),如何安全访问 PEB呢,也就是
*p 是安全的.

KeAttachProcess [/quote]

法帖前就试了,stop!了
琢磨悟真知
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-19 11:28
在 EPROCESS 中有个指针p指向PEB,而PEB这个结构应该是用户空间的.
(1)在有的时候,在内核中使用p可以获得一些信息
(2)有的时候却不能,例如在DriverEntry中,这是因为对于p而言,其地址是用户空间的地址,如果你 *p 就会stop.

现在的问题是:
给定一个eprocess(用户空间的进程的),如何安全访问 PEB呢,也就是
*p 是安全的.

KeAttachProcess
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部