Added names of syscalls to syscall_info debug print

This commit is contained in:
Elnath 2025-05-17 22:32:00 +02:00
parent b4e7e6864a
commit 7537227636
2 changed files with 377 additions and 0 deletions

View File

@ -6,6 +6,7 @@ This is an alternative implementation that relies on libc and unsafe.
use crate::syscall_info::SyscallInfoError::UnsupportedType; use crate::syscall_info::SyscallInfoError::UnsupportedType;
use std::mem::MaybeUninit; use std::mem::MaybeUninit;
use crate::syscall_names::syscall_name;
#[derive(thiserror::Error, Debug)] #[derive(thiserror::Error, Debug)]
pub enum SyscallInfoError { pub enum SyscallInfoError {
@ -30,6 +31,7 @@ pub enum SyscallInfo {
rip: u64, rip: u64,
#[debug("{stack_pointer:#x}")] #[debug("{stack_pointer:#x}")]
stack_pointer: u64, stack_pointer: u64,
#[debug("{number} ({})", syscall_name(*number))]
number: u64, number: u64,
args: [u64; 6], args: [u64; 6],
}, },

375
src/syscall_names.rs Normal file
View File

@ -0,0 +1,375 @@
#[allow(dead_code)]
pub fn syscall_name(syscall_number: u64) -> &'static str {
// From https://github.com/torvalds/linux/blob/v6.7/arch/x86/entry/syscalls/syscall_64.tbl
match syscall_number {
0 => "read",
1 => "write",
2 => "open",
3 => "close",
4 => "stat",
5 => "fstat",
6 => "lstat",
7 => "poll",
8 => "lseek",
9 => "mmap",
10 => "mprotect",
11 => "munmap",
12 => "brk",
13 => "rt_sigaction",
14 => "rt_sigprocmask",
15 => "rt_sigreturn",
16 => "ioctl",
17 => "pread64",
18 => "pwrite64",
19 => "readv",
20 => "writev",
21 => "access",
22 => "pipe",
23 => "select",
24 => "sched_yield",
25 => "mremap",
26 => "msync",
27 => "mincore",
28 => "madvise",
29 => "shmget",
30 => "shmat",
31 => "shmctl",
32 => "dup",
33 => "dup2",
34 => "pause",
35 => "nanosleep",
36 => "getitimer",
37 => "alarm",
38 => "setitimer",
39 => "getpid",
40 => "sendfile",
41 => "socket",
42 => "connect",
43 => "accept",
44 => "sendto",
45 => "recvfrom",
46 => "sendmsg",
47 => "recvmsg",
48 => "shutdown",
49 => "bind",
50 => "listen",
51 => "getsockname",
52 => "getpeername",
53 => "socketpair",
54 => "setsockopt",
55 => "getsockopt",
56 => "clone",
57 => "fork",
58 => "vfork",
59 => "execve",
60 => "exit",
61 => "wait4",
62 => "kill",
63 => "uname",
64 => "semget",
65 => "semop",
66 => "semctl",
67 => "shmdt",
68 => "msgget",
69 => "msgsnd",
70 => "msgrcv",
71 => "msgctl",
72 => "fcntl",
73 => "flock",
74 => "fsync",
75 => "fdatasync",
76 => "truncate",
77 => "ftruncate",
78 => "getdents",
79 => "getcwd",
80 => "chdir",
81 => "fchdir",
82 => "rename",
83 => "mkdir",
84 => "rmdir",
85 => "creat",
86 => "link",
87 => "unlink",
88 => "symlink",
89 => "readlink",
90 => "chmod",
91 => "fchmod",
92 => "chown",
93 => "fchown",
94 => "lchown",
95 => "umask",
96 => "gettimeofday",
97 => "getrlimit",
98 => "getrusage",
99 => "sysinfo",
100 => "times",
101 => "ptrace",
102 => "getuid",
103 => "syslog",
104 => "getgid",
105 => "setuid",
106 => "setgid",
107 => "geteuid",
108 => "getegid",
109 => "setpgid",
110 => "getppid",
111 => "getpgrp",
112 => "setsid",
113 => "setreuid",
114 => "setregid",
115 => "getgroups",
116 => "setgroups",
117 => "setresuid",
118 => "getresuid",
119 => "setresgid",
120 => "getresgid",
121 => "getpgid",
122 => "setfsuid",
123 => "setfsgid",
124 => "getsid",
125 => "capget",
126 => "capset",
127 => "rt_sigpending",
128 => "rt_sigtimedwait",
129 => "rt_sigqueueinfo",
130 => "rt_sigsuspend",
131 => "sigaltstack",
132 => "utime",
133 => "mknod",
134 => "uselib",
135 => "personality",
136 => "ustat",
137 => "statfs",
138 => "fstatfs",
139 => "sysfs",
140 => "getpriority",
141 => "setpriority",
142 => "sched_setparam",
143 => "sched_getparam",
144 => "sched_setscheduler",
145 => "sched_getscheduler",
146 => "sched_get_priority_max",
147 => "sched_get_priority_min",
148 => "sched_rr_get_interval",
149 => "mlock",
150 => "munlock",
151 => "mlockall",
152 => "munlockall",
153 => "vhangup",
154 => "modify_ldt",
155 => "pivot_root",
156 => "_sysctl",
157 => "prctl",
158 => "arch_prctl",
159 => "adjtimex",
160 => "setrlimit",
161 => "chroot",
162 => "sync",
163 => "acct",
164 => "settimeofday",
165 => "mount",
166 => "umount2",
167 => "swapon",
168 => "swapoff",
169 => "reboot",
170 => "sethostname",
171 => "setdomainname",
172 => "iopl",
173 => "ioperm",
174 => "create_module",
175 => "init_module",
176 => "delete_module",
177 => "get_kernel_syms",
178 => "query_module",
179 => "quotactl",
180 => "nfsservctl",
181 => "getpmsg",
182 => "putpmsg",
183 => "afs_syscall",
184 => "tuxcall",
185 => "security",
186 => "gettid",
187 => "readahead",
188 => "setxattr",
189 => "lsetxattr",
190 => "fsetxattr",
191 => "getxattr",
192 => "lgetxattr",
193 => "fgetxattr",
194 => "listxattr",
195 => "llistxattr",
196 => "flistxattr",
197 => "removexattr",
198 => "lremovexattr",
199 => "fremovexattr",
200 => "tkill",
201 => "time",
202 => "futex",
203 => "sched_setaffinity",
204 => "sched_getaffinity",
205 => "set_thread_area",
206 => "io_setup",
207 => "io_destroy",
208 => "io_getevents",
209 => "io_submit",
210 => "io_cancel",
211 => "get_thread_area",
212 => "lookup_dcookie",
213 => "epoll_create",
214 => "epoll_ctl_old",
215 => "epoll_wait_old",
216 => "remap_file_pages",
217 => "getdents64",
218 => "set_tid_address",
219 => "restart_syscall",
220 => "semtimedop",
221 => "fadvise64",
222 => "timer_create",
223 => "timer_settime",
224 => "timer_gettime",
225 => "timer_getoverrun",
226 => "timer_delete",
227 => "clock_settime",
228 => "clock_gettime",
229 => "clock_getres",
230 => "clock_nanosleep",
231 => "exit_group",
232 => "epoll_wait",
233 => "epoll_ctl",
234 => "tgkill",
235 => "utimes",
236 => "vserver",
237 => "mbind",
238 => "set_mempolicy",
239 => "get_mempolicy",
240 => "mq_open",
241 => "mq_unlink",
242 => "mq_timedsend",
243 => "mq_timedreceive",
244 => "mq_notify",
245 => "mq_getsetattr",
246 => "kexec_load",
247 => "waitid",
248 => "add_key",
249 => "request_key",
250 => "keyctl",
251 => "ioprio_set",
252 => "ioprio_get",
253 => "inotify_init",
254 => "inotify_add_watch",
255 => "inotify_rm_watch",
256 => "migrate_pages",
257 => "openat",
258 => "mkdirat",
259 => "mknodat",
260 => "fchownat",
261 => "futimesat",
262 => "newfstatat",
263 => "unlinkat",
264 => "renameat",
265 => "linkat",
266 => "symlinkat",
267 => "readlinkat",
268 => "fchmodat",
269 => "faccessat",
270 => "pselect6",
271 => "ppoll",
272 => "unshare",
273 => "set_robust_list",
274 => "get_robust_list",
275 => "splice",
276 => "tee",
277 => "sync_file_range",
278 => "vmsplice",
279 => "move_pages",
280 => "utimensat",
281 => "epoll_pwait",
282 => "signalfd",
283 => "timerfd_create",
284 => "eventfd",
285 => "fallocate",
286 => "timerfd_settime",
287 => "timerfd_gettime",
288 => "accept4",
289 => "signalfd4",
290 => "eventfd2",
291 => "epoll_create1",
292 => "dup3",
293 => "pipe2",
294 => "inotify_init1",
295 => "preadv",
296 => "pwritev",
297 => "rt_tgsigqueueinfo",
298 => "perf_event_open",
299 => "recvmmsg",
300 => "fanotify_init",
301 => "fanotify_mark",
302 => "prlimit64",
303 => "name_to_handle_at",
304 => "open_by_handle_at",
305 => "clock_adjtime",
306 => "syncfs",
307 => "sendmmsg",
308 => "setns",
309 => "getcpu",
310 => "process_vm_readv",
311 => "process_vm_writev",
312 => "kcmp",
313 => "finit_module",
314 => "sched_setattr",
315 => "sched_getattr",
316 => "renameat2",
317 => "seccomp",
318 => "getrandom",
319 => "memfd_create",
320 => "kexec_file_load",
321 => "bpf",
322 => "execveat",
323 => "userfaultfd",
324 => "membarrier",
325 => "mlock2",
326 => "copy_file_range",
327 => "preadv2",
328 => "pwritev2",
329 => "pkey_mprotect",
330 => "pkey_alloc",
331 => "pkey_free",
332 => "statx",
333 => "io_pgetevents",
334 => "rseq",
424 => "pidfd_send_signal",
425 => "io_uring_setup",
426 => "io_uring_enter",
427 => "io_uring_register",
428 => "open_tree",
429 => "move_mount",
430 => "fsopen",
431 => "fsconfig",
432 => "fsmount",
433 => "fspick",
434 => "pidfd_open",
435 => "clone3",
436 => "close_range",
437 => "openat2",
438 => "pidfd_getfd",
439 => "faccessat2",
440 => "process_madvise",
441 => "epoll_pwait2",
442 => "mount_setattr",
443 => "quotactl_fd",
444 => "landlock_create_ruleset",
445 => "landlock_add_rule",
446 => "landlock_restrict_self",
447 => "memfd_secret",
448 => "process_mrelease",
449 => "futex_waitv",
450 => "set_mempolicy_home_node",
451 => "cachestat",
452 => "fchmodat2",
453 => "map_shadow_stack",
454 => "futex_wake",
455 => "futex_wait",
456 => "futex_requeue",
_ => "UNKNOWN",
}
}