首页
社区
课程
招聘
[求助]eprocess获取路径
发表于: 2011-7-6 20:59 8858

[求助]eprocess获取路径

2011-7-6 20:59
8858

//有一个问题,就是在win7下通过进程句柄获取进程路径的时候总是失败,数据无效。参考了网上的两种获取方法:

以下的偏移量均是在win7(版本 6.1.7601)查看的

1.EPROCESS-->(0x128)SectionObject-->(0x14)Segment-->(0x18)ControlArea-->(0x24)FilePointer,FilePointer的数据有时候会无效。
2.EPROCESS-->(0x1a8)PEB-->(0x10)ProcessParameters-->(0x38)ImagePathName,得到的地址的数据也是无效的,不知是怎么回事,请指点.

驱动中得到的相关结构体的地址我用windbg附加得到得地址是一样的,不知道是怎么回事呢?请大牛指点下。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (7)
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没人顶一下呢?自己先杀伐一下
2011-7-7 08:43
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
dwAddress = (ULONG)PsGetCurrentProcess() ;
   if(dwAddress == 0 || dwAddress == 0xFFFFFFFF) break;
   //dwAddress += 0x1B0;  winxp ,in win7 it is 0x1a8;
   dwAddress += 0x1B0;
   if((dwAddress = *(ULONG*)dwAddress) == 0) break ;
   dwAddress += 0x10;
   if((dwAddress = *(ULONG*)dwAddress) == 0) break ;
   dwAddress += 0x3C;
   if((dwAddress = *(ULONG*)dwAddress) == 0) break ;
   
   DbgPrint("Current Process Full Path Name: %ws\n", (PCWSTR)dwAddress);

我用windbg看的  偏移确实不一样
2011-7-7 09:28
0
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
,沉了
2011-7-8 15:03
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
QString ProcessList::GetModelDir(DWORD pid)
{
        MODULEENTRY32 pe32 = { sizeof(MODULEENTRY32) };

        HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);

        if(Module32First(hSnapshot, &pe32))
        {
                if(pe32.th32ProcessID==pid)
                {
                        CloseHandle(hSnapshot);
                        return QString::fromWCharArray(pe32.szExePath);       
                }

        }

        CloseHandle(hSnapshot);

        return tr("无法找到");
}
2011-7-8 16:06
0
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢楼上的回帖,我主要是学习内核下的数据结构,是在内核下获取相关结构,呵呵
2011-7-11 18:16
0
雪    币: 364
活跃值: (1736)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
http://bbs.pediy.com/showthread.php?t=129136&highlight=%E8%BF%9B%E7%A8%8B+%E7%A8%8B%E8%B7%AF+%E8%B7%AF%E5%BE%84
2011-7-11 18:37
0
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢大家的支持,问题已经解决,根据.EPROCESS-->(0x1a8)PEB-->(0x10)ProcessParameters-->(0x38)ImagePathName获取到数据,但并不是所有的进程创建的路径成功获取,有的时候相应位置的数据时非法的,不能访问,难道是在进程创建的时候没有填充了相应位?或者是被抹了?父进程的信息应该总是能获取的才是正确的啊,子进程是不能获取的,难道是因为子进程的peb还未填充?
2011-7-12 11:53
0
游客
登录 | 注册 方可回帖
返回
//