1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 from rekall.plugins.linux import common
25
26
28 """Find hidden processes comparing various process listings."""
29
30 __name = "psxview"
31
32 METHODS = common.LinProcessFilter.METHODS + [
33 "PidHashTable",
34 ]
35
36 __args = [
37 dict(name="method", choices=list(METHODS), type="ChoiceArray",
38 default=list(METHODS), help="Method to list processes.",
39 override=True),
40 ]
41
43 headers = [('Offset(V)', 'virtual_offset', '[addrpad]'),
44 ('Name', 'name', '<20'),
45 ('PID', 'pid', '>12'),
46 ]
47
48 for method in self.plugin_args.method:
49 headers.append((method, method, "%s" % len(method)))
50
51 renderer.table_header(headers)
52
53 for process in self.filter_processes():
54 row = [process.obj_offset, process.comm, process.pid]
55
56 for method in self.plugin_args.method:
57 row.append(process.obj_offset in
58 self.session.GetParameter("pslist_%s" % method))
59
60 renderer.table_row(*row)
61
62
64 name = "pslist_PidHashTable"
65
67 seen = set()
68 pidhashtable_plugin = self.session.plugins.pidhashtable()
69 for task in pidhashtable_plugin.filter_processes():
70 if task.obj_offset not in seen:
71 seen.add(task.obj_offset)
72
73 return seen
74