Strace in Rust 🔍
strace is the system-call tracer, which traces the calls that a program makes into the kernel in order to interact with the outside world.
This code uses nix crate which is platform dependent, hence there's a dockerfile which you can use to run this code!
docker run -it --security-opt seccomp=unconfined <image_name>
Since, ptrace(the syscall that strace implementation uses) allows you to look at and modify the registers of a program(which is pretty shady IMO) you'd need to disable seccomp mode.
Inspired by strace in C and by Julia Evans' zine