您的位置:首页 > 其它

如何获取进程/目标对象的全路径?

2016-04-10 01:37 781 查看
PID->eprocess->KeStackAttachProcess->ZwQueryInformationProcess->ProcessImageFileName->ZwCreateFile

->ObReferenceObjectByHandle->RtlVolumeDeviceToDosName

->ZwQueryInformationFile


如何获取目标对象的全路径?



Handle

ObReferenceObjectByHandleIoQueryFileDosDeviceName

ObReferenceObjectByHandleObQueryNameString(强删文件例子里)

IRP查询(FILEMON4.34中FilemonQueryFile函数)

FltGetName(minifilter)

我知道的方法:


参考小伟同学的《伪造进程初探》一文

进程全路径:

1.EPROCESS->ImageFileName(进程名)

2.EPROCESS->SeAuditProcessCreationInfo->ImageFileName

3.EPROCESS->SectionObject->Segment->ControlArea->FilePointer->FileName

4.EPROCESS->PEB->ProcessParameters->ImagePathName

5.EPROCESS->PEB->ProcessParameters->CommandLine

6.EPROCESS->PEB->ProcessParameters->WindowTitle

7.EPROCESS->PEB->Ldr->InLoadOrderLinks->FullDllName

8.EPROCESS->PEB->Ldr->InMemoryOrderLinks->FullDllName(进程名)

其实一个从EPROCESS->VADRoot->RightChild->ControlArea->FilePointer->FileName获取路径的。

但因为这里面的ControlArea和方法3的ControlArea是同一个,所以可以忽略了。

一、EPROCESS中:

1、EPROCESS-->ImageFileName(很常用,冰刃获取进程名的地方)

2、EPROCESS-->SeAuditProcessCreationInfo->ImageFileName(任务管理器获取进程名的地方,NtQueryInformationProcess就是从这里获取进程名的)

3、EPROCESS->SectionObject->Segment->ControlArea->FileObject->FileName(RKU获取进程名的方法)

4、VAD(记录用户空间内存分配情况的数据结构,里面当然有进程的exe模块)

二、PEB中:

1、PEB-->ProcessParameters-->ImagePathName

2、PEB-->ProcessParameters-->CommandLine

3、PEB-->ProcessParameters-->WindowTitle(这个地方比较奇怪,如果双击的是exe的快捷方式,则记录的是快捷方式的路径,还是一并改掉的好)

4、PEB-->LDR-->InLoadOrderModuleList->第一个结构->FullDllName

5、PEB-->LDR-->InLoadOrderModuleList->第一个结构->BaseDllName

6、PEB-->LDR-->InMemoryOrderModuleList->第一个结构->FullDllName(此处的BaseDllName貌似为NULL,就不管它了)

(PEB-->LDR-->InInitializationOrderModuleList这个表里貌似没有exe模块,也不管它了)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: