@@ -48,6 +48,7 @@ func (p psProcessor) ProcessEvent(e *kevent.Kevent) (*kevent.Kevent, bool, error
4848 p .regionProber .Remove (evt .Kparams .MustGetPid ())
4949 return evt , false , multierror .Wrap (err , p .psnap .Remove (evt ))
5050 }
51+
5152 return evt , false , multierror .Wrap (err , p .psnap .Write (evt ))
5253 case ktypes .CreateThread , ktypes .TerminateThread , ktypes .ThreadRundown :
5354 pid , err := e .Kparams .GetPid ()
@@ -65,6 +66,7 @@ func (p psProcessor) ProcessEvent(e *kevent.Kevent) (*kevent.Kevent, bool, error
6566 if err != nil {
6667 return e , false , err
6768 }
69+
6870 return e , false , p .psnap .RemoveThread (pid , tid )
6971 case ktypes .OpenProcess , ktypes .OpenThread :
7072 pid , err := e .Kparams .GetPid ()
@@ -76,8 +78,10 @@ func (p psProcessor) ProcessEvent(e *kevent.Kevent) (*kevent.Kevent, bool, error
7678 e .AppendParam (kparams .Exe , kparams .FilePath , proc .Exe )
7779 e .AppendParam (kparams .ProcessName , kparams .AnsiString , proc .Name )
7880 }
81+
7982 return e , false , nil
8083 }
84+
8185 return e , true , nil
8286}
8387
@@ -105,7 +109,7 @@ func (p psProcessor) processEvent(e *kevent.Kevent) (*kevent.Kevent, error) {
105109
106110 // query process start time
107111 pid := e .Kparams .MustGetPid ()
108- started , err := getStartTime (pid )
112+ started , err := getStartTime (pid , e )
109113 if err != nil {
110114 started = e .Timestamp
111115 }
@@ -117,10 +121,10 @@ func (p psProcessor) processEvent(e *kevent.Kevent) (*kevent.Kevent, error) {
117121func (psProcessor ) Name () ProcessorType { return Ps }
118122func (p psProcessor ) Close () {}
119123
120- func getStartTime (pid uint32 ) (time.Time , error ) {
124+ func getStartTime (pid uint32 , e * kevent. Kevent ) (time.Time , error ) {
121125 proc , err := windows .OpenProcess (windows .PROCESS_QUERY_LIMITED_INFORMATION , false , pid )
122126 if err != nil {
123- return time . Now () , err
127+ return e . Timestamp , err
124128 }
125129 //nolint:errcheck
126130 defer windows .CloseHandle (proc )
@@ -132,7 +136,7 @@ func getStartTime(pid uint32) (time.Time, error) {
132136 )
133137 err = windows .GetProcessTimes (proc , & ct , & xt , & kt , & ut )
134138 if err != nil {
135- return time . Now () , err
139+ return e . Timestamp , err
136140 }
137141 return time .Unix (0 , ct .Nanoseconds ()), nil
138142}
0 commit comments