能力值:
( LV2,RANK:10 )
|
-
-
2 楼
怎么没人顶一下呢?自己先杀伐一下
|
能力值:
( 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看的 偏移确实不一样
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
,沉了
|
能力值:
( 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("无法找到");
}
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谢楼上的回帖,我主要是学习内核下的数据结构,是在内核下获取相关结构,呵呵
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢大家的支持,问题已经解决,根据.EPROCESS-->(0x1a8)PEB-->(0x10)ProcessParameters-->(0x38)ImagePathName获取到数据,但并不是所有的进程创建的路径成功获取,有的时候相应位置的数据时非法的,不能访问,难道是在进程创建的时候没有填充了相应位?或者是被抹了?父进程的信息应该总是能获取的才是正确的啊,子进程是不能获取的,难道是因为子进程的peb还未填充?
|
|
|