1
0
out-of-tree kernel {module, exploit} development tool
Go to file
2023-05-23 21:33:50 +00:00
.github/workflows feat!: new kernel config structure 2023-05-18 18:48:09 +00:00
cache feat!: introduce new distribution structure 2023-05-18 16:07:24 +00:00
config refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
container refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
distro refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
docs
examples feat!: new kernel config structure 2023-05-18 18:48:09 +00:00
fs feat: use distro info to create the container 2023-05-23 16:54:45 +00:00
kernel refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
qemu feat: emulate a cpu on macOS with all features supported by KVM 2023-05-21 14:33:46 +00:00
tools
.gitignore
CHANGELOG.md
container.go
db.go refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
debug.go refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
default.nix build: add version for flake 2023-05-18 12:53:46 +00:00
distro.go feat: show both release number and name for debian 2023-05-18 22:26:42 +00:00
flake.lock
flake.nix build: add version for flake 2023-05-18 12:53:46 +00:00
gen.go feat!: new kernel config structure 2023-05-18 18:48:09 +00:00
go.mod refactor: move container generation to distro modules 2023-05-23 13:20:48 +00:00
go.sum
gomod2nix.toml
images.go refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
kernel.go refactor: get rid of too many parameters 2023-05-23 21:21:06 +00:00
LICENSE
log.go feat!: introduce new distribution structure 2023-05-18 16:07:24 +00:00
main.go fix: use the default config dirs provider 2023-05-21 20:31:47 +00:00
pack.go feat: parallel kernel installation 2023-05-21 21:43:18 +00:00
pew.go refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
preload.go refactor: move kernelinfo to distro module 2023-05-23 21:33:50 +00:00
README.md
shell.nix

Codacy Badge Go Report Card Documentation Status

out-of-tree

out-of-tree is the kernel {module, exploit} development tool.

out-of-tree was created to reduce the complexity of the environment for developing, testing and debugging Linux kernel exploits and out-of-tree kernel modules (hence the name "out-of-tree").

Screenshot

Installation

GNU/Linux (with Nix)

sudo apt install podman || sudo dnf install podman

curl -L https://nixos.org/nix/install | sh
mkdir -p ~/.config/nix
echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf

# stable
nix profile install nixpkgs#out-of-tree

# latest
nix profile install git+https://code.dumpstack.io/tools/out-of-tree

macOS

Note: case-sensitive FS is required for the ~/.out-of-tree directory.

$ brew install podman
$ podman machine stop || true
$ podman machine rm || true
$ podman machine init --cpus=4 --memory=4096 -v $HOME:$HOME
$ podman machine start
$ brew tap out-of-tree/repo
$ brew install out-of-tree

Read documentation for further info.

Examples

Generate all Ubuntu 22.04 kernels:

$ out-of-tree kernel genall --distro=Ubuntu --ver=22.04

Run tests based on .out-of-tree.toml definitions:

$ out-of-tree pew

Test with a specific kernel:

$ out-of-tree pew --kernel='Ubuntu:5.4.0-29-generic'

Run debug environment:

$ out-of-tree debug --kernel='Ubuntu:5.4.0-29-generic'