首页
社区
课程
招聘
[求助]请问大侠们一个问题!谢谢!!
发表于: 2010-7-9 13:14 3538

[求助]请问大侠们一个问题!谢谢!!

2010-7-9 13:14
3538
一、 EPROCESS中:
    1、EPROCESS-->ImageFileName(很常用,冰刃获取进程名的地方)
    2、 EPROCESS-->SeAuditProcessCreationInfo->ImageFileName(任务管理器获取进程名的地 方,NtQueryInformationProcess就是从这里获取进程名的)

在第一中情况下,我们通过IoGetCurrentProcess获得EPROCESS结构后,可以通过
(*(PULONG)(peProcess + 0x1F4)来获取ImageFileName,如果是第二种呢?第二种应该怎么找ImageFileName?讲解一下,谢谢!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 37
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
lkd> dt _EPROCESS
nt!_EPROCESS
+0x1f4 SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO
+0x1f8 Vm               : _MMSUPPORT

再看看_SE_AUDIT_PROCESS_CREATION_INFO

lkd> dt _SE_AUDIT_PROCESS_CREATION_INFO
nt!_SE_AUDIT_PROCESS_CREATION_INFO
   +0x000 ImageFileName    : Ptr32 _OBJECT_NAME_INFORMATION

这不是一回事么  两种情况都是偏移+0x1f4
2010-7-9 14:16
0
雪    币: 182
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢你的解答,我明白了,不过我还有个问题,但如果是这种方法呢//EPROCESS->SectionObject->Segment->ControlArea->FileObject->FileName
代码如下
#  tmp=*(PULONG)(pProcess+0x138);
#     tmp=*(PULONG)(tmp+0x14);
#     tmp=*(PULONG)tmp;
#     tmp=*(PULONG)(tmp+0x024);
#     FindAndChangeUni(tmp+0x030);
为什么要这样写呢?为什么不可以写成
tmp=*(PULONG)(pProcess+0x138+0x14+00x024.....);
请讲解,谢谢!
2010-7-9 15:47
0
雪    币: 37
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
我觉得是清晰些 起码你知道都加了什么偏移   
没区别

此贴包括上贴仅供参考
以你自己使用WINDBG查看
并DBGPRINT打印测试出来的实际结果为准
2010-7-9 20:53
0
雪    币: 392
活跃值: (89)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
上面的写法是错误的,并非简单的数值相加;画出内存模型来,一级一级加指针偏移,容易你理解;区分指针变量地址和指针所指向的内容的区别
2010-7-9 21:00
0
游客
登录 | 注册 方可回帖
返回
//