MCPcopy Create free account
hub / github.com/codeyourweb/irma / GetProcessMemory

Function GetProcessMemory

procsmemory.go:106–130  ·  view source on GitHub ↗

GetProcessMemory return a process memory dump based on its handle

(pid uint32, handle windows.Handle, verbose bool)

Source from the content-addressed store, hash-verified

104
105// GetProcessMemory return a process memory dump based on its handle
106func GetProcessMemory(pid uint32, handle windows.Handle, verbose bool) (ProcessInformation, []byte, error) {
107
108 procFilename, modules, err := GetProcessModulesHandles(handle)
109 if err != nil {
110 return ProcessInformation{}, nil, fmt.Errorf("Unable to get PID %d memory: %s", pid, err.Error())
111 }
112
113 for _, moduleHandle := range modules {
114 if moduleHandle != 0 {
115 moduleRawName, err := GetModuleFileNameEx(handle, moduleHandle, 512)
116 if err != nil {
117 return ProcessInformation{}, nil, err
118 }
119 moduleRawName = bytes.Trim(moduleRawName, "\x00")
120 modulePath := strings.Split(string(moduleRawName), "\\")
121 moduleFileName := modulePath[len(modulePath)-1]
122
123 if procFilename == moduleFileName {
124 return ProcessInformation{PID: pid, ProcessName: procFilename, ProcessPath: string(moduleRawName)}, DumpModuleMemory(handle, moduleHandle, verbose), nil
125 }
126 }
127 }
128
129 return ProcessInformation{}, nil, fmt.Errorf("Unable to get PID %d memory: no module corresponding to process name", pid)
130}
131
132// KillProcessByID try to kill the specified PID
133func KillProcessByID(procID uint32, verbose bool) (err error) {

Callers 1

ListProcessFunction · 0.85

Calls 3

GetProcessModulesHandlesFunction · 0.85
GetModuleFileNameExFunction · 0.85
DumpModuleMemoryFunction · 0.85

Tested by

no test coverage detected