DQQQQQ 发表于 2022-5-18 17:09

Windows父进程怎么判断是否是TOP进程


今天写一个东西时候,出现了三个进程,循环的构成父进程。就导致自己代码无限循环了。但是ProcessExplorer就可以判断TOP进程。


那么他的判断机制是什么呢,百度谷歌都没有找到这个资料,没办法。逆向下ProcessExplorer,TOP 进程有个Not-existentprocess标志。




X64dbg找到这个字符串标志下,断点。这里一堆的比较,没有搞懂他的作用,看起来像是从一个list里面,比较是否是相等的PID。



既然x64dbg看不出相应的信息。那就上IDA来分析

引用这个字符串的地方还挺多的


都去F5查看函数构成。可以看到他在遍历一个全局的变量,来判断是否要添加Not-existent process标志


去找SystemInformation变量的写入


可以看出他根本没有利用什么特别的API遍历进程,也没有做特别的判断。为啥就可以判断TOP进程,注意上面有个GetSystemTimeAsFileTime,为什么要获取时间呢。难道是利用进程时间+父进程PID来判断TOP进程??我直接吧系统时间改小,然后建立一个进程.可以直接就变成了TOP进程了

也许有其他办法,但是目前我就分析出了这一种方法。

tfrist 发表于 2022-5-20 03:08

ProcessExplorer,TOP 进程有个Not-existentprocess标志, 不是top进程吧。而是父进程已经关了 找不到了才有的提示。

IBinary 发表于 2022-5-18 19:06

ProcessHack代码是开源的,跟ProcessExplorer差不多。 而且如何判断父进程 使用进程快照,进程快照遍历出进程之后你可以看到它结构体里面有个字段,这个字段就是记录的父进程PID。 剩下的就是自己堆逻辑了。比如把遍历到的进程的父进程PID都存起来。再把遍历到的进程PID存起来。他俩就是一个映射关系。 可以用vectoy 或者list存起来。最后自己遍历list来看映射关系。

aonima 发表于 2022-5-18 19:31

直接查看父进程id就行了

yp17792351859 发表于 2022-5-18 20:26

top 进程 理论上没有父进程,需要进一步研究

haolaogong 发表于 2022-5-18 21:59

看了两趟还是看不明白!我比较笨吧!辛苦楼主了!:handshake

灵魂守卫 发表于 2022-5-18 22:46

不明觉厉,只会任务管理器

DQQQQQ 发表于 2022-5-19 08:43

aonima 发表于 2022-5-18 19:31
直接查看父进程id就行了

看ID不行,你注意看上面,我写了。三个进程循环构成了父进程。a-->bb--->c c-->a就变成了无限无限循环了。

DQQQQQ 发表于 2022-5-19 08:44

IBinary 发表于 2022-5-18 19:06
ProcessHack代码是开源的,跟ProcessExplorer差不多。 而且如何判断父进程 使用进程快照,进程快照遍历出进 ...

你要形成进程树时候,就要判断TOP进程了。 a--->bb--->c c--->a 就构成了循环了。会无法判断哪个是TOP层

DQQQQQ 发表于 2022-5-19 08:45

haolaogong 发表于 2022-5-18 21:59
看了两趟还是看不明白!我比较笨吧!辛苦楼主了!

简单说,就是形成进程树时候。怎么判断哪个可以做根节点。

IBinary 发表于 2022-5-19 09:38

DQQQQQ 发表于 2022-5-19 08:44
你要形成进程树时候,就要判断TOP进程了。 a--->bb--->c c--->a 就构成了循环了。会无法判断哪个是TOP ...

嗷嗷沈错题了。哈哈抱歉。
页: [1] 2 3 4
查看完整版本: Windows父进程怎么判断是否是TOP进程