I was inspired by gobohide, but I didn't like the following about GoboHide:
- Not a module, it is ALWAYS enabled
- Uses Netlink, instead of just exposing a character device that can be interfaced with shell, C, or anything else
- Bugs out in 6.1+
- The license
So I decided to start from scratch
- /sys/kernel/hidefs/hide: write here the filepaths which you wish to hide, (1 path per line)
- /sys/kernel/hidefs/unhide: write here the filepaths which you wish to unhide, (1 path per line)
- /sys/kernel/hidefs/list: the list of currently hidden files, (1 path per line)
- Architecture support:
Currently, only amd64 is supported. We could support other architectures if I had access to other hardware or hardware capable enough to emulate other architectures. In order to support other architectures, we'd just have to wrap the kprobes-related code around macros.
- Benchmark,
a-utils/walk
, 100 runs, without the kernel module. Then again, 100 runs, with the kernel module. - Use dynamic memory management, and benchmark once again.
- Fork 9front, add a compatibility layer with Linux, implement +200 POSIX system calls + linux's, then check if this module works, if so, break it, because 9front is a sacred zen space. (may actually be done in the near future, I just want 9front + Chromium || Ladybird)
Note
This module tracks the current generation of the kernel (6.1 and onwards), support for non-current generations is just sheer luck.