(t *testing.T)
| 221 | } |
| 222 | |
| 223 | func 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) |
nothing calls this directly
no test coverage detected