Work on reading buffers.

This commit is contained in:
Michael Mikovsky
2025-08-18 16:45:17 -06:00
parent 856d7e467f
commit 59792420b5
18 changed files with 4958 additions and 2819 deletions
+1
View File
@@ -0,0 +1 @@
savedcmd_modules.order := { echo target/release/libintercept.so; :; } > modules.order
-1
View File
@@ -5,4 +5,3 @@ edition = "2024"
[dependencies] [dependencies]
syscall_lib = { path = "../syscall_lib" } syscall_lib = { path = "../syscall_lib" }
syscaller = "0.2.2"
+4 -4
View File
@@ -1,14 +1,14 @@
mod syscall_exec;
use std::{ use std::{
io::{Read, Write}, io::{Read, Write},
net::{TcpListener, TcpStream}, net::{TcpListener, TcpStream},
thread, thread,
}; };
use syscall_lib::{Message, ProgramMemory, Syscall}; use syscall_lib::{Syscall, execute_syscall};
fn main() { fn main() {
println!("This program has PID: {}", std::process::id());
let listener = TcpListener::bind("127.0.0.1:1234").unwrap(); let listener = TcpListener::bind("127.0.0.1:1234").unwrap();
for stream in listener.incoming() { for stream in listener.incoming() {
@@ -43,7 +43,7 @@ fn handle_connection(stream: &mut TcpStream) -> Result<(), std::io::Error> {
// Syscall::Write(..) => 0, // Syscall::Write(..) => 0,
// _ => syscall_exec::execute_syscall(decoded), // _ => syscall_exec::execute_syscall(decoded),
// }; // };
let result = syscall_exec::execute_syscall(decoded); let result = execute_syscall(decoded);
println!("{:?}", result); println!("{:?}", result);
-658
View File
@@ -1,658 +0,0 @@
use syscall_lib::Syscall;
use syscaller::{syscall0, syscall1, syscall2, syscall3, syscall4, syscall5, syscall6};
// fn syscall0(number: isize) -> isize {
// unsafe { syscaller::syscall0(number as usize) }
// }
// fn syscall1(number: isize, arg0: isize) -> isize {
// unsafe { syscaller::syscall1(number as usize, arg0 as usize) }
// }
// fn syscall2(number: isize, arg0: isize, arg1: isize) -> isize {
// unsafe { syscaller::syscall2(number as usize, arg0 as usize, arg1 as usize) }
// }
// fn syscall3(number: isize, arg0: isize, arg1: isize, arg2: isize) -> isize {
// unsafe { syscaller::syscall3(number as usize, arg0 as usize, arg1 as usize, arg2 as usize) }
// }
// fn syscall4(number: isize, arg0: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
// unsafe {
// syscaller::syscall4(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// )
// }
// }
// fn syscall5(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall5(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// )
// }
// }
// fn syscall6(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// arg5: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall6(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// arg5 as usize,
// )
// }
// }
// The Syscall enum and type aliases from the previous response are assumed to be present here.
#[allow(unused_unsafe)]
pub fn execute_syscall(syscall_obj: Syscall) -> isize {
match syscall_obj {
Syscall::Read(arg0, arg1, arg2) => unsafe { syscall3(0, arg0, arg1, arg2) },
Syscall::Write(arg0, arg1, arg2) => unsafe { syscall3(1, arg0, arg1, arg2) },
Syscall::Open(arg0, arg1, arg2) => unsafe { syscall3(2, arg0, arg1, arg2) },
Syscall::Close(arg0) => unsafe { syscall1(3, arg0) },
Syscall::Stat(arg0, arg1) => unsafe { syscall2(4, arg0, arg1) },
Syscall::Fstat(arg0, arg1) => unsafe { syscall2(5, arg0, arg1) },
Syscall::Lstat(arg0, arg1) => unsafe { syscall2(6, arg0, arg1) },
Syscall::Poll(arg0, arg1, arg2) => unsafe { syscall3(7, arg0, arg1, arg2) },
Syscall::Lseek(arg0, arg1, arg2) => unsafe { syscall3(8, arg0, arg1, arg2) },
Syscall::Mmap(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(9, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Mprotect(arg0, arg1, arg2) => unsafe { syscall3(10, arg0, arg1, arg2) },
Syscall::Munmap(arg0, arg1) => unsafe { syscall2(11, arg0, arg1) },
Syscall::Brk(arg0) => unsafe { syscall1(12, arg0) },
Syscall::RtSigaction(arg0, arg1, arg2, arg3) => unsafe {
syscall4(13, arg0, arg1, arg2, arg3)
},
Syscall::RtSigprocmask(arg0, arg1, arg2, arg3) => unsafe {
syscall4(14, arg0, arg1, arg2, arg3)
},
Syscall::RtSigreturn => unsafe { syscall0(15) },
Syscall::Ioctl(arg0, arg1, arg2) => unsafe { syscall3(16, arg0, arg1, arg2) },
Syscall::Pread64(arg0, arg1, arg2, arg3) => unsafe { syscall4(17, arg0, arg1, arg2, arg3) },
Syscall::Pwrite64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(18, arg0, arg1, arg2, arg3)
},
Syscall::Readv(arg0, arg1, arg2) => unsafe { syscall3(19, arg0, arg1, arg2) },
Syscall::Writev(arg0, arg1, arg2) => unsafe { syscall3(20, arg0, arg1, arg2) },
Syscall::Access(arg0, arg1) => unsafe { syscall2(21, arg0, arg1) },
Syscall::Pipe(arg0) => unsafe { syscall1(22, arg0) },
Syscall::Select(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(23, arg0, arg1, arg2, arg3, arg4)
},
Syscall::SchedYield => unsafe { syscall0(24) },
Syscall::Mremap(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(25, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Msync(arg0, arg1, arg2) => unsafe { syscall3(26, arg0, arg1, arg2) },
Syscall::Mincore(arg0, arg1, arg2) => unsafe { syscall3(27, arg0, arg1, arg2) },
Syscall::Madvise(arg0, arg1, arg2) => unsafe { syscall3(28, arg0, arg1, arg2) },
Syscall::Shmget(arg0, arg1, arg2) => unsafe { syscall3(29, arg0, arg1, arg2) },
Syscall::Shmat(arg0, arg1, arg2) => unsafe { syscall3(30, arg0, arg1, arg2) },
Syscall::Shmctl(arg0, arg1, arg2) => unsafe { syscall3(31, arg0, arg1, arg2) },
Syscall::Dup(arg0) => unsafe { syscall1(32, arg0) },
Syscall::Dup2(arg0, arg1) => unsafe { syscall2(33, arg0, arg1) },
Syscall::Pause => unsafe { syscall0(34) },
Syscall::Nanosleep(arg0, arg1) => unsafe { syscall2(35, arg0, arg1) },
Syscall::Getitimer(arg0, arg1) => unsafe { syscall2(36, arg0, arg1) },
Syscall::Alarm(arg0) => unsafe { syscall1(37, arg0) },
Syscall::Setitimer(arg0, arg1, arg2) => unsafe { syscall3(38, arg0, arg1, arg2) },
Syscall::Getpid => unsafe { syscall0(39) },
Syscall::Sendfile(arg0, arg1, arg2, arg3) => unsafe {
syscall4(40, arg0, arg1, arg2, arg3)
},
Syscall::Socket(arg0, arg1, arg2) => unsafe { syscall3(41, arg0, arg1, arg2) },
Syscall::Connect(arg0, arg1, arg2) => unsafe { syscall3(42, arg0, arg1, arg2) },
Syscall::Accept(arg0, arg1, arg2) => unsafe { syscall3(43, arg0, arg1, arg2) },
Syscall::Sendto(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(44, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Recvfrom(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(45, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Sendmsg(arg0, arg1, arg2) => unsafe { syscall3(46, arg0, arg1, arg2) },
Syscall::Recvmsg(arg0, arg1, arg2) => unsafe { syscall3(47, arg0, arg1, arg2) },
Syscall::Shutdown(arg0, arg1) => unsafe { syscall2(48, arg0, arg1) },
Syscall::Bind(arg0, arg1, arg2) => unsafe { syscall3(49, arg0, arg1, arg2) },
Syscall::Listen(arg0, arg1) => unsafe { syscall2(50, arg0, arg1) },
Syscall::Getsockname(arg0, arg1, arg2) => unsafe { syscall3(51, arg0, arg1, arg2) },
Syscall::Getpeername(arg0, arg1, arg2) => unsafe { syscall3(52, arg0, arg1, arg2) },
Syscall::Socketpair(arg0, arg1, arg2, arg3) => unsafe {
syscall4(53, arg0, arg1, arg2, arg3)
},
Syscall::Setsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(54, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Getsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(55, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Clone(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(56, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Fork => unsafe { syscall0(57) },
Syscall::Vfork => unsafe { syscall0(58) },
Syscall::Execve(arg0, arg1, arg2) => unsafe { syscall3(59, arg0, arg1, arg2) },
Syscall::Exit(arg0) => unsafe { syscall1(60, arg0) },
Syscall::Wait4(arg0, arg1, arg2, arg3) => unsafe { syscall4(61, arg0, arg1, arg2, arg3) },
Syscall::Kill(arg0, arg1) => unsafe { syscall2(62, arg0, arg1) },
Syscall::Uname(arg0) => unsafe { syscall1(63, arg0) },
Syscall::Semget(arg0, arg1, arg2) => unsafe { syscall3(64, arg0, arg1, arg2) },
Syscall::Semop(arg0, arg1, arg2) => unsafe { syscall3(65, arg0, arg1, arg2) },
Syscall::Semctl(arg0, arg1, arg2, arg3) => unsafe { syscall4(66, arg0, arg1, arg2, arg3) },
Syscall::Shmdt(arg0) => unsafe { syscall1(67, arg0) },
Syscall::Msgget(arg0, arg1) => unsafe { syscall2(68, arg0, arg1) },
Syscall::Msgsnd(arg0, arg1, arg2, arg3) => unsafe { syscall4(69, arg0, arg1, arg2, arg3) },
Syscall::Msgrcv(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(70, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Msgctl(arg0, arg1, arg2) => unsafe { syscall3(71, arg0, arg1, arg2) },
Syscall::Fcntl(arg0, arg1, arg2) => unsafe { syscall3(72, arg0, arg1, arg2) },
Syscall::Flock(arg0, arg1) => unsafe { syscall2(73, arg0, arg1) },
Syscall::Fsync(arg0) => unsafe { syscall1(74, arg0) },
Syscall::Fdatasync(arg0) => unsafe { syscall1(75, arg0) },
Syscall::Truncate(arg0, arg1) => unsafe { syscall2(76, arg0, arg1) },
Syscall::Ftruncate(arg0, arg1) => unsafe { syscall2(77, arg0, arg1) },
Syscall::Getdents(arg0, arg1, arg2) => unsafe { syscall3(78, arg0, arg1, arg2) },
Syscall::Getcwd(arg0, arg1) => unsafe { syscall2(79, arg0, arg1) },
Syscall::Chdir(arg0) => unsafe { syscall1(80, arg0) },
Syscall::Fchdir(arg0) => unsafe { syscall1(81, arg0) },
Syscall::Rename(arg0, arg1) => unsafe { syscall2(82, arg0, arg1) },
Syscall::Mkdir(arg0, arg1) => unsafe { syscall2(83, arg0, arg1) },
Syscall::Rmdir(arg0) => unsafe { syscall1(84, arg0) },
Syscall::Creat(arg0, arg1) => unsafe { syscall2(85, arg0, arg1) },
Syscall::Link(arg0, arg1) => unsafe { syscall2(86, arg0, arg1) },
Syscall::Unlink(arg0) => unsafe { syscall1(87, arg0) },
Syscall::Symlink(arg0, arg1) => unsafe { syscall2(88, arg0, arg1) },
Syscall::Readlink(arg0, arg1, arg2) => unsafe { syscall3(89, arg0, arg1, arg2) },
Syscall::Chmod(arg0, arg1) => unsafe { syscall2(90, arg0, arg1) },
Syscall::Fchmod(arg0, arg1) => unsafe { syscall2(91, arg0, arg1) },
Syscall::Chown(arg0, arg1, arg2) => unsafe { syscall3(92, arg0, arg1, arg2) },
Syscall::Fchown(arg0, arg1, arg2) => unsafe { syscall3(93, arg0, arg1, arg2) },
Syscall::Lchown(arg0, arg1, arg2) => unsafe { syscall3(94, arg0, arg1, arg2) },
Syscall::Umask(arg0) => unsafe { syscall1(95, arg0) },
Syscall::Gettimeofday(arg0, arg1) => unsafe { syscall2(96, arg0, arg1) },
Syscall::Getrlimit(arg0, arg1) => unsafe { syscall2(97, arg0, arg1) },
Syscall::Getrusage(arg0, arg1) => unsafe { syscall2(98, arg0, arg1) },
Syscall::Sysinfo(arg0) => unsafe { syscall1(99, arg0) },
Syscall::Times(arg0) => unsafe { syscall1(100, arg0) },
Syscall::Ptrace(arg0, arg1, arg2, arg3) => unsafe { syscall4(101, arg0, arg1, arg2, arg3) },
Syscall::Getuid => unsafe { syscall0(102) },
Syscall::Syslog(arg0, arg1, arg2) => unsafe { syscall3(103, arg0, arg1, arg2) },
Syscall::Getgid => unsafe { syscall0(104) },
Syscall::Setuid(arg0) => unsafe { syscall1(105, arg0) },
Syscall::Setgid(arg0) => unsafe { syscall1(106, arg0) },
Syscall::Geteuid => unsafe { syscall0(107) },
Syscall::Getegid => unsafe { syscall0(108) },
Syscall::Setpgid(arg0, arg1) => unsafe { syscall2(109, arg0, arg1) },
Syscall::Getppid => unsafe { syscall0(110) },
Syscall::Getpgrp => unsafe { syscall0(111) },
Syscall::Setsid => unsafe { syscall0(112) },
Syscall::Setreuid(arg0, arg1) => unsafe { syscall2(113, arg0, arg1) },
Syscall::Setregid(arg0, arg1) => unsafe { syscall2(114, arg0, arg1) },
Syscall::Getgroups(arg0, arg1) => unsafe { syscall2(115, arg0, arg1) },
Syscall::Setgroups(arg0, arg1) => unsafe { syscall2(116, arg0, arg1) },
Syscall::Setresuid(arg0, arg1, arg2) => unsafe { syscall3(117, arg0, arg1, arg2) },
Syscall::Getresuid(arg0, arg1, arg2) => unsafe { syscall3(118, arg0, arg1, arg2) },
Syscall::Setresgid(arg0, arg1, arg2) => unsafe { syscall3(119, arg0, arg1, arg2) },
Syscall::Getresgid(arg0, arg1, arg2) => unsafe { syscall3(120, arg0, arg1, arg2) },
Syscall::Getpgid(arg0) => unsafe { syscall1(121, arg0) },
Syscall::Setfsuid(arg0) => unsafe { syscall1(122, arg0) },
Syscall::Setfsgid(arg0) => unsafe { syscall1(123, arg0) },
Syscall::Getsid(arg0) => unsafe { syscall1(124, arg0) },
Syscall::Capget(arg0, arg1) => unsafe { syscall2(125, arg0, arg1) },
Syscall::Capset(arg0, arg1) => unsafe { syscall2(126, arg0, arg1) },
Syscall::RtSigpending(arg0, arg1) => unsafe { syscall2(127, arg0, arg1) },
Syscall::RtSigtimedwait(arg0, arg1, arg2, arg3) => unsafe {
syscall4(128, arg0, arg1, arg2, arg3)
},
Syscall::RtSigqueueinfo(arg0, arg1, arg2) => unsafe { syscall3(129, arg0, arg1, arg2) },
Syscall::RtSigsuspend(arg0, arg1) => unsafe { syscall2(130, arg0, arg1) },
Syscall::Sigaltstack(arg0, arg1) => unsafe { syscall2(131, arg0, arg1) },
Syscall::Utime(arg0, arg1) => unsafe { syscall2(132, arg0, arg1) },
Syscall::Mknod(arg0, arg1, arg2) => unsafe { syscall3(133, arg0, arg1, arg2) },
Syscall::Uselib(arg0) => unsafe { syscall1(134, arg0) },
Syscall::Personality(arg0) => unsafe { syscall1(135, arg0) },
Syscall::Ustat(arg0, arg1) => unsafe { syscall2(136, arg0, arg1) },
Syscall::Statfs(arg0, arg1) => unsafe { syscall2(137, arg0, arg1) },
Syscall::Fstatfs(arg0, arg1) => unsafe { syscall2(138, arg0, arg1) },
Syscall::Sysfs(arg0, arg1, arg2) => unsafe { syscall3(139, arg0, arg1, arg2) },
Syscall::Getpriority(arg0, arg1) => unsafe { syscall2(140, arg0, arg1) },
Syscall::Setpriority(arg0, arg1, arg2) => unsafe { syscall3(141, arg0, arg1, arg2) },
Syscall::SchedSetparam(arg0, arg1) => unsafe { syscall2(142, arg0, arg1) },
Syscall::SchedGetparam(arg0, arg1) => unsafe { syscall2(143, arg0, arg1) },
Syscall::SchedSetscheduler(arg0, arg1, arg2) => unsafe { syscall3(144, arg0, arg1, arg2) },
Syscall::SchedGetscheduler(arg0) => unsafe { syscall1(145, arg0) },
Syscall::SchedGetPriorityMax(arg0) => unsafe { syscall1(146, arg0) },
Syscall::SchedGetPriorityMin(arg0) => unsafe { syscall1(147, arg0) },
Syscall::SchedRrGetInterval(arg0, arg1) => unsafe { syscall2(148, arg0, arg1) },
Syscall::Mlock(arg0, arg1) => unsafe { syscall2(149, arg0, arg1) },
Syscall::Munlock(arg0, arg1) => unsafe { syscall2(150, arg0, arg1) },
Syscall::Mlockall(arg0) => unsafe { syscall1(151, arg0) },
Syscall::Munlockall => unsafe { syscall0(152) },
Syscall::Vhangup => unsafe { syscall0(153) },
Syscall::ModifyLdt(arg0, arg1, arg2) => unsafe { syscall3(154, arg0, arg1, arg2) },
Syscall::PivotRoot(arg0, arg1) => unsafe { syscall2(155, arg0, arg1) },
Syscall::_Sysctl(arg0) => unsafe { syscall1(156, arg0) },
Syscall::Prctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(157, arg0, arg1, arg2, arg3, arg4)
},
Syscall::ArchPrctl(arg0, arg1) => unsafe { syscall2(158, arg0, arg1) },
Syscall::Adjtimex(arg0) => unsafe { syscall1(159, arg0) },
Syscall::Setrlimit(arg0, arg1) => unsafe { syscall2(160, arg0, arg1) },
Syscall::Chroot(arg0) => unsafe { syscall1(161, arg0) },
Syscall::Sync => unsafe { syscall0(162) },
Syscall::Acct(arg0) => unsafe { syscall1(163, arg0) },
Syscall::Settimeofday(arg0, arg1) => unsafe { syscall2(164, arg0, arg1) },
Syscall::Mount(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(165, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Umount2(arg0, arg1) => unsafe { syscall2(166, arg0, arg1) },
Syscall::Swapon(arg0, arg1) => unsafe { syscall2(167, arg0, arg1) },
Syscall::Swapoff(arg0) => unsafe { syscall1(168, arg0) },
Syscall::Reboot(arg0, arg1, arg2, arg3) => unsafe { syscall4(169, arg0, arg1, arg2, arg3) },
Syscall::Sethostname(arg0, arg1) => unsafe { syscall2(170, arg0, arg1) },
Syscall::Setdomainname(arg0, arg1) => unsafe { syscall2(171, arg0, arg1) },
Syscall::Iopl(arg0) => unsafe { syscall1(172, arg0) },
Syscall::Ioperm(arg0, arg1, arg2) => unsafe { syscall3(173, arg0, arg1, arg2) },
Syscall::CreateModule(arg0, arg1) => unsafe { syscall2(174, arg0, arg1) },
Syscall::InitModule(arg0, arg1, arg2) => unsafe { syscall3(175, arg0, arg1, arg2) },
Syscall::DeleteModule(arg0, arg1) => unsafe { syscall2(176, arg0, arg1) },
Syscall::GetKernelSyms(arg0) => unsafe { syscall1(177, arg0) },
Syscall::QueryModule(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(178, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Quotactl(arg0, arg1, arg2, arg3) => unsafe {
syscall4(179, arg0, arg1, arg2, arg3)
},
Syscall::Nfsservctl(arg0, arg1, arg2) => unsafe { syscall3(180, arg0, arg1, arg2) },
Syscall::Getpmsg => unsafe { syscall0(181) },
Syscall::Putpmsg => unsafe { syscall0(182) },
Syscall::AfsSyscall => unsafe { syscall0(183) },
Syscall::Tuxcall => unsafe { syscall0(184) },
Syscall::Security => unsafe { syscall0(185) },
Syscall::Gettid => unsafe { syscall0(186) },
Syscall::Readahead(arg0, arg1, arg2) => unsafe { syscall3(187, arg0, arg1, arg2) },
Syscall::Setxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(188, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Lsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(189, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Fsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(190, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Getxattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(191, arg0, arg1, arg2, arg3)
},
Syscall::Lgetxattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(192, arg0, arg1, arg2, arg3)
},
Syscall::Fgetxattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(193, arg0, arg1, arg2, arg3)
},
Syscall::Listxattr(arg0, arg1, arg2) => unsafe { syscall3(194, arg0, arg1, arg2) },
Syscall::Llistxattr(arg0, arg1, arg2) => unsafe { syscall3(195, arg0, arg1, arg2) },
Syscall::Flistxattr(arg0, arg1, arg2) => unsafe { syscall3(196, arg0, arg1, arg2) },
Syscall::Removexattr(arg0, arg1) => unsafe { syscall2(197, arg0, arg1) },
Syscall::Lremovexattr(arg0, arg1) => unsafe { syscall2(198, arg0, arg1) },
Syscall::Fremovexattr(arg0, arg1) => unsafe { syscall2(199, arg0, arg1) },
Syscall::Tkill(arg0, arg1) => unsafe { syscall2(200, arg0, arg1) },
Syscall::Time(arg0) => unsafe { syscall1(201, arg0) },
Syscall::Futex(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(202, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::SchedSetaffinity(arg0, arg1, arg2) => unsafe { syscall3(203, arg0, arg1, arg2) },
Syscall::SchedGetaffinity(arg0, arg1, arg2) => unsafe { syscall3(204, arg0, arg1, arg2) },
Syscall::SetThreadArea(arg0) => unsafe { syscall1(205, arg0) },
Syscall::IoSetup(arg0, arg1) => unsafe { syscall2(206, arg0, arg1) },
Syscall::IoDestroy(arg0) => unsafe { syscall1(207, arg0) },
Syscall::IoGetevents(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(208, arg0, arg1, arg2, arg3, arg4)
},
Syscall::IoSubmit(arg0, arg1, arg2) => unsafe { syscall3(209, arg0, arg1, arg2) },
Syscall::IoCancel(arg0, arg1, arg2) => unsafe { syscall3(210, arg0, arg1, arg2) },
Syscall::GetThreadArea(arg0) => unsafe { syscall1(211, arg0) },
Syscall::LookupDcookie(arg0, arg1, arg2, arg3) => unsafe {
syscall4(212, arg0, arg1, arg2, arg3)
},
Syscall::EpollCreate(arg0) => unsafe { syscall1(213, arg0) },
Syscall::EpollCtlOld => unsafe { syscall0(214) },
Syscall::EpollWaitOld => unsafe { syscall0(215) },
Syscall::RemapFilePages(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(216, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Getdents64(arg0, arg1, arg2) => unsafe { syscall3(217, arg0, arg1, arg2) },
Syscall::SetTidAddress(arg0) => unsafe { syscall1(218, arg0) },
Syscall::RestartSyscall => unsafe { syscall0(219) },
Syscall::Semtimedop(arg0, arg1, arg2, arg3) => unsafe {
syscall4(220, arg0, arg1, arg2, arg3)
},
Syscall::Fadvise64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(221, arg0, arg1, arg2, arg3)
},
Syscall::TimerCreate(arg0, arg1, arg2) => unsafe { syscall3(222, arg0, arg1, arg2) },
Syscall::TimerSettime(arg0, arg1, arg2, arg3) => unsafe {
syscall4(223, arg0, arg1, arg2, arg3)
},
Syscall::TimerGettime(arg0, arg1) => unsafe { syscall2(224, arg0, arg1) },
Syscall::TimerGetoverrun(arg0) => unsafe { syscall1(225, arg0) },
Syscall::TimerDelete(arg0) => unsafe { syscall1(226, arg0) },
Syscall::ClockSettime(arg0, arg1) => unsafe { syscall2(227, arg0, arg1) },
Syscall::ClockGettime(arg0, arg1) => unsafe { syscall2(228, arg0, arg1) },
Syscall::ClockGetres(arg0, arg1) => unsafe { syscall2(229, arg0, arg1) },
Syscall::ClockNanosleep(arg0, arg1, arg2, arg3) => unsafe {
syscall4(230, arg0, arg1, arg2, arg3)
},
Syscall::ExitGroup(arg0) => unsafe { syscall1(231, arg0) },
Syscall::EpollWait(arg0, arg1, arg2, arg3) => unsafe {
syscall4(232, arg0, arg1, arg2, arg3)
},
Syscall::EpollCtl(arg0, arg1, arg2, arg3) => unsafe {
syscall4(233, arg0, arg1, arg2, arg3)
},
Syscall::Tgkill(arg0, arg1, arg2) => unsafe { syscall3(234, arg0, arg1, arg2) },
Syscall::Utimes(arg0, arg1) => unsafe { syscall2(235, arg0, arg1) },
Syscall::Vserver => unsafe { syscall0(236) },
Syscall::Mbind(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(237, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::SetMempolicy(arg0, arg1, arg2) => unsafe { syscall3(238, arg0, arg1, arg2) },
Syscall::GetMempolicy(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(239, arg0, arg1, arg2, arg3, arg4)
},
Syscall::MqOpen(arg0, arg1, arg2, arg3) => unsafe { syscall4(240, arg0, arg1, arg2, arg3) },
Syscall::MqUnlink(arg0) => unsafe { syscall1(241, arg0) },
Syscall::MqTimedsend(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(242, arg0, arg1, arg2, arg3, arg4)
},
Syscall::MqTimedreceive(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(243, arg0, arg1, arg2, arg3, arg4)
},
Syscall::MqNotify(arg0, arg1) => unsafe { syscall2(244, arg0, arg1) },
Syscall::MqGetsetattr(arg0, arg1, arg2) => unsafe { syscall3(245, arg0, arg1, arg2) },
Syscall::KexecLoad(arg0, arg1, arg2, arg3) => unsafe {
syscall4(246, arg0, arg1, arg2, arg3)
},
Syscall::Waitid(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(247, arg0, arg1, arg2, arg3, arg4)
},
Syscall::AddKey(arg0, arg1, arg2, arg3) => unsafe { syscall4(248, arg0, arg1, arg2, arg3) },
Syscall::RequestKey(arg0, arg1, arg2) => unsafe { syscall3(249, arg0, arg1, arg2) },
Syscall::Keyctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(250, arg0, arg1, arg2, arg3, arg4)
},
Syscall::IoprioSet(arg0, arg1, arg2) => unsafe { syscall3(251, arg0, arg1, arg2) },
Syscall::IoprioGet(arg0, arg1) => unsafe { syscall2(252, arg0, arg1) },
Syscall::InotifyInit => unsafe { syscall0(253) },
Syscall::InotifyAddWatch(arg0, arg1, arg2) => unsafe { syscall3(254, arg0, arg1, arg2) },
Syscall::InotifyRmWatch(arg0, arg1) => unsafe { syscall2(255, arg0, arg1) },
Syscall::MigratePages(arg0, arg1, arg2, arg3) => unsafe {
syscall4(256, arg0, arg1, arg2, arg3)
},
Syscall::Openat(arg0, arg1, arg2, arg3) => unsafe { syscall4(257, arg0, arg1, arg2, arg3) },
Syscall::Mkdirat(arg0, arg1, arg2) => unsafe { syscall3(258, arg0, arg1, arg2) },
Syscall::Mknodat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(259, arg0, arg1, arg2, arg3)
},
Syscall::Fchownat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(260, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Futimesat(arg0, arg1, arg2) => unsafe { syscall3(261, arg0, arg1, arg2) },
Syscall::Newfstatat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(262, arg0, arg1, arg2, arg3)
},
Syscall::Unlinkat(arg0, arg1, arg2) => unsafe { syscall3(263, arg0, arg1, arg2) },
Syscall::Renameat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(264, arg0, arg1, arg2, arg3)
},
Syscall::Linkat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(265, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Symlinkat(arg0, arg1, arg2) => unsafe { syscall3(266, arg0, arg1, arg2) },
Syscall::Readlinkat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(267, arg0, arg1, arg2, arg3)
},
Syscall::Fchmodat(arg0, arg1, arg2) => unsafe { syscall3(268, arg0, arg1, arg2) },
Syscall::Faccessat(arg0, arg1, arg2) => unsafe { syscall3(269, arg0, arg1, arg2) },
Syscall::Pselect6(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(270, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Ppoll(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(271, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Unshare(arg0) => unsafe { syscall1(272, arg0) },
Syscall::SetRobustList(arg0, arg1) => unsafe { syscall2(273, arg0, arg1) },
Syscall::GetRobustList(arg0, arg1, arg2) => unsafe { syscall3(274, arg0, arg1, arg2) },
Syscall::Splice(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(275, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Tee(arg0, arg1, arg2, arg3) => unsafe { syscall4(276, arg0, arg1, arg2, arg3) },
Syscall::SyncFileRange(arg0, arg1, arg2, arg3) => unsafe {
syscall4(277, arg0, arg1, arg2, arg3)
},
Syscall::Vmsplice(arg0, arg1, arg2, arg3) => unsafe {
syscall4(278, arg0, arg1, arg2, arg3)
},
Syscall::MovePages(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(279, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Utimensat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(280, arg0, arg1, arg2, arg3)
},
Syscall::EpollPwait(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(281, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Signalfd(arg0, arg1, arg2) => unsafe { syscall3(282, arg0, arg1, arg2) },
Syscall::TimerfdCreate(arg0, arg1) => unsafe { syscall2(283, arg0, arg1) },
Syscall::Eventfd(arg0, arg1) => unsafe { syscall2(284, arg0, arg1) },
Syscall::Fallocate(arg0, arg1, arg2, arg3) => unsafe {
syscall4(285, arg0, arg1, arg2, arg3)
},
Syscall::TimerfdSettime(arg0, arg1, arg2, arg3) => unsafe {
syscall4(286, arg0, arg1, arg2, arg3)
},
Syscall::TimerfdGettime(arg0, arg1) => unsafe { syscall2(287, arg0, arg1) },
Syscall::Accept4(arg0, arg1, arg2, arg3) => unsafe {
syscall4(288, arg0, arg1, arg2, arg3)
},
Syscall::Signalfd4(arg0, arg1, arg2, arg3) => unsafe {
syscall4(289, arg0, arg1, arg2, arg3)
},
Syscall::Eventfd2(arg0, arg1) => unsafe { syscall2(290, arg0, arg1) },
Syscall::EpollCreate1(arg0) => unsafe { syscall1(291, arg0) },
Syscall::Dup3(arg0, arg1, arg2) => unsafe { syscall3(292, arg0, arg1, arg2) },
Syscall::Pipe2(arg0, arg1) => unsafe { syscall2(293, arg0, arg1) },
Syscall::InotifyInit1(arg0) => unsafe { syscall1(294, arg0) },
Syscall::Preadv(arg0, arg1, arg2, arg3) => unsafe { syscall4(295, arg0, arg1, arg2, arg3) },
Syscall::Pwritev(arg0, arg1, arg2, arg3) => unsafe {
syscall4(296, arg0, arg1, arg2, arg3)
},
Syscall::RtTgsigqueueinfo(arg0, arg1, arg2, arg3) => unsafe {
syscall4(297, arg0, arg1, arg2, arg3)
},
Syscall::PerfEventOpen(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(298, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Recvmmsg(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(299, arg0, arg1, arg2, arg3, arg4)
},
Syscall::FanotifyInit(arg0, arg1) => unsafe { syscall2(300, arg0, arg1) },
Syscall::FanotifyMark(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(301, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Prlimit64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(302, arg0, arg1, arg2, arg3)
},
Syscall::NameToHandleAt(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(303, arg0, arg1, arg2, arg3, arg4)
},
Syscall::OpenByHandleAt(arg0, arg1, arg2) => unsafe { syscall3(304, arg0, arg1, arg2) },
Syscall::ClockAdjtime(arg0, arg1) => unsafe { syscall2(305, arg0, arg1) },
Syscall::Syncfs(arg0) => unsafe { syscall1(306, arg0) },
Syscall::Sendmmsg(arg0, arg1, arg2, arg3) => unsafe {
syscall4(307, arg0, arg1, arg2, arg3)
},
Syscall::Setns(arg0, arg1) => unsafe { syscall2(308, arg0, arg1) },
Syscall::Getcpu(arg0, arg1, arg2) => unsafe { syscall3(309, arg0, arg1, arg2) },
Syscall::ProcessVmReadv(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(310, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::ProcessVmWritev(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(311, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Kcmp(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(312, arg0, arg1, arg2, arg3, arg4)
},
Syscall::FinitModule(arg0, arg1, arg2) => unsafe { syscall3(313, arg0, arg1, arg2) },
Syscall::SchedSetattr(arg0, arg1, arg2) => unsafe { syscall3(314, arg0, arg1, arg2) },
Syscall::SchedGetattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(315, arg0, arg1, arg2, arg3)
},
Syscall::Renameat2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(316, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Seccomp(arg0, arg1, arg2) => unsafe { syscall3(317, arg0, arg1, arg2) },
Syscall::Getrandom(arg0, arg1, arg2) => unsafe { syscall3(318, arg0, arg1, arg2) },
Syscall::MemfdCreate(arg0, arg1) => unsafe { syscall2(319, arg0, arg1) },
Syscall::KexecFileLoad(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(320, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Bpf(arg0, arg1, arg2) => unsafe { syscall3(321, arg0, arg1, arg2) },
Syscall::Execveat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(322, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Userfaultfd(arg0) => unsafe { syscall1(323, arg0) },
Syscall::Membarrier(arg0, arg1) => unsafe { syscall2(324, arg0, arg1) },
Syscall::Mlock2(arg0, arg1, arg2) => unsafe { syscall3(325, arg0, arg1, arg2) },
Syscall::CopyFileRange(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(326, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Preadv2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(327, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Pwritev2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(328, arg0, arg1, arg2, arg3, arg4)
},
Syscall::PkeyMprotect(arg0, arg1, arg2, arg3) => unsafe {
syscall4(329, arg0, arg1, arg2, arg3)
},
Syscall::PkeyAlloc(arg0, arg1) => unsafe { syscall2(330, arg0, arg1) },
Syscall::PkeyFree(arg0) => unsafe { syscall1(331, arg0) },
Syscall::Statx(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(332, arg0, arg1, arg2, arg3, arg4)
},
Syscall::IoPgetevents(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(333, arg0, arg1, arg2, arg3, arg4, arg5)
},
Syscall::Rseq(arg0, arg1, arg2, arg3) => unsafe { syscall4(334, arg0, arg1, arg2, arg3) },
Syscall::PidfdSendSignal(arg0, arg1, arg2, arg3) => unsafe {
syscall4(424, arg0, arg1, arg2, arg3)
},
Syscall::IoUringSetup(arg0, arg1) => unsafe { syscall2(425, arg0, arg1) },
Syscall::IoUringEnter(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(426, arg0, arg1, arg2, arg3, arg4)
},
Syscall::IoUringRegister(arg0, arg1, arg2, arg3) => unsafe {
syscall4(427, arg0, arg1, arg2, arg3)
},
Syscall::OpenTree(arg0, arg1, arg2) => unsafe { syscall3(428, arg0, arg1, arg2) },
Syscall::MoveMount(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(429, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Fsopen(arg0, arg1, arg2) => unsafe { syscall3(430, arg0, arg1, arg2) },
Syscall::Fsconfig(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(431, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Fsmount(arg0, arg1, arg2) => unsafe { syscall3(432, arg0, arg1, arg2) },
Syscall::Fspick(arg0, arg1, arg2) => unsafe { syscall3(433, arg0, arg1, arg2) },
Syscall::PidfdOpen(arg0, arg1) => unsafe { syscall2(434, arg0, arg1) },
Syscall::Clone3(arg0, arg1) => unsafe { syscall2(435, arg0, arg1) },
Syscall::CloseRange(arg0, arg1, arg2) => unsafe { syscall3(436, arg0, arg1, arg2) },
Syscall::Openat2(arg0, arg1, arg2, arg3) => unsafe {
syscall4(437, arg0, arg1, arg2, arg3)
},
Syscall::PidfdGetfd(arg0, arg1, arg2) => unsafe { syscall3(438, arg0, arg1, arg2) },
Syscall::Faccessat2(arg0, arg1, arg2, arg3) => unsafe {
syscall4(439, arg0, arg1, arg2, arg3)
},
Syscall::ProcessMadvise(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(440, arg0, arg1, arg2, arg3, arg4)
},
Syscall::EpollPwait2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(441, arg0, arg1, arg2, arg3, arg4)
},
Syscall::MountSetattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(442, arg0, arg1, arg2, arg3)
},
Syscall::QuotactlFd(arg0, arg1, arg2, arg3) => unsafe {
syscall4(443, arg0, arg1, arg2, arg3)
},
Syscall::LandlockCreateRuleset(arg0, arg1, arg2) => unsafe {
syscall3(444, arg0, arg1, arg2)
},
Syscall::LandlockAddRule(arg0, arg1, arg2, arg3) => unsafe {
syscall4(445, arg0, arg1, arg2, arg3)
},
Syscall::LandlockRestrictSelf(arg0, arg1) => unsafe { syscall2(446, arg0, arg1) },
Syscall::MemfdSecret(arg0) => unsafe { syscall1(447, arg0) },
Syscall::ProcessMrelease(arg0, arg1) => unsafe { syscall2(448, arg0, arg1) },
Syscall::FutexWaitv(arg0, arg1, arg2) => unsafe { syscall3(449, arg0, arg1, arg2) },
Syscall::SetMempolicyHomeNode(arg0, arg1, arg2) => unsafe {
syscall3(450, arg0, arg1, arg2)
},
Syscall::Cachestat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(451, arg0, arg1, arg2, arg3, arg4)
},
Syscall::Fchmodat2(arg0, arg1, arg2, arg3) => unsafe {
syscall4(452, arg0, arg1, arg2, arg3)
},
Syscall::MapShadowStack(arg0, arg1) => unsafe { syscall2(453, arg0, arg1) },
Syscall::FutexWake(arg0, arg1, arg2) => unsafe { syscall3(454, arg0, arg1, arg2) },
Syscall::FutexWait(arg0, arg1, arg2) => unsafe { syscall3(455, arg0, arg1, arg2) },
Syscall::FutexRequeue(arg0, arg1, arg2, arg3) => unsafe {
syscall4(456, arg0, arg1, arg2, arg3)
},
Syscall::Statmount(arg0, arg1, arg2) => unsafe { syscall3(457, arg0, arg1, arg2) },
Syscall::Listmount(arg0, arg1, arg2) => unsafe { syscall3(458, arg0, arg1, arg2) },
Syscall::LsmGetSelfAttr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(459, arg0, arg1, arg2, arg3)
},
Syscall::LsmSetSelfAttr(arg0, arg1, arg2) => unsafe { syscall3(460, arg0, arg1, arg2) },
Syscall::LsmListModules(arg0, arg1) => unsafe { syscall2(461, arg0, arg1) },
Syscall::Unknown(syscall_num, args) => match args {
[arg0, arg1, arg2, arg3, arg4, arg5] => unsafe {
syscall6(syscall_num, arg0, arg1, arg2, arg3, arg4, arg5)
},
_ => unreachable!(),
},
}
}
+1 -1
View File
@@ -5,7 +5,7 @@ use std::{
use syscall_lib::{ProgramMemory, Syscall}; use syscall_lib::{ProgramMemory, Syscall};
use crate::syscall_exec; // use crate::syscall_exec;
pub struct Host { pub struct Host {
stream: TcpStream, stream: TcpStream,
+31 -32
View File
@@ -1,9 +1,8 @@
mod host; mod host;
mod syscall_exec;
#[allow(dead_code)] #[allow(dead_code)]
mod syscall_intercept; mod syscall_intercept;
use syscall_lib::syscall_should_proxy; use syscall_lib::Syscall;
use libc::exit; use libc::exit;
use std::{ use std::{
@@ -20,17 +19,17 @@ static mut HOST: Option<Mutex<Host>> = None;
#[ctor::ctor] #[ctor::ctor]
fn start() { fn start() {
unsafe { // unsafe {
HOST = Some({ // HOST = Some({
match Host::new() { // match Host::new() {
Ok(host) => Mutex::new(host), // Ok(host) => Mutex::new(host),
Err(e) => { // Err(e) => {
eprintln!("Failed to connect to server: {}", e); // eprintln!("Failed to connect to server: {}", e);
exit(1); // exit(1);
} // }
} // }
}); // });
} // }
unsafe { set_hook_fn(hook) }; unsafe { set_hook_fn(hook) };
} }
@@ -68,13 +67,13 @@ impl Drop for InterceptGuard {
} }
extern "C" fn hook( extern "C" fn hook(
syscall_num: usize, syscall_num: libc::c_long,
arg0: usize, arg0: libc::c_ulong,
arg1: usize, arg1: libc::c_ulong,
arg2: usize, arg2: libc::c_ulong,
arg3: usize, arg3: libc::c_ulong,
arg4: usize, arg4: libc::c_ulong,
arg5: usize, arg5: libc::c_ulong,
result: &mut isize, result: &mut isize,
) -> InterceptResult { ) -> InterceptResult {
// detect and avoid recursive interception // detect and avoid recursive interception
@@ -95,11 +94,11 @@ extern "C" fn hook(
} }
let args = [arg0, arg1, arg2, arg3, arg4, arg5]; let args = [arg0, arg1, arg2, arg3, arg4, arg5];
let syscall = syscall_lib::create_syscall(syscall_num, args); let syscall = Syscall::from_syscall(syscall_num as libc::c_long, args).unwrap();
if !syscall_should_proxy(&syscall) { // if !syscall_should_proxy(&syscall) {
return InterceptResult::Forward; // return InterceptResult::Forward;
} // }
// Return if is print // Return if is print
// if syscall_num == libc::SYS_write as _ && arg0 == 1 { // if syscall_num == libc::SYS_write as _ && arg0 == 1 {
@@ -110,18 +109,18 @@ extern "C" fn hook(
// return InterceptResult::Forward; // return InterceptResult::Forward;
// } // }
// println!("{:?}", desc); println!("{:?}", syscall);
unsafe { // unsafe {
#[allow(static_mut_refs)] // #[allow(static_mut_refs)]
if let Some(host) = HOST.as_ref() { // if let Some(host) = HOST.as_ref() {
*result = host.lock().unwrap().execute(&syscall); // *result = host.lock().unwrap().execute(&syscall);
} // }
} // }
unsafe { unsafe {
set_hook_fn(hook); set_hook_fn(hook);
} }
InterceptResult::Hook InterceptResult::Forward
} }
-688
View File
@@ -1,688 +0,0 @@
use syscall_lib::Syscall;
use syscaller::{syscall0, syscall1, syscall2, syscall3, syscall4, syscall5, syscall6};
// fn syscall0(number: isize) -> isize {
// unsafe { syscaller::syscall0(number as usize) }
// }
// fn syscall1(number: isize, *arg0: isize) -> isize {
// unsafe { syscaller::syscall1(number as usize, *arg0 as usize) }
// }
// fn syscall2(number: isize, *arg0: isize, *arg1: isize) -> isize {
// unsafe { syscaller::syscall2(number as usize, *arg0 as usize, *arg1 as usize) }
// }
// fn syscall3(number: isize, *arg0: isize, *arg1: isize, *arg2: isize) -> isize {
// unsafe { syscaller::syscall3(number as usize, *arg0 as usize, *arg1 as usize, *arg2 as usize) }
// }
// fn syscall4(number: isize, *arg0: isize, *arg1: isize, *arg2: isize, *arg3: isize) -> isize {
// unsafe {
// syscaller::syscall4(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// )
// }
// }
// fn syscall5(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall5(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// )
// }
// }
// fn syscall6(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// arg5: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall6(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// arg5 as usize,
// )
// }
// }
// The Syscall enum and type aliases from the previous response are assumed to be present here.
#[allow(unused_unsafe)]
pub fn execute_syscall(syscall_obj: &Syscall) -> isize {
match syscall_obj {
Syscall::Read(arg0, arg1, arg2) => unsafe { syscall3(0, *arg0, *arg1, *arg2) },
Syscall::Write(arg0, arg1, arg2) => unsafe { syscall3(1, *arg0, *arg1, *arg2) },
Syscall::Open(arg0, arg1, arg2) => unsafe { syscall3(2, *arg0, *arg1, *arg2) },
Syscall::Close(arg0) => unsafe { syscall1(3, *arg0) },
Syscall::Stat(arg0, arg1) => unsafe { syscall2(4, *arg0, *arg1) },
Syscall::Fstat(arg0, arg1) => unsafe { syscall2(5, *arg0, *arg1) },
Syscall::Lstat(arg0, arg1) => unsafe { syscall2(6, *arg0, *arg1) },
Syscall::Poll(arg0, arg1, arg2) => unsafe { syscall3(7, *arg0, *arg1, *arg2) },
Syscall::Lseek(arg0, arg1, arg2) => unsafe { syscall3(8, *arg0, *arg1, *arg2) },
Syscall::Mmap(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(9, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Mprotect(arg0, arg1, arg2) => unsafe { syscall3(10, *arg0, *arg1, *arg2) },
Syscall::Munmap(arg0, arg1) => unsafe { syscall2(11, *arg0, *arg1) },
Syscall::Brk(arg0) => unsafe { syscall1(12, *arg0) },
Syscall::RtSigaction(arg0, arg1, arg2, arg3) => unsafe {
syscall4(13, *arg0, *arg1, *arg2, *arg3)
},
Syscall::RtSigprocmask(arg0, arg1, arg2, arg3) => unsafe {
syscall4(14, *arg0, *arg1, *arg2, *arg3)
},
Syscall::RtSigreturn => unsafe { syscall0(15) },
Syscall::Ioctl(arg0, arg1, arg2) => unsafe { syscall3(16, *arg0, *arg1, *arg2) },
Syscall::Pread64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(17, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Pwrite64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(18, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Readv(arg0, arg1, arg2) => unsafe { syscall3(19, *arg0, *arg1, *arg2) },
Syscall::Writev(arg0, arg1, arg2) => unsafe { syscall3(20, *arg0, *arg1, *arg2) },
Syscall::Access(arg0, arg1) => unsafe { syscall2(21, *arg0, *arg1) },
Syscall::Pipe(arg0) => unsafe { syscall1(22, *arg0) },
Syscall::Select(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(23, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::SchedYield => unsafe { syscall0(24) },
Syscall::Mremap(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(25, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Msync(arg0, arg1, arg2) => unsafe { syscall3(26, *arg0, *arg1, *arg2) },
Syscall::Mincore(arg0, arg1, arg2) => unsafe { syscall3(27, *arg0, *arg1, *arg2) },
Syscall::Madvise(arg0, arg1, arg2) => unsafe { syscall3(28, *arg0, *arg1, *arg2) },
Syscall::Shmget(arg0, arg1, arg2) => unsafe { syscall3(29, *arg0, *arg1, *arg2) },
Syscall::Shmat(arg0, arg1, arg2) => unsafe { syscall3(30, *arg0, *arg1, *arg2) },
Syscall::Shmctl(arg0, arg1, arg2) => unsafe { syscall3(31, *arg0, *arg1, *arg2) },
Syscall::Dup(arg0) => unsafe { syscall1(32, *arg0) },
Syscall::Dup2(arg0, arg1) => unsafe { syscall2(33, *arg0, *arg1) },
Syscall::Pause => unsafe { syscall0(34) },
Syscall::Nanosleep(arg0, arg1) => unsafe { syscall2(35, *arg0, *arg1) },
Syscall::Getitimer(arg0, arg1) => unsafe { syscall2(36, *arg0, *arg1) },
Syscall::Alarm(arg0) => unsafe { syscall1(37, *arg0) },
Syscall::Setitimer(arg0, arg1, arg2) => unsafe { syscall3(38, *arg0, *arg1, *arg2) },
Syscall::Getpid => unsafe { syscall0(39) },
Syscall::Sendfile(arg0, arg1, arg2, arg3) => unsafe {
syscall4(40, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Socket(arg0, arg1, arg2) => unsafe { syscall3(41, *arg0, *arg1, *arg2) },
Syscall::Connect(arg0, arg1, arg2) => unsafe { syscall3(42, *arg0, *arg1, *arg2) },
Syscall::Accept(arg0, arg1, arg2) => unsafe { syscall3(43, *arg0, *arg1, *arg2) },
Syscall::Sendto(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(44, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Recvfrom(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(45, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Sendmsg(arg0, arg1, arg2) => unsafe { syscall3(46, *arg0, *arg1, *arg2) },
Syscall::Recvmsg(arg0, arg1, arg2) => unsafe { syscall3(47, *arg0, *arg1, *arg2) },
Syscall::Shutdown(arg0, arg1) => unsafe { syscall2(48, *arg0, *arg1) },
Syscall::Bind(arg0, arg1, arg2) => unsafe { syscall3(49, *arg0, *arg1, *arg2) },
Syscall::Listen(arg0, arg1) => unsafe { syscall2(50, *arg0, *arg1) },
Syscall::Getsockname(arg0, arg1, arg2) => unsafe { syscall3(51, *arg0, *arg1, *arg2) },
Syscall::Getpeername(arg0, arg1, arg2) => unsafe { syscall3(52, *arg0, *arg1, *arg2) },
Syscall::Socketpair(arg0, arg1, arg2, arg3) => unsafe {
syscall4(53, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Setsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(54, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Getsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(55, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Clone(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(56, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Fork => unsafe { syscall0(57) },
Syscall::Vfork => unsafe { syscall0(58) },
Syscall::Execve(arg0, arg1, arg2) => unsafe { syscall3(59, *arg0, *arg1, *arg2) },
Syscall::Exit(arg0) => unsafe { syscall1(60, *arg0) },
Syscall::Wait4(arg0, arg1, arg2, arg3) => unsafe {
syscall4(61, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Kill(arg0, arg1) => unsafe { syscall2(62, *arg0, *arg1) },
Syscall::Uname(arg0) => unsafe { syscall1(63, *arg0) },
Syscall::Semget(arg0, arg1, arg2) => unsafe { syscall3(64, *arg0, *arg1, *arg2) },
Syscall::Semop(arg0, arg1, arg2) => unsafe { syscall3(65, *arg0, *arg1, *arg2) },
Syscall::Semctl(arg0, arg1, arg2, arg3) => unsafe {
syscall4(66, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Shmdt(arg0) => unsafe { syscall1(67, *arg0) },
Syscall::Msgget(arg0, arg1) => unsafe { syscall2(68, *arg0, *arg1) },
Syscall::Msgsnd(arg0, arg1, arg2, arg3) => unsafe {
syscall4(69, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Msgrcv(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(70, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Msgctl(arg0, arg1, arg2) => unsafe { syscall3(71, *arg0, *arg1, *arg2) },
Syscall::Fcntl(arg0, arg1, arg2) => unsafe { syscall3(72, *arg0, *arg1, *arg2) },
Syscall::Flock(arg0, arg1) => unsafe { syscall2(73, *arg0, *arg1) },
Syscall::Fsync(arg0) => unsafe { syscall1(74, *arg0) },
Syscall::Fdatasync(arg0) => unsafe { syscall1(75, *arg0) },
Syscall::Truncate(arg0, arg1) => unsafe { syscall2(76, *arg0, *arg1) },
Syscall::Ftruncate(arg0, arg1) => unsafe { syscall2(77, *arg0, *arg1) },
Syscall::Getdents(arg0, arg1, arg2) => unsafe { syscall3(78, *arg0, *arg1, *arg2) },
Syscall::Getcwd(arg0, arg1) => unsafe { syscall2(79, *arg0, *arg1) },
Syscall::Chdir(arg0) => unsafe { syscall1(80, *arg0) },
Syscall::Fchdir(arg0) => unsafe { syscall1(81, *arg0) },
Syscall::Rename(arg0, arg1) => unsafe { syscall2(82, *arg0, *arg1) },
Syscall::Mkdir(arg0, arg1) => unsafe { syscall2(83, *arg0, *arg1) },
Syscall::Rmdir(arg0) => unsafe { syscall1(84, *arg0) },
Syscall::Creat(arg0, arg1) => unsafe { syscall2(85, *arg0, *arg1) },
Syscall::Link(arg0, arg1) => unsafe { syscall2(86, *arg0, *arg1) },
Syscall::Unlink(arg0) => unsafe { syscall1(87, *arg0) },
Syscall::Symlink(arg0, arg1) => unsafe { syscall2(88, *arg0, *arg1) },
Syscall::Readlink(arg0, arg1, arg2) => unsafe { syscall3(89, *arg0, *arg1, *arg2) },
Syscall::Chmod(arg0, arg1) => unsafe { syscall2(90, *arg0, *arg1) },
Syscall::Fchmod(arg0, arg1) => unsafe { syscall2(91, *arg0, *arg1) },
Syscall::Chown(arg0, arg1, arg2) => unsafe { syscall3(92, *arg0, *arg1, *arg2) },
Syscall::Fchown(arg0, arg1, arg2) => unsafe { syscall3(93, *arg0, *arg1, *arg2) },
Syscall::Lchown(arg0, arg1, arg2) => unsafe { syscall3(94, *arg0, *arg1, *arg2) },
Syscall::Umask(arg0) => unsafe { syscall1(95, *arg0) },
Syscall::Gettimeofday(arg0, arg1) => unsafe { syscall2(96, *arg0, *arg1) },
Syscall::Getrlimit(arg0, arg1) => unsafe { syscall2(97, *arg0, *arg1) },
Syscall::Getrusage(arg0, arg1) => unsafe { syscall2(98, *arg0, *arg1) },
Syscall::Sysinfo(arg0) => unsafe { syscall1(99, *arg0) },
Syscall::Times(arg0) => unsafe { syscall1(100, *arg0) },
Syscall::Ptrace(arg0, arg1, arg2, arg3) => unsafe {
syscall4(101, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Getuid => unsafe { syscall0(102) },
Syscall::Syslog(arg0, arg1, arg2) => unsafe { syscall3(103, *arg0, *arg1, *arg2) },
Syscall::Getgid => unsafe { syscall0(104) },
Syscall::Setuid(arg0) => unsafe { syscall1(105, *arg0) },
Syscall::Setgid(arg0) => unsafe { syscall1(106, *arg0) },
Syscall::Geteuid => unsafe { syscall0(107) },
Syscall::Getegid => unsafe { syscall0(108) },
Syscall::Setpgid(arg0, arg1) => unsafe { syscall2(109, *arg0, *arg1) },
Syscall::Getppid => unsafe { syscall0(110) },
Syscall::Getpgrp => unsafe { syscall0(111) },
Syscall::Setsid => unsafe { syscall0(112) },
Syscall::Setreuid(arg0, arg1) => unsafe { syscall2(113, *arg0, *arg1) },
Syscall::Setregid(arg0, arg1) => unsafe { syscall2(114, *arg0, *arg1) },
Syscall::Getgroups(arg0, arg1) => unsafe { syscall2(115, *arg0, *arg1) },
Syscall::Setgroups(arg0, arg1) => unsafe { syscall2(116, *arg0, *arg1) },
Syscall::Setresuid(arg0, arg1, arg2) => unsafe { syscall3(117, *arg0, *arg1, *arg2) },
Syscall::Getresuid(arg0, arg1, arg2) => unsafe { syscall3(118, *arg0, *arg1, *arg2) },
Syscall::Setresgid(arg0, arg1, arg2) => unsafe { syscall3(119, *arg0, *arg1, *arg2) },
Syscall::Getresgid(arg0, arg1, arg2) => unsafe { syscall3(120, *arg0, *arg1, *arg2) },
Syscall::Getpgid(arg0) => unsafe { syscall1(121, *arg0) },
Syscall::Setfsuid(arg0) => unsafe { syscall1(122, *arg0) },
Syscall::Setfsgid(arg0) => unsafe { syscall1(123, *arg0) },
Syscall::Getsid(arg0) => unsafe { syscall1(124, *arg0) },
Syscall::Capget(arg0, arg1) => unsafe { syscall2(125, *arg0, *arg1) },
Syscall::Capset(arg0, arg1) => unsafe { syscall2(126, *arg0, *arg1) },
Syscall::RtSigpending(arg0, arg1) => unsafe { syscall2(127, *arg0, *arg1) },
Syscall::RtSigtimedwait(arg0, arg1, arg2, arg3) => unsafe {
syscall4(128, *arg0, *arg1, *arg2, *arg3)
},
Syscall::RtSigqueueinfo(arg0, arg1, arg2) => unsafe { syscall3(129, *arg0, *arg1, *arg2) },
Syscall::RtSigsuspend(arg0, arg1) => unsafe { syscall2(130, *arg0, *arg1) },
Syscall::Sigaltstack(arg0, arg1) => unsafe { syscall2(131, *arg0, *arg1) },
Syscall::Utime(arg0, arg1) => unsafe { syscall2(132, *arg0, *arg1) },
Syscall::Mknod(arg0, arg1, arg2) => unsafe { syscall3(133, *arg0, *arg1, *arg2) },
Syscall::Uselib(arg0) => unsafe { syscall1(134, *arg0) },
Syscall::Personality(arg0) => unsafe { syscall1(135, *arg0) },
Syscall::Ustat(arg0, arg1) => unsafe { syscall2(136, *arg0, *arg1) },
Syscall::Statfs(arg0, arg1) => unsafe { syscall2(137, *arg0, *arg1) },
Syscall::Fstatfs(arg0, arg1) => unsafe { syscall2(138, *arg0, *arg1) },
Syscall::Sysfs(arg0, arg1, arg2) => unsafe { syscall3(139, *arg0, *arg1, *arg2) },
Syscall::Getpriority(arg0, arg1) => unsafe { syscall2(140, *arg0, *arg1) },
Syscall::Setpriority(arg0, arg1, arg2) => unsafe { syscall3(141, *arg0, *arg1, *arg2) },
Syscall::SchedSetparam(arg0, arg1) => unsafe { syscall2(142, *arg0, *arg1) },
Syscall::SchedGetparam(arg0, arg1) => unsafe { syscall2(143, *arg0, *arg1) },
Syscall::SchedSetscheduler(arg0, arg1, arg2) => unsafe {
syscall3(144, *arg0, *arg1, *arg2)
},
Syscall::SchedGetscheduler(arg0) => unsafe { syscall1(145, *arg0) },
Syscall::SchedGetPriorityMax(arg0) => unsafe { syscall1(146, *arg0) },
Syscall::SchedGetPriorityMin(arg0) => unsafe { syscall1(147, *arg0) },
Syscall::SchedRrGetInterval(arg0, arg1) => unsafe { syscall2(148, *arg0, *arg1) },
Syscall::Mlock(arg0, arg1) => unsafe { syscall2(149, *arg0, *arg1) },
Syscall::Munlock(arg0, arg1) => unsafe { syscall2(150, *arg0, *arg1) },
Syscall::Mlockall(arg0) => unsafe { syscall1(151, *arg0) },
Syscall::Munlockall => unsafe { syscall0(152) },
Syscall::Vhangup => unsafe { syscall0(153) },
Syscall::ModifyLdt(arg0, arg1, arg2) => unsafe { syscall3(154, *arg0, *arg1, *arg2) },
Syscall::PivotRoot(arg0, arg1) => unsafe { syscall2(155, *arg0, *arg1) },
Syscall::_Sysctl(arg0) => unsafe { syscall1(156, *arg0) },
Syscall::Prctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(157, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::ArchPrctl(arg0, arg1) => unsafe { syscall2(158, *arg0, *arg1) },
Syscall::Adjtimex(arg0) => unsafe { syscall1(159, *arg0) },
Syscall::Setrlimit(arg0, arg1) => unsafe { syscall2(160, *arg0, *arg1) },
Syscall::Chroot(arg0) => unsafe { syscall1(161, *arg0) },
Syscall::Sync => unsafe { syscall0(162) },
Syscall::Acct(arg0) => unsafe { syscall1(163, *arg0) },
Syscall::Settimeofday(arg0, arg1) => unsafe { syscall2(164, *arg0, *arg1) },
Syscall::Mount(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(165, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Umount2(arg0, arg1) => unsafe { syscall2(166, *arg0, *arg1) },
Syscall::Swapon(arg0, arg1) => unsafe { syscall2(167, *arg0, *arg1) },
Syscall::Swapoff(arg0) => unsafe { syscall1(168, *arg0) },
Syscall::Reboot(arg0, arg1, arg2, arg3) => unsafe {
syscall4(169, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Sethostname(arg0, arg1) => unsafe { syscall2(170, *arg0, *arg1) },
Syscall::Setdomainname(arg0, arg1) => unsafe { syscall2(171, *arg0, *arg1) },
Syscall::Iopl(arg0) => unsafe { syscall1(172, *arg0) },
Syscall::Ioperm(arg0, arg1, arg2) => unsafe { syscall3(173, *arg0, *arg1, *arg2) },
Syscall::CreateModule(arg0, arg1) => unsafe { syscall2(174, *arg0, *arg1) },
Syscall::InitModule(arg0, arg1, arg2) => unsafe { syscall3(175, *arg0, *arg1, *arg2) },
Syscall::DeleteModule(arg0, arg1) => unsafe { syscall2(176, *arg0, *arg1) },
Syscall::GetKernelSyms(arg0) => unsafe { syscall1(177, *arg0) },
Syscall::QueryModule(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(178, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Quotactl(arg0, arg1, arg2, arg3) => unsafe {
syscall4(179, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Nfsservctl(arg0, arg1, arg2) => unsafe { syscall3(180, *arg0, *arg1, *arg2) },
Syscall::Getpmsg => unsafe { syscall0(181) },
Syscall::Putpmsg => unsafe { syscall0(182) },
Syscall::AfsSyscall => unsafe { syscall0(183) },
Syscall::Tuxcall => unsafe { syscall0(184) },
Syscall::Security => unsafe { syscall0(185) },
Syscall::Gettid => unsafe { syscall0(186) },
Syscall::Readahead(arg0, arg1, arg2) => unsafe { syscall3(187, *arg0, *arg1, *arg2) },
Syscall::Setxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(188, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Lsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(189, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Fsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(190, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Getxattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(191, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Lgetxattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(192, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Fgetxattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(193, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Listxattr(arg0, arg1, arg2) => unsafe { syscall3(194, *arg0, *arg1, *arg2) },
Syscall::Llistxattr(arg0, arg1, arg2) => unsafe { syscall3(195, *arg0, *arg1, *arg2) },
Syscall::Flistxattr(arg0, arg1, arg2) => unsafe { syscall3(196, *arg0, *arg1, *arg2) },
Syscall::Removexattr(arg0, arg1) => unsafe { syscall2(197, *arg0, *arg1) },
Syscall::Lremovexattr(arg0, arg1) => unsafe { syscall2(198, *arg0, *arg1) },
Syscall::Fremovexattr(arg0, arg1) => unsafe { syscall2(199, *arg0, *arg1) },
Syscall::Tkill(arg0, arg1) => unsafe { syscall2(200, *arg0, *arg1) },
Syscall::Time(arg0) => unsafe { syscall1(201, *arg0) },
Syscall::Futex(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(202, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::SchedSetaffinity(arg0, arg1, arg2) => unsafe {
syscall3(203, *arg0, *arg1, *arg2)
},
Syscall::SchedGetaffinity(arg0, arg1, arg2) => unsafe {
syscall3(204, *arg0, *arg1, *arg2)
},
Syscall::SetThreadArea(arg0) => unsafe { syscall1(205, *arg0) },
Syscall::IoSetup(arg0, arg1) => unsafe { syscall2(206, *arg0, *arg1) },
Syscall::IoDestroy(arg0) => unsafe { syscall1(207, *arg0) },
Syscall::IoGetevents(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(208, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::IoSubmit(arg0, arg1, arg2) => unsafe { syscall3(209, *arg0, *arg1, *arg2) },
Syscall::IoCancel(arg0, arg1, arg2) => unsafe { syscall3(210, *arg0, *arg1, *arg2) },
Syscall::GetThreadArea(arg0) => unsafe { syscall1(211, *arg0) },
Syscall::LookupDcookie(arg0, arg1, arg2, arg3) => unsafe {
syscall4(212, *arg0, *arg1, *arg2, *arg3)
},
Syscall::EpollCreate(arg0) => unsafe { syscall1(213, *arg0) },
Syscall::EpollCtlOld => unsafe { syscall0(214) },
Syscall::EpollWaitOld => unsafe { syscall0(215) },
Syscall::RemapFilePages(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(216, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Getdents64(arg0, arg1, arg2) => unsafe { syscall3(217, *arg0, *arg1, *arg2) },
Syscall::SetTidAddress(arg0) => unsafe { syscall1(218, *arg0) },
Syscall::RestartSyscall => unsafe { syscall0(219) },
Syscall::Semtimedop(arg0, arg1, arg2, arg3) => unsafe {
syscall4(220, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Fadvise64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(221, *arg0, *arg1, *arg2, *arg3)
},
Syscall::TimerCreate(arg0, arg1, arg2) => unsafe { syscall3(222, *arg0, *arg1, *arg2) },
Syscall::TimerSettime(arg0, arg1, arg2, arg3) => unsafe {
syscall4(223, *arg0, *arg1, *arg2, *arg3)
},
Syscall::TimerGettime(arg0, arg1) => unsafe { syscall2(224, *arg0, *arg1) },
Syscall::TimerGetoverrun(arg0) => unsafe { syscall1(225, *arg0) },
Syscall::TimerDelete(arg0) => unsafe { syscall1(226, *arg0) },
Syscall::ClockSettime(arg0, arg1) => unsafe { syscall2(227, *arg0, *arg1) },
Syscall::ClockGettime(arg0, arg1) => unsafe { syscall2(228, *arg0, *arg1) },
Syscall::ClockGetres(arg0, arg1) => unsafe { syscall2(229, *arg0, *arg1) },
Syscall::ClockNanosleep(arg0, arg1, arg2, arg3) => unsafe {
syscall4(230, *arg0, *arg1, *arg2, *arg3)
},
Syscall::ExitGroup(arg0) => unsafe { syscall1(231, *arg0) },
Syscall::EpollWait(arg0, arg1, arg2, arg3) => unsafe {
syscall4(232, *arg0, *arg1, *arg2, *arg3)
},
Syscall::EpollCtl(arg0, arg1, arg2, arg3) => unsafe {
syscall4(233, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Tgkill(arg0, arg1, arg2) => unsafe { syscall3(234, *arg0, *arg1, *arg2) },
Syscall::Utimes(arg0, arg1) => unsafe { syscall2(235, *arg0, *arg1) },
Syscall::Vserver => unsafe { syscall0(236) },
Syscall::Mbind(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(237, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::SetMempolicy(arg0, arg1, arg2) => unsafe { syscall3(238, *arg0, *arg1, *arg2) },
Syscall::GetMempolicy(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(239, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::MqOpen(arg0, arg1, arg2, arg3) => unsafe {
syscall4(240, *arg0, *arg1, *arg2, *arg3)
},
Syscall::MqUnlink(arg0) => unsafe { syscall1(241, *arg0) },
Syscall::MqTimedsend(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(242, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::MqTimedreceive(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(243, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::MqNotify(arg0, arg1) => unsafe { syscall2(244, *arg0, *arg1) },
Syscall::MqGetsetattr(arg0, arg1, arg2) => unsafe { syscall3(245, *arg0, *arg1, *arg2) },
Syscall::KexecLoad(arg0, arg1, arg2, arg3) => unsafe {
syscall4(246, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Waitid(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(247, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::AddKey(arg0, arg1, arg2, arg3) => unsafe {
syscall4(248, *arg0, *arg1, *arg2, *arg3)
},
Syscall::RequestKey(arg0, arg1, arg2) => unsafe { syscall3(249, *arg0, *arg1, *arg2) },
Syscall::Keyctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(250, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::IoprioSet(arg0, arg1, arg2) => unsafe { syscall3(251, *arg0, *arg1, *arg2) },
Syscall::IoprioGet(arg0, arg1) => unsafe { syscall2(252, *arg0, *arg1) },
Syscall::InotifyInit => unsafe { syscall0(253) },
Syscall::InotifyAddWatch(arg0, arg1, arg2) => unsafe { syscall3(254, *arg0, *arg1, *arg2) },
Syscall::InotifyRmWatch(arg0, arg1) => unsafe { syscall2(255, *arg0, *arg1) },
Syscall::MigratePages(arg0, arg1, arg2, arg3) => unsafe {
syscall4(256, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Openat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(257, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Mkdirat(arg0, arg1, arg2) => unsafe { syscall3(258, *arg0, *arg1, *arg2) },
Syscall::Mknodat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(259, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Fchownat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(260, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Futimesat(arg0, arg1, arg2) => unsafe { syscall3(261, *arg0, *arg1, *arg2) },
Syscall::Newfstatat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(262, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Unlinkat(arg0, arg1, arg2) => unsafe { syscall3(263, *arg0, *arg1, *arg2) },
Syscall::Renameat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(264, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Linkat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(265, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Symlinkat(arg0, arg1, arg2) => unsafe { syscall3(266, *arg0, *arg1, *arg2) },
Syscall::Readlinkat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(267, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Fchmodat(arg0, arg1, arg2) => unsafe { syscall3(268, *arg0, *arg1, *arg2) },
Syscall::Faccessat(arg0, arg1, arg2) => unsafe { syscall3(269, *arg0, *arg1, *arg2) },
Syscall::Pselect6(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(270, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Ppoll(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(271, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Unshare(arg0) => unsafe { syscall1(272, *arg0) },
Syscall::SetRobustList(arg0, arg1) => unsafe { syscall2(273, *arg0, *arg1) },
Syscall::GetRobustList(arg0, arg1, arg2) => unsafe { syscall3(274, *arg0, *arg1, *arg2) },
Syscall::Splice(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(275, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Tee(arg0, arg1, arg2, arg3) => unsafe {
syscall4(276, *arg0, *arg1, *arg2, *arg3)
},
Syscall::SyncFileRange(arg0, arg1, arg2, arg3) => unsafe {
syscall4(277, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Vmsplice(arg0, arg1, arg2, arg3) => unsafe {
syscall4(278, *arg0, *arg1, *arg2, *arg3)
},
Syscall::MovePages(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(279, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Utimensat(arg0, arg1, arg2, arg3) => unsafe {
syscall4(280, *arg0, *arg1, *arg2, *arg3)
},
Syscall::EpollPwait(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(281, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Signalfd(arg0, arg1, arg2) => unsafe { syscall3(282, *arg0, *arg1, *arg2) },
Syscall::TimerfdCreate(arg0, arg1) => unsafe { syscall2(283, *arg0, *arg1) },
Syscall::Eventfd(arg0, arg1) => unsafe { syscall2(284, *arg0, *arg1) },
Syscall::Fallocate(arg0, arg1, arg2, arg3) => unsafe {
syscall4(285, *arg0, *arg1, *arg2, *arg3)
},
Syscall::TimerfdSettime(arg0, arg1, arg2, arg3) => unsafe {
syscall4(286, *arg0, *arg1, *arg2, *arg3)
},
Syscall::TimerfdGettime(arg0, arg1) => unsafe { syscall2(287, *arg0, *arg1) },
Syscall::Accept4(arg0, arg1, arg2, arg3) => unsafe {
syscall4(288, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Signalfd4(arg0, arg1, arg2, arg3) => unsafe {
syscall4(289, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Eventfd2(arg0, arg1) => unsafe { syscall2(290, *arg0, *arg1) },
Syscall::EpollCreate1(arg0) => unsafe { syscall1(291, *arg0) },
Syscall::Dup3(arg0, arg1, arg2) => unsafe { syscall3(292, *arg0, *arg1, *arg2) },
Syscall::Pipe2(arg0, arg1) => unsafe { syscall2(293, *arg0, *arg1) },
Syscall::InotifyInit1(arg0) => unsafe { syscall1(294, *arg0) },
Syscall::Preadv(arg0, arg1, arg2, arg3) => unsafe {
syscall4(295, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Pwritev(arg0, arg1, arg2, arg3) => unsafe {
syscall4(296, *arg0, *arg1, *arg2, *arg3)
},
Syscall::RtTgsigqueueinfo(arg0, arg1, arg2, arg3) => unsafe {
syscall4(297, *arg0, *arg1, *arg2, *arg3)
},
Syscall::PerfEventOpen(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(298, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Recvmmsg(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(299, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::FanotifyInit(arg0, arg1) => unsafe { syscall2(300, *arg0, *arg1) },
Syscall::FanotifyMark(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(301, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Prlimit64(arg0, arg1, arg2, arg3) => unsafe {
syscall4(302, *arg0, *arg1, *arg2, *arg3)
},
Syscall::NameToHandleAt(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(303, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::OpenByHandleAt(arg0, arg1, arg2) => unsafe { syscall3(304, *arg0, *arg1, *arg2) },
Syscall::ClockAdjtime(arg0, arg1) => unsafe { syscall2(305, *arg0, *arg1) },
Syscall::Syncfs(arg0) => unsafe { syscall1(306, *arg0) },
Syscall::Sendmmsg(arg0, arg1, arg2, arg3) => unsafe {
syscall4(307, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Setns(arg0, arg1) => unsafe { syscall2(308, *arg0, *arg1) },
Syscall::Getcpu(arg0, arg1, arg2) => unsafe { syscall3(309, *arg0, *arg1, *arg2) },
Syscall::ProcessVmReadv(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(310, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::ProcessVmWritev(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(311, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Kcmp(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(312, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::FinitModule(arg0, arg1, arg2) => unsafe { syscall3(313, *arg0, *arg1, *arg2) },
Syscall::SchedSetattr(arg0, arg1, arg2) => unsafe { syscall3(314, *arg0, *arg1, *arg2) },
Syscall::SchedGetattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(315, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Renameat2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(316, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Seccomp(arg0, arg1, arg2) => unsafe { syscall3(317, *arg0, *arg1, *arg2) },
Syscall::Getrandom(arg0, arg1, arg2) => unsafe { syscall3(318, *arg0, *arg1, *arg2) },
Syscall::MemfdCreate(arg0, arg1) => unsafe { syscall2(319, *arg0, *arg1) },
Syscall::KexecFileLoad(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(320, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Bpf(arg0, arg1, arg2) => unsafe { syscall3(321, *arg0, *arg1, *arg2) },
Syscall::Execveat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(322, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Userfaultfd(arg0) => unsafe { syscall1(323, *arg0) },
Syscall::Membarrier(arg0, arg1) => unsafe { syscall2(324, *arg0, *arg1) },
Syscall::Mlock2(arg0, arg1, arg2) => unsafe { syscall3(325, *arg0, *arg1, *arg2) },
Syscall::CopyFileRange(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(326, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Preadv2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(327, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Pwritev2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(328, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::PkeyMprotect(arg0, arg1, arg2, arg3) => unsafe {
syscall4(329, *arg0, *arg1, *arg2, *arg3)
},
Syscall::PkeyAlloc(arg0, arg1) => unsafe { syscall2(330, *arg0, *arg1) },
Syscall::PkeyFree(arg0) => unsafe { syscall1(331, *arg0) },
Syscall::Statx(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(332, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::IoPgetevents(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
syscall6(333, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
Syscall::Rseq(arg0, arg1, arg2, arg3) => unsafe {
syscall4(334, *arg0, *arg1, *arg2, *arg3)
},
Syscall::PidfdSendSignal(arg0, arg1, arg2, arg3) => unsafe {
syscall4(424, *arg0, *arg1, *arg2, *arg3)
},
Syscall::IoUringSetup(arg0, arg1) => unsafe { syscall2(425, *arg0, *arg1) },
Syscall::IoUringEnter(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(426, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::IoUringRegister(arg0, arg1, arg2, arg3) => unsafe {
syscall4(427, *arg0, *arg1, *arg2, *arg3)
},
Syscall::OpenTree(arg0, arg1, arg2) => unsafe { syscall3(428, *arg0, *arg1, *arg2) },
Syscall::MoveMount(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(429, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Fsopen(arg0, arg1, arg2) => unsafe { syscall3(430, *arg0, *arg1, *arg2) },
Syscall::Fsconfig(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(431, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Fsmount(arg0, arg1, arg2) => unsafe { syscall3(432, *arg0, *arg1, *arg2) },
Syscall::Fspick(arg0, arg1, arg2) => unsafe { syscall3(433, *arg0, *arg1, *arg2) },
Syscall::PidfdOpen(arg0, arg1) => unsafe { syscall2(434, *arg0, *arg1) },
Syscall::Clone3(arg0, arg1) => unsafe { syscall2(435, *arg0, *arg1) },
Syscall::CloseRange(arg0, arg1, arg2) => unsafe { syscall3(436, *arg0, *arg1, *arg2) },
Syscall::Openat2(arg0, arg1, arg2, arg3) => unsafe {
syscall4(437, *arg0, *arg1, *arg2, *arg3)
},
Syscall::PidfdGetfd(arg0, arg1, arg2) => unsafe { syscall3(438, *arg0, *arg1, *arg2) },
Syscall::Faccessat2(arg0, arg1, arg2, arg3) => unsafe {
syscall4(439, *arg0, *arg1, *arg2, *arg3)
},
Syscall::ProcessMadvise(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(440, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::EpollPwait2(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(441, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::MountSetattr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(442, *arg0, *arg1, *arg2, *arg3)
},
Syscall::QuotactlFd(arg0, arg1, arg2, arg3) => unsafe {
syscall4(443, *arg0, *arg1, *arg2, *arg3)
},
Syscall::LandlockCreateRuleset(arg0, arg1, arg2) => unsafe {
syscall3(444, *arg0, *arg1, *arg2)
},
Syscall::LandlockAddRule(arg0, arg1, arg2, arg3) => unsafe {
syscall4(445, *arg0, *arg1, *arg2, *arg3)
},
Syscall::LandlockRestrictSelf(arg0, arg1) => unsafe { syscall2(446, *arg0, *arg1) },
Syscall::MemfdSecret(arg0) => unsafe { syscall1(447, *arg0) },
Syscall::ProcessMrelease(arg0, arg1) => unsafe { syscall2(448, *arg0, *arg1) },
Syscall::FutexWaitv(arg0, arg1, arg2) => unsafe { syscall3(449, *arg0, *arg1, *arg2) },
Syscall::SetMempolicyHomeNode(arg0, arg1, arg2) => unsafe {
syscall3(450, *arg0, *arg1, *arg2)
},
Syscall::Cachestat(arg0, arg1, arg2, arg3, arg4) => unsafe {
syscall5(451, *arg0, *arg1, *arg2, *arg3, *arg4)
},
Syscall::Fchmodat2(arg0, arg1, arg2, arg3) => unsafe {
syscall4(452, *arg0, *arg1, *arg2, *arg3)
},
Syscall::MapShadowStack(arg0, arg1) => unsafe { syscall2(453, *arg0, *arg1) },
Syscall::FutexWake(arg0, arg1, arg2) => unsafe { syscall3(454, *arg0, *arg1, *arg2) },
Syscall::FutexWait(arg0, arg1, arg2) => unsafe { syscall3(455, *arg0, *arg1, *arg2) },
Syscall::FutexRequeue(arg0, arg1, arg2, arg3) => unsafe {
syscall4(456, *arg0, *arg1, *arg2, *arg3)
},
Syscall::Statmount(arg0, arg1, arg2) => unsafe { syscall3(457, *arg0, *arg1, *arg2) },
Syscall::Listmount(arg0, arg1, arg2) => unsafe { syscall3(458, *arg0, *arg1, *arg2) },
Syscall::LsmGetSelfAttr(arg0, arg1, arg2, arg3) => unsafe {
syscall4(459, *arg0, *arg1, *arg2, *arg3)
},
Syscall::LsmSetSelfAttr(arg0, arg1, arg2) => unsafe { syscall3(460, *arg0, *arg1, *arg2) },
Syscall::LsmListModules(arg0, arg1) => unsafe { syscall2(461, *arg0, *arg1) },
Syscall::Unknown(syscall_num, args) => match args {
[arg0, arg1, arg2, arg3, arg4, arg5] => unsafe {
syscall6(*syscall_num, *arg0, *arg1, *arg2, *arg3, *arg4, *arg5)
},
_ => unreachable!(),
},
}
}
+7 -7
View File
@@ -29,13 +29,13 @@ pub unsafe fn unset_hook_fn() {
/// The type of hook function. /// The type of hook function.
pub type HookFn = extern "C" fn( pub type HookFn = extern "C" fn(
num: usize, num: libc::c_long,
a0: usize, a0: libc::c_ulong,
a1: usize, a1: libc::c_ulong,
a2: usize, a2: libc::c_ulong,
a3: usize, a3: libc::c_ulong,
a4: usize, a4: libc::c_ulong,
a5: usize, a5: libc::c_ulong,
result: &mut isize, result: &mut isize,
) -> InterceptResult; ) -> InterceptResult;
+9
View File
@@ -5,3 +5,12 @@ edition = "2024"
[dependencies] [dependencies]
bincode = "2.0.1" bincode = "2.0.1"
# kernel = "6.17"
# kernel = "1.0.0"
libc = "0.2.175"
nix = "0.30.1"
syscaller = "0.2.2"
# [build-dependencies]
# bindgen = "0.72.0"
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
// #[cfg(target_os = "linux")]
// use nix::sys::ptrace;
// #[cfg(target_os = "linux")]
// use nix::unistd::Pid;
// #[cfg(target_os = "linux")]
// fn read_buffer_with_ptrace(
// pid: i32,
// addr: usize,
// count: usize,
// ) -> Result<Vec<u8>, Box<dyn std::error::Error>> {
// let pid = Pid::from_raw(pid);
// let mut buffer = Vec::with_capacity(count);
// // ptrace reads in word-sized chunks (usually 8 bytes on 64-bit systems)
// let word_size = std::mem::size_of::<usize>();
// let mut current_addr = addr;
// let mut bytes_read = 0;
// while bytes_read < count {
// let word = ptrace::read(pid, current_addr as ptrace::AddressType)?;
// let word_bytes = word.to_ne_bytes();
// let bytes_to_copy = std::cmp::min(word_size, count - bytes_read);
// buffer.extend_from_slice(&word_bytes[..bytes_to_copy]);
// current_addr += word_size;
// bytes_read += bytes_to_copy;
// }
// buffer.truncate(count);
// Ok(buffer)
// }
+85 -2
View File
@@ -1,20 +1,103 @@
mod create_syscall; mod create_syscall;
mod kern_buffers;
mod proxy_list; mod proxy_list;
mod syscall; mod syscall;
mod syscall_exec;
mod syscall_num; mod syscall_num;
mod types;
const CONFIG: bincode::config::Configuration = bincode::config::standard(); const CONFIG: bincode::config::Configuration = bincode::config::standard();
use std::{ use std::{
collections::HashMap, collections::HashMap,
fmt::Debug,
marker::PhantomData,
sync::{Arc, Mutex}, sync::{Arc, Mutex},
}; };
use bincode::{Decode, Encode}; use bincode::{Decode, Encode};
pub use create_syscall::create_syscall;
pub use proxy_list::syscall_should_proxy;
pub use syscall::Syscall; pub use syscall::Syscall;
pub use syscall_exec::execute_syscall;
pub use syscall_num::Sysno; pub use syscall_num::Sysno;
pub use types::*;
// Type aliases for pointers to improve readability.
// pub type Ptr<_> = libc::c_long;
// pub type ConstPtr<_> = libc::c_long;
// pub type Ptr<T> = T;
// pub type ConstPtr<T> = T;
// Placeholder structs for kernel-specific types not present in libc.
// These are defined as opaque types for correct type checking in the enum.
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct AioContext;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Iocb;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct IoEvent;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct IoUringParams;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Mmsghdr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct GetcpuCache;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct RobustListHead;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct FutexWaitv;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct KexecSegment;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct CapUserHeaderT;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct CapUserDataT;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Rlimit64;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct FileHandle;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct PerfEventAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct SchedAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct CloneArgs;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct BpfAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Statx;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Rseq;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct OpenHow;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct MountAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct LandlockRulesetAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct LandlockRule;
#[derive(Debug, PartialEq, Eq, Encode, Decode)] #[derive(Debug, PartialEq, Eq, Encode, Decode)]
pub enum Message { pub enum Message {
File diff suppressed because it is too large Load Diff
+1667 -366
View File
File diff suppressed because it is too large Load Diff
View File
+661
View File
@@ -0,0 +1,661 @@
use crate::Syscall;
use syscaller::{syscall0, syscall1, syscall2, syscall3, syscall4, syscall5, syscall6};
// fn syscall0(number: isize) -> isize {
// unsafe { syscaller::syscall0(number as usize) }
// }
// fn syscall1(number: isize, arg0: isize) -> isize {
// unsafe { syscaller::syscall1(number as usize, arg0 as usize) }
// }
// fn syscall2(number: isize, arg0: isize, arg1: isize) -> isize {
// unsafe { syscaller::syscall2(number as usize, arg0 as usize, arg1 as usize) }
// }
// fn syscall3(number: isize, arg0: isize, arg1: isize, arg2: isize) -> isize {
// unsafe { syscaller::syscall3(number as usize, arg0 as usize, arg1 as usize, arg2 as usize) }
// }
// fn syscall4(number: isize, arg0: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
// unsafe {
// syscaller::syscall4(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// )
// }
// }
// fn syscall5(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall5(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// )
// }
// }
// fn syscall6(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// arg5: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall6(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// arg5 as usize,
// )
// }
// }
use libc::{c_long, c_ulong};
// The Syscall enum and type aliases from the previous response are assumed to be present here.
#[allow(unused_unsafe)]
pub fn execute_syscall(syscall_obj: Syscall) -> isize {
todo!();
// match syscall_obj {
// Syscall::Read(arg0, arg1, arg2) => unsafe { syscall3(libc::SYS_read, arg0, arg1, arg2) },
// Syscall::Write(arg0, arg1, arg2) => unsafe { syscall3(1, arg0, arg1, arg2) },
// Syscall::Open(arg0, arg1, arg2) => unsafe { syscall3(2, arg0, arg1, arg2) },
// Syscall::Close(arg0) => unsafe { syscall1(3, arg0) },
// Syscall::Stat(arg0, arg1) => unsafe { syscall2(4, arg0, arg1) },
// Syscall::Fstat(arg0, arg1) => unsafe { syscall2(5, arg0, arg1) },
// Syscall::Lstat(arg0, arg1) => unsafe { syscall2(6, arg0, arg1) },
// Syscall::Poll(arg0, arg1, arg2) => unsafe { syscall3(7, arg0, arg1, arg2) },
// Syscall::Lseek(arg0, arg1, arg2) => unsafe { syscall3(8, arg0, arg1, arg2) },
// Syscall::Mmap(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(9, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Mprotect(arg0, arg1, arg2) => unsafe { syscall3(10, arg0, arg1, arg2) },
// Syscall::Munmap(arg0, arg1) => unsafe { syscall2(11, arg0, arg1) },
// Syscall::Brk(arg0) => unsafe { syscall1(12, arg0) },
// Syscall::RtSigaction(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(13, arg0, arg1, arg2, arg3)
// },
// Syscall::RtSigprocmask(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(14, arg0, arg1, arg2, arg3)
// },
// Syscall::RtSigreturn => unsafe { syscall0(15) },
// Syscall::Ioctl(arg0, arg1, arg2) => unsafe { syscall3(16, arg0, arg1, arg2) },
// Syscall::Pread64(arg0, arg1, arg2, arg3) => unsafe { syscall4(17, arg0, arg1, arg2, arg3) },
// Syscall::Pwrite64(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(18, arg0, arg1, arg2, arg3)
// },
// Syscall::Readv(arg0, arg1, arg2) => unsafe { syscall3(19, arg0, arg1, arg2) },
// Syscall::Writev(arg0, arg1, arg2) => unsafe { syscall3(20, arg0, arg1, arg2) },
// Syscall::Access(arg0, arg1) => unsafe { syscall2(21, arg0, arg1) },
// Syscall::Pipe(arg0) => unsafe { syscall1(22, arg0) },
// Syscall::Select(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(23, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::SchedYield => unsafe { syscall0(24) },
// Syscall::Mremap(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(25, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Msync(arg0, arg1, arg2) => unsafe { syscall3(26, arg0, arg1, arg2) },
// Syscall::Mincore(arg0, arg1, arg2) => unsafe { syscall3(27, arg0, arg1, arg2) },
// Syscall::Madvise(arg0, arg1, arg2) => unsafe { syscall3(28, arg0, arg1, arg2) },
// Syscall::Shmget(arg0, arg1, arg2) => unsafe { syscall3(29, arg0, arg1, arg2) },
// Syscall::Shmat(arg0, arg1, arg2) => unsafe { syscall3(30, arg0, arg1, arg2) },
// Syscall::Shmctl(arg0, arg1, arg2) => unsafe { syscall3(31, arg0, arg1, arg2) },
// Syscall::Dup(arg0) => unsafe { syscall1(32, arg0) },
// Syscall::Dup2(arg0, arg1) => unsafe { syscall2(33, arg0, arg1) },
// Syscall::Pause => unsafe { syscall0(34) },
// Syscall::Nanosleep(arg0, arg1) => unsafe { syscall2(35, arg0, arg1) },
// Syscall::Getitimer(arg0, arg1) => unsafe { syscall2(36, arg0, arg1) },
// Syscall::Alarm(arg0) => unsafe { syscall1(37, arg0) },
// Syscall::Setitimer(arg0, arg1, arg2) => unsafe { syscall3(38, arg0, arg1, arg2) },
// Syscall::Getpid => unsafe { syscall0(39) },
// Syscall::Sendfile(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(40, arg0, arg1, arg2, arg3)
// },
// Syscall::Socket(arg0, arg1, arg2) => unsafe { syscall3(41, arg0, arg1, arg2) },
// Syscall::Connect(arg0, arg1, arg2) => unsafe { syscall3(42, arg0, arg1, arg2) },
// Syscall::Accept(arg0, arg1, arg2) => unsafe { syscall3(43, arg0, arg1, arg2) },
// Syscall::Sendto(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(44, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Recvfrom(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(45, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Sendmsg(arg0, arg1, arg2) => unsafe { syscall3(46, arg0, arg1, arg2) },
// Syscall::Recvmsg(arg0, arg1, arg2) => unsafe { syscall3(47, arg0, arg1, arg2) },
// Syscall::Shutdown(arg0, arg1) => unsafe { syscall2(48, arg0, arg1) },
// Syscall::Bind(arg0, arg1, arg2) => unsafe { syscall3(49, arg0, arg1, arg2) },
// Syscall::Listen(arg0, arg1) => unsafe { syscall2(50, arg0, arg1) },
// Syscall::Getsockname(arg0, arg1, arg2) => unsafe { syscall3(51, arg0, arg1, arg2) },
// Syscall::Getpeername(arg0, arg1, arg2) => unsafe { syscall3(52, arg0, arg1, arg2) },
// Syscall::Socketpair(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(53, arg0, arg1, arg2, arg3)
// },
// Syscall::Setsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(54, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Getsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(55, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Clone(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(56, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fork => unsafe { syscall0(57) },
// Syscall::Vfork => unsafe { syscall0(58) },
// Syscall::Execve(arg0, arg1, arg2) => unsafe { syscall3(59, arg0, arg1, arg2) },
// Syscall::Exit(arg0) => unsafe { syscall1(60, arg0) },
// Syscall::Wait4(arg0, arg1, arg2, arg3) => unsafe { syscall4(61, arg0, arg1, arg2, arg3) },
// Syscall::Kill(arg0, arg1) => unsafe { syscall2(62, arg0, arg1) },
// Syscall::Uname(arg0) => unsafe { syscall1(63, arg0) },
// Syscall::Semget(arg0, arg1, arg2) => unsafe { syscall3(64, arg0, arg1, arg2) },
// Syscall::Semop(arg0, arg1, arg2) => unsafe { syscall3(65, arg0, arg1, arg2) },
// Syscall::Semctl(arg0, arg1, arg2, arg3) => unsafe { syscall4(66, arg0, arg1, arg2, arg3) },
// Syscall::Shmdt(arg0) => unsafe { syscall1(67, arg0) },
// Syscall::Msgget(arg0, arg1) => unsafe { syscall2(68, arg0, arg1) },
// Syscall::Msgsnd(arg0, arg1, arg2, arg3) => unsafe { syscall4(69, arg0, arg1, arg2, arg3) },
// Syscall::Msgrcv(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(70, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Msgctl(arg0, arg1, arg2) => unsafe { syscall3(71, arg0, arg1, arg2) },
// Syscall::Fcntl(arg0, arg1, arg2) => unsafe { syscall3(72, arg0, arg1, arg2) },
// Syscall::Flock(arg0, arg1) => unsafe { syscall2(73, arg0, arg1) },
// Syscall::Fsync(arg0) => unsafe { syscall1(74, arg0) },
// Syscall::Fdatasync(arg0) => unsafe { syscall1(75, arg0) },
// Syscall::Truncate(arg0, arg1) => unsafe { syscall2(76, arg0, arg1) },
// Syscall::Ftruncate(arg0, arg1) => unsafe { syscall2(77, arg0, arg1) },
// Syscall::Getdents(arg0, arg1, arg2) => unsafe { syscall3(78, arg0, arg1, arg2) },
// Syscall::Getcwd(arg0, arg1) => unsafe { syscall2(79, arg0, arg1) },
// Syscall::Chdir(arg0) => unsafe { syscall1(80, arg0) },
// Syscall::Fchdir(arg0) => unsafe { syscall1(81, arg0) },
// Syscall::Rename(arg0, arg1) => unsafe { syscall2(82, arg0, arg1) },
// Syscall::Mkdir(arg0, arg1) => unsafe { syscall2(83, arg0, arg1) },
// Syscall::Rmdir(arg0) => unsafe { syscall1(84, arg0) },
// Syscall::Creat(arg0, arg1) => unsafe { syscall2(85, arg0, arg1) },
// Syscall::Link(arg0, arg1) => unsafe { syscall2(86, arg0, arg1) },
// Syscall::Unlink(arg0) => unsafe { syscall1(87, arg0) },
// Syscall::Symlink(arg0, arg1) => unsafe { syscall2(88, arg0, arg1) },
// Syscall::Readlink(arg0, arg1, arg2) => unsafe { syscall3(89, arg0, arg1, arg2) },
// Syscall::Chmod(arg0, arg1) => unsafe { syscall2(90, arg0, arg1) },
// Syscall::Fchmod(arg0, arg1) => unsafe { syscall2(91, arg0, arg1) },
// Syscall::Chown(arg0, arg1, arg2) => unsafe { syscall3(92, arg0, arg1, arg2) },
// Syscall::Fchown(arg0, arg1, arg2) => unsafe { syscall3(93, arg0, arg1, arg2) },
// Syscall::Lchown(arg0, arg1, arg2) => unsafe { syscall3(94, arg0, arg1, arg2) },
// Syscall::Umask(arg0) => unsafe { syscall1(95, arg0) },
// Syscall::Gettimeofday(arg0, arg1) => unsafe { syscall2(96, arg0, arg1) },
// Syscall::Getrlimit(arg0, arg1) => unsafe { syscall2(97, arg0, arg1) },
// Syscall::Getrusage(arg0, arg1) => unsafe { syscall2(98, arg0, arg1) },
// Syscall::Sysinfo(arg0) => unsafe { syscall1(99, arg0) },
// Syscall::Times(arg0) => unsafe { syscall1(100, arg0) },
// Syscall::Ptrace(arg0, arg1, arg2, arg3) => unsafe { syscall4(101, arg0, arg1, arg2, arg3) },
// Syscall::Getuid => unsafe { syscall0(102) },
// Syscall::Syslog(arg0, arg1, arg2) => unsafe { syscall3(103, arg0, arg1, arg2) },
// Syscall::Getgid => unsafe { syscall0(104) },
// Syscall::Setuid(arg0) => unsafe { syscall1(105, arg0) },
// Syscall::Setgid(arg0) => unsafe { syscall1(106, arg0) },
// Syscall::Geteuid => unsafe { syscall0(107) },
// Syscall::Getegid => unsafe { syscall0(108) },
// Syscall::Setpgid(arg0, arg1) => unsafe { syscall2(109, arg0, arg1) },
// Syscall::Getppid => unsafe { syscall0(110) },
// Syscall::Getpgrp => unsafe { syscall0(111) },
// Syscall::Setsid => unsafe { syscall0(112) },
// Syscall::Setreuid(arg0, arg1) => unsafe { syscall2(113, arg0, arg1) },
// Syscall::Setregid(arg0, arg1) => unsafe { syscall2(114, arg0, arg1) },
// Syscall::Getgroups(arg0, arg1) => unsafe { syscall2(115, arg0, arg1) },
// Syscall::Setgroups(arg0, arg1) => unsafe { syscall2(116, arg0, arg1) },
// Syscall::Setresuid(arg0, arg1, arg2) => unsafe { syscall3(117, arg0, arg1, arg2) },
// Syscall::Getresuid(arg0, arg1, arg2) => unsafe { syscall3(118, arg0, arg1, arg2) },
// Syscall::Setresgid(arg0, arg1, arg2) => unsafe { syscall3(119, arg0, arg1, arg2) },
// Syscall::Getresgid(arg0, arg1, arg2) => unsafe { syscall3(120, arg0, arg1, arg2) },
// Syscall::Getpgid(arg0) => unsafe { syscall1(121, arg0) },
// Syscall::Setfsuid(arg0) => unsafe { syscall1(122, arg0) },
// Syscall::Setfsgid(arg0) => unsafe { syscall1(123, arg0) },
// Syscall::Getsid(arg0) => unsafe { syscall1(124, arg0) },
// Syscall::Capget(arg0, arg1) => unsafe { syscall2(125, arg0, arg1) },
// Syscall::Capset(arg0, arg1) => unsafe { syscall2(126, arg0, arg1) },
// Syscall::RtSigpending(arg0, arg1) => unsafe { syscall2(127, arg0, arg1) },
// Syscall::RtSigtimedwait(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(128, arg0, arg1, arg2, arg3)
// },
// Syscall::RtSigqueueinfo(arg0, arg1, arg2) => unsafe { syscall3(129, arg0, arg1, arg2) },
// Syscall::RtSigsuspend(arg0, arg1) => unsafe { syscall2(130, arg0, arg1) },
// Syscall::Sigaltstack(arg0, arg1) => unsafe { syscall2(131, arg0, arg1) },
// Syscall::Utime(arg0, arg1) => unsafe { syscall2(132, arg0, arg1) },
// Syscall::Mknod(arg0, arg1, arg2) => unsafe { syscall3(133, arg0, arg1, arg2) },
// Syscall::Uselib(arg0) => unsafe { syscall1(134, arg0) },
// Syscall::Personality(arg0) => unsafe { syscall1(135, arg0) },
// Syscall::Ustat(arg0, arg1) => unsafe { syscall2(136, arg0, arg1) },
// Syscall::Statfs(arg0, arg1) => unsafe { syscall2(137, arg0, arg1) },
// Syscall::Fstatfs(arg0, arg1) => unsafe { syscall2(138, arg0, arg1) },
// Syscall::Sysfs(arg0, arg1, arg2) => unsafe { syscall3(139, arg0, arg1, arg2) },
// Syscall::Getpriority(arg0, arg1) => unsafe { syscall2(140, arg0, arg1) },
// Syscall::Setpriority(arg0, arg1, arg2) => unsafe { syscall3(141, arg0, arg1, arg2) },
// Syscall::SchedSetparam(arg0, arg1) => unsafe { syscall2(142, arg0, arg1) },
// Syscall::SchedGetparam(arg0, arg1) => unsafe { syscall2(143, arg0, arg1) },
// Syscall::SchedSetscheduler(arg0, arg1, arg2) => unsafe { syscall3(144, arg0, arg1, arg2) },
// Syscall::SchedGetscheduler(arg0) => unsafe { syscall1(145, arg0) },
// Syscall::SchedGetPriorityMax(arg0) => unsafe { syscall1(146, arg0) },
// Syscall::SchedGetPriorityMin(arg0) => unsafe { syscall1(147, arg0) },
// Syscall::SchedRrGetInterval(arg0, arg1) => unsafe { syscall2(148, arg0, arg1) },
// Syscall::Mlock(arg0, arg1) => unsafe { syscall2(149, arg0, arg1) },
// Syscall::Munlock(arg0, arg1) => unsafe { syscall2(150, arg0, arg1) },
// Syscall::Mlockall(arg0) => unsafe { syscall1(151, arg0) },
// Syscall::Munlockall => unsafe { syscall0(152) },
// Syscall::Vhangup => unsafe { syscall0(153) },
// Syscall::ModifyLdt(arg0, arg1, arg2) => unsafe { syscall3(154, arg0, arg1, arg2) },
// Syscall::PivotRoot(arg0, arg1) => unsafe { syscall2(155, arg0, arg1) },
// Syscall::_Sysctl(arg0) => unsafe { syscall1(156, arg0) },
// Syscall::Prctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(157, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::ArchPrctl(arg0, arg1) => unsafe { syscall2(158, arg0, arg1) },
// Syscall::Adjtimex(arg0) => unsafe { syscall1(159, arg0) },
// Syscall::Setrlimit(arg0, arg1) => unsafe { syscall2(160, arg0, arg1) },
// Syscall::Chroot(arg0) => unsafe { syscall1(161, arg0) },
// Syscall::Sync => unsafe { syscall0(162) },
// Syscall::Acct(arg0) => unsafe { syscall1(163, arg0) },
// Syscall::Settimeofday(arg0, arg1) => unsafe { syscall2(164, arg0, arg1) },
// Syscall::Mount(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(165, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Umount2(arg0, arg1) => unsafe { syscall2(166, arg0, arg1) },
// Syscall::Swapon(arg0, arg1) => unsafe { syscall2(167, arg0, arg1) },
// Syscall::Swapoff(arg0) => unsafe { syscall1(168, arg0) },
// Syscall::Reboot(arg0, arg1, arg2, arg3) => unsafe { syscall4(169, arg0, arg1, arg2, arg3) },
// Syscall::Sethostname(arg0, arg1) => unsafe { syscall2(170, arg0, arg1) },
// Syscall::Setdomainname(arg0, arg1) => unsafe { syscall2(171, arg0, arg1) },
// Syscall::Iopl(arg0) => unsafe { syscall1(172, arg0) },
// Syscall::Ioperm(arg0, arg1, arg2) => unsafe { syscall3(173, arg0, arg1, arg2) },
// Syscall::CreateModule(arg0, arg1) => unsafe { syscall2(174, arg0, arg1) },
// Syscall::InitModule(arg0, arg1, arg2) => unsafe { syscall3(175, arg0, arg1, arg2) },
// Syscall::DeleteModule(arg0, arg1) => unsafe { syscall2(176, arg0, arg1) },
// Syscall::GetKernelSyms(arg0) => unsafe { syscall1(177, arg0) },
// Syscall::QueryModule(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(178, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Quotactl(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(179, arg0, arg1, arg2, arg3)
// },
// Syscall::Nfsservctl(arg0, arg1, arg2) => unsafe { syscall3(180, arg0, arg1, arg2) },
// Syscall::Getpmsg => unsafe { syscall0(181) },
// Syscall::Putpmsg => unsafe { syscall0(182) },
// Syscall::AfsSyscall => unsafe { syscall0(183) },
// Syscall::Tuxcall => unsafe { syscall0(184) },
// Syscall::Security => unsafe { syscall0(185) },
// Syscall::Gettid => unsafe { syscall0(186) },
// Syscall::Readahead(arg0, arg1, arg2) => unsafe { syscall3(187, arg0, arg1, arg2) },
// Syscall::Setxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(188, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Lsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(189, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(190, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Getxattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(191, arg0, arg1, arg2, arg3)
// },
// Syscall::Lgetxattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(192, arg0, arg1, arg2, arg3)
// },
// Syscall::Fgetxattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(193, arg0, arg1, arg2, arg3)
// },
// Syscall::Listxattr(arg0, arg1, arg2) => unsafe { syscall3(194, arg0, arg1, arg2) },
// Syscall::Llistxattr(arg0, arg1, arg2) => unsafe { syscall3(195, arg0, arg1, arg2) },
// Syscall::Flistxattr(arg0, arg1, arg2) => unsafe { syscall3(196, arg0, arg1, arg2) },
// Syscall::Removexattr(arg0, arg1) => unsafe { syscall2(197, arg0, arg1) },
// Syscall::Lremovexattr(arg0, arg1) => unsafe { syscall2(198, arg0, arg1) },
// Syscall::Fremovexattr(arg0, arg1) => unsafe { syscall2(199, arg0, arg1) },
// Syscall::Tkill(arg0, arg1) => unsafe { syscall2(200, arg0, arg1) },
// Syscall::Time(arg0) => unsafe { syscall1(201, arg0) },
// Syscall::Futex(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(202, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::SchedSetaffinity(arg0, arg1, arg2) => unsafe { syscall3(203, arg0, arg1, arg2) },
// Syscall::SchedGetaffinity(arg0, arg1, arg2) => unsafe { syscall3(204, arg0, arg1, arg2) },
// Syscall::SetThreadArea(arg0) => unsafe { syscall1(205, arg0) },
// Syscall::IoSetup(arg0, arg1) => unsafe { syscall2(206, arg0, arg1) },
// Syscall::IoDestroy(arg0) => unsafe { syscall1(207, arg0) },
// Syscall::IoGetevents(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(208, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoSubmit(arg0, arg1, arg2) => unsafe { syscall3(209, arg0, arg1, arg2) },
// Syscall::IoCancel(arg0, arg1, arg2) => unsafe { syscall3(210, arg0, arg1, arg2) },
// Syscall::GetThreadArea(arg0) => unsafe { syscall1(211, arg0) },
// Syscall::LookupDcookie(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(212, arg0, arg1, arg2, arg3)
// },
// Syscall::EpollCreate(arg0) => unsafe { syscall1(213, arg0) },
// Syscall::EpollCtlOld => unsafe { syscall0(214) },
// Syscall::EpollWaitOld => unsafe { syscall0(215) },
// Syscall::RemapFilePages(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(216, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Getdents64(arg0, arg1, arg2) => unsafe { syscall3(217, arg0, arg1, arg2) },
// Syscall::SetTidAddress(arg0) => unsafe { syscall1(218, arg0) },
// Syscall::RestartSyscall => unsafe { syscall0(219) },
// Syscall::Semtimedop(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(220, arg0, arg1, arg2, arg3)
// },
// Syscall::Fadvise64(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(221, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerCreate(arg0, arg1, arg2) => unsafe { syscall3(222, arg0, arg1, arg2) },
// Syscall::TimerSettime(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(223, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerGettime(arg0, arg1) => unsafe { syscall2(224, arg0, arg1) },
// Syscall::TimerGetoverrun(arg0) => unsafe { syscall1(225, arg0) },
// Syscall::TimerDelete(arg0) => unsafe { syscall1(226, arg0) },
// Syscall::ClockSettime(arg0, arg1) => unsafe { syscall2(227, arg0, arg1) },
// Syscall::ClockGettime(arg0, arg1) => unsafe { syscall2(228, arg0, arg1) },
// Syscall::ClockGetres(arg0, arg1) => unsafe { syscall2(229, arg0, arg1) },
// Syscall::ClockNanosleep(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(230, arg0, arg1, arg2, arg3)
// },
// Syscall::ExitGroup(arg0) => unsafe { syscall1(231, arg0) },
// Syscall::EpollWait(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(232, arg0, arg1, arg2, arg3)
// },
// Syscall::EpollCtl(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(233, arg0, arg1, arg2, arg3)
// },
// Syscall::Tgkill(arg0, arg1, arg2) => unsafe { syscall3(234, arg0, arg1, arg2) },
// Syscall::Utimes(arg0, arg1) => unsafe { syscall2(235, arg0, arg1) },
// Syscall::Vserver => unsafe { syscall0(236) },
// Syscall::Mbind(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(237, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::SetMempolicy(arg0, arg1, arg2) => unsafe { syscall3(238, arg0, arg1, arg2) },
// Syscall::GetMempolicy(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(239, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MqOpen(arg0, arg1, arg2, arg3) => unsafe { syscall4(240, arg0, arg1, arg2, arg3) },
// Syscall::MqUnlink(arg0) => unsafe { syscall1(241, arg0) },
// Syscall::MqTimedsend(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(242, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MqTimedreceive(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(243, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MqNotify(arg0, arg1) => unsafe { syscall2(244, arg0, arg1) },
// Syscall::MqGetsetattr(arg0, arg1, arg2) => unsafe { syscall3(245, arg0, arg1, arg2) },
// Syscall::KexecLoad(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(246, arg0, arg1, arg2, arg3)
// },
// Syscall::Waitid(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(247, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::AddKey(arg0, arg1, arg2, arg3) => unsafe { syscall4(248, arg0, arg1, arg2, arg3) },
// Syscall::RequestKey(arg0, arg1, arg2) => unsafe { syscall3(249, arg0, arg1, arg2) },
// Syscall::Keyctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(250, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoprioSet(arg0, arg1, arg2) => unsafe { syscall3(251, arg0, arg1, arg2) },
// Syscall::IoprioGet(arg0, arg1) => unsafe { syscall2(252, arg0, arg1) },
// Syscall::InotifyInit => unsafe { syscall0(253) },
// Syscall::InotifyAddWatch(arg0, arg1, arg2) => unsafe { syscall3(254, arg0, arg1, arg2) },
// Syscall::InotifyRmWatch(arg0, arg1) => unsafe { syscall2(255, arg0, arg1) },
// Syscall::MigratePages(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(256, arg0, arg1, arg2, arg3)
// },
// Syscall::Openat(arg0, arg1, arg2, arg3) => unsafe { syscall4(257, arg0, arg1, arg2, arg3) },
// Syscall::Mkdirat(arg0, arg1, arg2) => unsafe { syscall3(258, arg0, arg1, arg2) },
// Syscall::Mknodat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(259, arg0, arg1, arg2, arg3)
// },
// Syscall::Fchownat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(260, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Futimesat(arg0, arg1, arg2) => unsafe { syscall3(261, arg0, arg1, arg2) },
// Syscall::Newfstatat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(262, arg0, arg1, arg2, arg3)
// },
// Syscall::Unlinkat(arg0, arg1, arg2) => unsafe { syscall3(263, arg0, arg1, arg2) },
// Syscall::Renameat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(264, arg0, arg1, arg2, arg3)
// },
// Syscall::Linkat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(265, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Symlinkat(arg0, arg1, arg2) => unsafe { syscall3(266, arg0, arg1, arg2) },
// Syscall::Readlinkat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(267, arg0, arg1, arg2, arg3)
// },
// Syscall::Fchmodat(arg0, arg1, arg2) => unsafe { syscall3(268, arg0, arg1, arg2) },
// Syscall::Faccessat(arg0, arg1, arg2) => unsafe { syscall3(269, arg0, arg1, arg2) },
// Syscall::Pselect6(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(270, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Ppoll(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(271, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Unshare(arg0) => unsafe { syscall1(272, arg0) },
// Syscall::SetRobustList(arg0, arg1) => unsafe { syscall2(273, arg0, arg1) },
// Syscall::GetRobustList(arg0, arg1, arg2) => unsafe { syscall3(274, arg0, arg1, arg2) },
// Syscall::Splice(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(275, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Tee(arg0, arg1, arg2, arg3) => unsafe { syscall4(276, arg0, arg1, arg2, arg3) },
// Syscall::SyncFileRange(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(277, arg0, arg1, arg2, arg3)
// },
// Syscall::Vmsplice(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(278, arg0, arg1, arg2, arg3)
// },
// Syscall::MovePages(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(279, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Utimensat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(280, arg0, arg1, arg2, arg3)
// },
// Syscall::EpollPwait(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(281, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Signalfd(arg0, arg1, arg2) => unsafe { syscall3(282, arg0, arg1, arg2) },
// Syscall::TimerfdCreate(arg0, arg1) => unsafe { syscall2(283, arg0, arg1) },
// Syscall::Eventfd(arg0, arg1) => unsafe { syscall2(284, arg0, arg1) },
// Syscall::Fallocate(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(285, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerfdSettime(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(286, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerfdGettime(arg0, arg1) => unsafe { syscall2(287, arg0, arg1) },
// Syscall::Accept4(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(288, arg0, arg1, arg2, arg3)
// },
// Syscall::Signalfd4(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(289, arg0, arg1, arg2, arg3)
// },
// Syscall::Eventfd2(arg0, arg1) => unsafe { syscall2(290, arg0, arg1) },
// Syscall::EpollCreate1(arg0) => unsafe { syscall1(291, arg0) },
// Syscall::Dup3(arg0, arg1, arg2) => unsafe { syscall3(292, arg0, arg1, arg2) },
// Syscall::Pipe2(arg0, arg1) => unsafe { syscall2(293, arg0, arg1) },
// Syscall::InotifyInit1(arg0) => unsafe { syscall1(294, arg0) },
// Syscall::Preadv(arg0, arg1, arg2, arg3) => unsafe { syscall4(295, arg0, arg1, arg2, arg3) },
// Syscall::Pwritev(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(296, arg0, arg1, arg2, arg3)
// },
// Syscall::RtTgsigqueueinfo(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(297, arg0, arg1, arg2, arg3)
// },
// Syscall::PerfEventOpen(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(298, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Recvmmsg(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(299, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::FanotifyInit(arg0, arg1) => unsafe { syscall2(300, arg0, arg1) },
// Syscall::FanotifyMark(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(301, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Prlimit64(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(302, arg0, arg1, arg2, arg3)
// },
// Syscall::NameToHandleAt(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(303, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::OpenByHandleAt(arg0, arg1, arg2) => unsafe { syscall3(304, arg0, arg1, arg2) },
// Syscall::ClockAdjtime(arg0, arg1) => unsafe { syscall2(305, arg0, arg1) },
// Syscall::Syncfs(arg0) => unsafe { syscall1(306, arg0) },
// Syscall::Sendmmsg(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(307, arg0, arg1, arg2, arg3)
// },
// Syscall::Setns(arg0, arg1) => unsafe { syscall2(308, arg0, arg1) },
// Syscall::Getcpu(arg0, arg1, arg2) => unsafe { syscall3(309, arg0, arg1, arg2) },
// Syscall::ProcessVmReadv(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(310, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::ProcessVmWritev(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(311, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Kcmp(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(312, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::FinitModule(arg0, arg1, arg2) => unsafe { syscall3(313, arg0, arg1, arg2) },
// Syscall::SchedSetattr(arg0, arg1, arg2) => unsafe { syscall3(314, arg0, arg1, arg2) },
// Syscall::SchedGetattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(315, arg0, arg1, arg2, arg3)
// },
// Syscall::Renameat2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(316, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Seccomp(arg0, arg1, arg2) => unsafe { syscall3(317, arg0, arg1, arg2) },
// Syscall::Getrandom(arg0, arg1, arg2) => unsafe { syscall3(318, arg0, arg1, arg2) },
// Syscall::MemfdCreate(arg0, arg1) => unsafe { syscall2(319, arg0, arg1) },
// Syscall::KexecFileLoad(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(320, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Bpf(arg0, arg1, arg2) => unsafe { syscall3(321, arg0, arg1, arg2) },
// Syscall::Execveat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(322, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Userfaultfd(arg0) => unsafe { syscall1(323, arg0) },
// Syscall::Membarrier(arg0, arg1) => unsafe { syscall2(324, arg0, arg1) },
// Syscall::Mlock2(arg0, arg1, arg2) => unsafe { syscall3(325, arg0, arg1, arg2) },
// Syscall::CopyFileRange(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(326, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Preadv2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(327, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Pwritev2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(328, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::PkeyMprotect(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(329, arg0, arg1, arg2, arg3)
// },
// Syscall::PkeyAlloc(arg0, arg1) => unsafe { syscall2(330, arg0, arg1) },
// Syscall::PkeyFree(arg0) => unsafe { syscall1(331, arg0) },
// Syscall::Statx(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(332, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoPgetevents(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(333, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Rseq(arg0, arg1, arg2, arg3) => unsafe { syscall4(334, arg0, arg1, arg2, arg3) },
// Syscall::PidfdSendSignal(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(424, arg0, arg1, arg2, arg3)
// },
// Syscall::IoUringSetup(arg0, arg1) => unsafe { syscall2(425, arg0, arg1) },
// Syscall::IoUringEnter(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(426, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoUringRegister(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(427, arg0, arg1, arg2, arg3)
// },
// Syscall::OpenTree(arg0, arg1, arg2) => unsafe { syscall3(428, arg0, arg1, arg2) },
// Syscall::MoveMount(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(429, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fsopen(arg0, arg1, arg2) => unsafe { syscall3(430, arg0, arg1, arg2) },
// Syscall::Fsconfig(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(431, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fsmount(arg0, arg1, arg2) => unsafe { syscall3(432, arg0, arg1, arg2) },
// Syscall::Fspick(arg0, arg1, arg2) => unsafe { syscall3(433, arg0, arg1, arg2) },
// Syscall::PidfdOpen(arg0, arg1) => unsafe { syscall2(434, arg0, arg1) },
// Syscall::Clone3(arg0, arg1) => unsafe { syscall2(435, arg0, arg1) },
// Syscall::CloseRange(arg0, arg1, arg2) => unsafe { syscall3(436, arg0, arg1, arg2) },
// Syscall::Openat2(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(437, arg0, arg1, arg2, arg3)
// },
// Syscall::PidfdGetfd(arg0, arg1, arg2) => unsafe { syscall3(438, arg0, arg1, arg2) },
// Syscall::Faccessat2(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(439, arg0, arg1, arg2, arg3)
// },
// Syscall::ProcessMadvise(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(440, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::EpollPwait2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(441, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MountSetattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(442, arg0, arg1, arg2, arg3)
// },
// Syscall::QuotactlFd(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(443, arg0, arg1, arg2, arg3)
// },
// Syscall::LandlockCreateRuleset(arg0, arg1, arg2) => unsafe {
// syscall3(444, arg0, arg1, arg2)
// },
// Syscall::LandlockAddRule(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(445, arg0, arg1, arg2, arg3)
// },
// Syscall::LandlockRestrictSelf(arg0, arg1) => unsafe { syscall2(446, arg0, arg1) },
// Syscall::MemfdSecret(arg0) => unsafe { syscall1(447, arg0) },
// Syscall::ProcessMrelease(arg0, arg1) => unsafe { syscall2(448, arg0, arg1) },
// Syscall::FutexWaitv(arg0, arg1, arg2) => unsafe { syscall3(449, arg0, arg1, arg2) },
// Syscall::SetMempolicyHomeNode(arg0, arg1, arg2) => unsafe {
// syscall3(450, arg0, arg1, arg2)
// },
// Syscall::Cachestat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(451, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fchmodat2(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(452, arg0, arg1, arg2, arg3)
// },
// Syscall::MapShadowStack(arg0, arg1) => unsafe { syscall2(453, arg0, arg1) },
// Syscall::FutexWake(arg0, arg1, arg2) => unsafe { syscall3(454, arg0, arg1, arg2) },
// Syscall::FutexWait(arg0, arg1, arg2) => unsafe { syscall3(455, arg0, arg1, arg2) },
// Syscall::FutexRequeue(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(456, arg0, arg1, arg2, arg3)
// },
// Syscall::Statmount(arg0, arg1, arg2) => unsafe { syscall3(457, arg0, arg1, arg2) },
// Syscall::Listmount(arg0, arg1, arg2) => unsafe { syscall3(458, arg0, arg1, arg2) },
// Syscall::LsmGetSelfAttr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(459, arg0, arg1, arg2, arg3)
// },
// Syscall::LsmSetSelfAttr(arg0, arg1, arg2) => unsafe { syscall3(460, arg0, arg1, arg2) },
// Syscall::LsmListModules(arg0, arg1) => unsafe { syscall2(461, arg0, arg1) },
// Syscall::Unknown(syscall_num, args) => match args {
// [arg0, arg1, arg2, arg3, arg4, arg5] => unsafe {
// syscall6(syscall_num, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// _ => unreachable!(),
// },
// }
}
+129 -129
View File
@@ -1,137 +1,137 @@
///https://docs.rs/syscalls/latest/syscalls/x86_64/enum.Sysno.html ///https://docs.rs/syscalls/latest/syscalls/x86_64/enum.Sysno.html
#[non_exhaustive] #[non_exhaustive]
#[repr(i32)] #[repr(i64)]
#[derive(Debug, PartialEq, Eq)] #[derive(Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)] #[allow(non_camel_case_types)]
pub enum Sysno { pub enum Sysno {
read = 0, read = libc::SYS_read,
write = 1, write = libc::SYS_write,
open = 2, open = libc::SYS_open,
close = 3, close = libc::SYS_close,
stat = 4, stat = libc::SYS_stat,
fstat = 5, fstat = libc::SYS_fstat,
lstat = 6, lstat = libc::SYS_lstat,
poll = 7, poll = libc::SYS_poll,
lseek = 8, lseek = libc::SYS_lseek,
mmap = 9, mmap = libc::SYS_mmap,
mprotect = 10, mprotect = libc::SYS_mprotect,
munmap = 11, munmap = libc::SYS_munmap,
brk = 12, brk = libc::SYS_brk,
rt_sigaction = 13, rt_sigaction = libc::SYS_rt_sigaction,
rt_sigprocmask = 14, rt_sigprocmask = libc::SYS_rt_sigprocmask,
rt_sigreturn = 15, rt_sigreturn = libc::SYS_rt_sigreturn,
ioctl = 16, ioctl = libc::SYS_ioctl,
pread64 = 17, pread64 = libc::SYS_pread64,
pwrite64 = 18, pwrite64 = libc::SYS_pwrite64,
readv = 19, readv = libc::SYS_readv,
writev = 20, writev = libc::SYS_writev,
access = 21, access = libc::SYS_access,
pipe = 22, pipe = libc::SYS_pipe,
select = 23, select = libc::SYS_select,
sched_yield = 24, sched_yield = libc::SYS_sched_yield,
mremap = 25, mremap = libc::SYS_mremap,
msync = 26, msync = libc::SYS_msync,
mincore = 27, mincore = libc::SYS_mincore,
madvise = 28, madvise = libc::SYS_madvise,
shmget = 29, shmget = libc::SYS_shmget,
shmat = 30, shmat = libc::SYS_shmat,
shmctl = 31, shmctl = libc::SYS_shmctl,
dup = 32, dup = libc::SYS_dup,
dup2 = 33, dup2 = libc::SYS_dup2,
pause = 34, pause = libc::SYS_pause,
nanosleep = 35, nanosleep = libc::SYS_nanosleep,
getitimer = 36, getitimer = libc::SYS_getitimer,
alarm = 37, alarm = libc::SYS_alarm,
setitimer = 38, setitimer = libc::SYS_setitimer,
getpid = 39, getpid = libc::SYS_getpid,
sendfile = 40, sendfile = libc::SYS_sendfile,
socket = 41, socket = libc::SYS_socket,
connect = 42, connect = libc::SYS_connect,
accept = 43, accept = libc::SYS_accept,
sendto = 44, sendto = libc::SYS_sendto,
recvfrom = 45, recvfrom = libc::SYS_recvfrom,
sendmsg = 46, sendmsg = libc::SYS_sendmsg,
recvmsg = 47, recvmsg = libc::SYS_recvmsg,
shutdown = 48, shutdown = libc::SYS_shutdown,
bind = 49, bind = libc::SYS_bind,
listen = 50, listen = libc::SYS_listen,
getsockname = 51, getsockname = libc::SYS_getsockname,
getpeername = 52, getpeername = libc::SYS_getpeername,
socketpair = 53, socketpair = libc::SYS_socketpair,
setsockopt = 54, setsockopt = libc::SYS_setsockopt,
getsockopt = 55, getsockopt = libc::SYS_getsockopt,
clone = 56, clone = libc::SYS_clone,
fork = 57, fork = libc::SYS_fork,
vfork = 58, vfork = libc::SYS_vfork,
execve = 59, execve = libc::SYS_execve,
exit = 60, exit = libc::SYS_exit,
wait4 = 61, wait4 = libc::SYS_wait4,
kill = 62, kill = libc::SYS_kill,
uname = 63, uname = libc::SYS_uname,
semget = 64, semget = libc::SYS_semget,
semop = 65, semop = libc::SYS_semop,
semctl = 66, semctl = libc::SYS_semctl,
shmdt = 67, shmdt = libc::SYS_shmdt,
msgget = 68, msgget = libc::SYS_msgget,
msgsnd = 69, msgsnd = libc::SYS_msgsnd,
msgrcv = 70, msgrcv = libc::SYS_msgrcv,
msgctl = 71, msgctl = libc::SYS_msgctl,
fcntl = 72, fcntl = libc::SYS_fcntl,
flock = 73, flock = libc::SYS_flock,
fsync = 74, fsync = libc::SYS_fsync,
fdatasync = 75, fdatasync = libc::SYS_fdatasync,
truncate = 76, truncate = libc::SYS_truncate,
ftruncate = 77, ftruncate = libc::SYS_ftruncate,
getdents = 78, getdents = libc::SYS_getdents,
getcwd = 79, getcwd = libc::SYS_getcwd,
chdir = 80, chdir = libc::SYS_chdir,
fchdir = 81, fchdir = libc::SYS_fchdir,
rename = 82, rename = libc::SYS_rename,
mkdir = 83, mkdir = libc::SYS_mkdir,
rmdir = 84, rmdir = libc::SYS_rmdir,
creat = 85, creat = libc::SYS_creat,
link = 86, link = libc::SYS_link,
unlink = 87, unlink = libc::SYS_unlink,
symlink = 88, symlink = libc::SYS_symlink,
readlink = 89, readlink = libc::SYS_readlink,
chmod = 90, chmod = libc::SYS_chmod,
fchmod = 91, fchmod = libc::SYS_fchmod,
chown = 92, chown = libc::SYS_chown,
fchown = 93, fchown = libc::SYS_fchown,
lchown = 94, lchown = libc::SYS_lchown,
umask = 95, umask = libc::SYS_umask,
gettimeofday = 96, gettimeofday = libc::SYS_gettimeofday,
getrlimit = 97, getrlimit = libc::SYS_getrlimit,
getrusage = 98, getrusage = libc::SYS_getrusage,
sysinfo = 99, sysinfo = libc::SYS_sysinfo,
times = 100, times = libc::SYS_times,
ptrace = 101, ptrace = libc::SYS_ptrace,
getuid = 102, getuid = libc::SYS_getuid,
syslog = 103, syslog = libc::SYS_syslog,
getgid = 104, getgid = libc::SYS_getgid,
setuid = 105, setuid = libc::SYS_setuid,
setgid = 106, setgid = libc::SYS_setgid,
geteuid = 107, geteuid = libc::SYS_geteuid,
getegid = 108, getegid = libc::SYS_getegid,
setpgid = 109, setpgid = libc::SYS_setpgid,
getppid = 110, getppid = libc::SYS_getppid,
getpgrp = 111, getpgrp = libc::SYS_getpgrp,
setsid = 112, setsid = libc::SYS_setsid,
setreuid = 113, setreuid = libc::SYS_setreuid,
setregid = 114, setregid = libc::SYS_setregid,
getgroups = 115, getgroups = libc::SYS_getgroups,
setgroups = 116, setgroups = libc::SYS_setgroups,
setresuid = 117, setresuid = libc::SYS_setresuid,
getresuid = 118, getresuid = libc::SYS_getresuid,
setresgid = 119, setresgid = libc::SYS_setresgid,
getresgid = 120, getresgid = libc::SYS_getresgid,
getpgid = 121, getpgid = libc::SYS_getpgid,
setfsuid = 122, setfsuid = libc::SYS_setfsuid,
setfsgid = 123, setfsgid = libc::SYS_setfsgid,
getsid = 124, getsid = libc::SYS_getsid,
capget = 125, capget = libc::SYS_capget,
capset = 126, capset = libc::SYS_capset,
rt_sigpending = 127, rt_sigpending = libc::SYS_rt_sigpending,
rt_sigtimedwait = 128, rt_sigtimedwait = 128,
rt_sigqueueinfo = 129, rt_sigqueueinfo = 129,
rt_sigsuspend = 130, rt_sigsuspend = 130,
+72
View File
@@ -0,0 +1,72 @@
use std::marker::PhantomData;
use std::{fmt::Debug, mem::transmute};
use bincode::{Decode, Encode};
#[derive(Encode, Decode)]
pub struct Ptr<T>(libc::c_ulong, PhantomData<T>);
impl<T> Ptr<T>
where
T: Debug,
{
pub fn new(location: libc::c_ulong) -> Self {
Self(location, PhantomData) // ooo
}
}
impl<T: Debug> Debug for Ptr<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
unsafe {
let ptr = transmute::<libc::c_ulong, *const T>(self.0);
// *(ptr as *mut u64) = 1;
// println!("{}", *ptr);
// let ptr = std::mem::transmute::<libc::c_ulong, *const libc::c_char>(self.0);
// let value = core::ptr::read::<libc::c_char>(ptr);
f.write_str(format!("0x{:X} -> {:?}", self.0, *ptr).as_str())
}
// Ok(())
}
}
impl BufferLocation for Ptr<libc::c_char> {
fn get_location(&self) -> libc::c_char {
unsafe { core::ptr::read::<libc::c_char>(self.0 as *const libc::c_char) }
}
}
pub trait BufferLocation {
fn get_location(&self) -> libc::c_char;
}
#[derive(Encode, Decode, Debug)]
pub struct Buf<T: BufferLocation>(pub T);
// impl<T: BufferLocation> Buf<T> {
// pub fn
// }
// impl<T: Debug + BufferLocation> Debug for Buf<T> {
// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
// unsafe {
// // let addr = self.0.get_location();
// // let data =
// // &crate::kern_buffers::create_and_use_kernel_buffer(addr as *const libc::c_char)
// // .unwrap();
// // f.write_str(data)?
// // "F"
// };
// Ok(())
// }
// }
impl<T: BufferLocation> BufferLocation for Buf<T> {
fn get_location(&self) -> libc::c_char {
self.0.get_location()
}
}