MCPcopy Create free account
hub / github.com/rabbitstack/fibratus / TestProcessCallstack

Function TestProcessCallstack

pkg/symbolize/symbolizer_test.go:223–305  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

221}
222
223func TestProcessCallstack(t *testing.T) {
224 r := new(MockResolver)
225 c := &config.Config{}
226
227 psnap := new(ps.SnapshotterMock)
228
229 opts := uint32(sys.SymUndname | sys.SymCaseInsensitive | sys.SymAutoPublics | sys.SymOmapFindNearest | sys.SymDeferredLoads)
230 r.On("Initialize", mock.Anything, opts).Return(nil)
231 r.On("LoadModule", windows.CurrentProcess(), mock.Anything).Return(nil)
232
233 r.On("GetModuleName", mock.Anything, mock.Anything).Return("C:\\WINDOWS\\System32\\KERNEL32.DLL").Once()
234 r.On("GetModuleName", mock.Anything, mock.Anything).Return("C:\\WINDOWS\\System32\\KERNELBASE.dll").Once()
235 r.On("GetModuleName", mock.Anything, mock.Anything).Return("C:\\WINDOWS\\System32\\ntdll.dll").Times(3)
236
237 r.On("GetSymbolNameAndOffset", mock.Anything, mock.Anything).Return("CreateProcessW", 0x54).Once()
238 r.On("GetSymbolNameAndOffset", mock.Anything, mock.Anything).Return("CreateProcessW", 0x66).Once()
239 r.On("GetSymbolNameAndOffset", mock.Anything, mock.Anything).Return("NtCreateProcess", 0x3a2).Once()
240 r.On("GetSymbolNameAndOffset", mock.Anything, mock.Anything).Return("NtCreateProcessEx", 0x3a2).Times(2)
241
242 r.On("Cleanup", mock.Anything)
243
244 s := NewSymbolizer(r, psnap, c, false)
245 require.NotNil(t, s)
246
247 proc := &pstypes.PS{
248 Name: "notepad.exe",
249 PID: 23234,
250 Ppid: 2434,
251 Exe: `C:\Windows\notepad.exe`,
252 Cmdline: `C:\Windows\notepad.exe`,
253 SID: "S-1-1-18",
254 Cwd: `C:\Windows\`,
255 SessionID: 1,
256 Threads: map[uint32]pstypes.Thread{
257 3453: {Tid: 3453, StartAddress: va.Address(140729524944768), IOPrio: 2, PagePrio: 5, KstackBase: va.Address(18446677035730165760), KstackLimit: va.Address(18446677035730137088), UstackLimit: va.Address(86376448), UstackBase: va.Address(86372352)},
258 3455: {Tid: 3455, StartAddress: va.Address(140729524944768), IOPrio: 3, PagePrio: 5, KstackBase: va.Address(18446677035730165760), KstackLimit: va.Address(18446677035730137088), UstackLimit: va.Address(86376448), UstackBase: va.Address(86372352)},
259 },
260 Envs: map[string]string{"ProgramData": "C:\\ProgramData", "COMPUTRENAME": "archrabbit"},
261 }
262 e := &event.Event{
263 Type: event.CreateProcess,
264 Tid: 2484,
265 PID: 2232,
266 CPU: 1,
267 Seq: 2,
268 Name: "CreatedProcess",
269 Timestamp: time.Now(),
270 Category: event.Process,
271 Host: "archrabbit",
272 Params: event.Params{
273 params.ProcessParentID: {Name: params.ProcessParentID, Type: params.PID, Value: (uint32(os.Getpid()))},
274 params.ProcessRealParentID: {Name: params.ProcessRealParentID, Type: params.PID, Value: (uint32(os.Getpid()))},
275 params.Callstack: {Name: params.Callstack, Type: params.Slice, Value: []va.Address{0x7ffb5c1d0396, 0x7ffb5d8e61f4, 0x7ffb3138592e, 0x7ffb313853b2, 0x2638e59e0a5}},
276 },
277 PS: proc,
278 }
279
280 _, err := s.ProcessEvent(e)

Callers

nothing calls this directly

Calls 6

ProcessEventMethod · 0.95
procsSizeMethod · 0.95
AddressTypeAlias · 0.92
NewSymbolizerFunction · 0.85
EqualMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected