1
0
Fork 0
out-of-tree kernel {module, exploit} development tool
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
dump_stack() b53b3f2632
feat: blocklist buggy oel6 kernels
3 hours ago
.github/workflows feat: add flag to count internal errors as part of the success rate 22 hours ago
cache feat!: introduce new distribution structure 2 weeks ago
config feat: add container timeout parameter to kernel command 7 days ago
container refactor: cache control for the container module 4 days ago
distro feat: blocklist buggy oel6 kernels 3 hours ago
docs Build with cgo 3 months ago
examples feat!: new kernel config structure 2 weeks ago
fs feat: use distro info to create the container 1 week ago
kernel feat: support for excluding kernels using regex 1 week ago
qemu feat: make qemu cpu model/flags configurable 22 hours ago
tools fix: do not use custom sources.list on debian 12 bookworm 1 week ago
.gitignore build: nix flakes 2 weeks ago
CHANGELOG.md Update changelog 2 months ago
LICENSE Change license to GNU AGPLv3 5 years ago
README.md docs: update readme 2 weeks ago
container.go refactor: move container functions to submodule 3 weeks ago
db.go fix: use nullstring in lastlog 1 week ago
debug.go refactor: move kernelinfo to distro module 1 week ago
default.nix build: add version for flake 2 weeks ago
distro.go feat: parameter to refetch kbuild 4 days ago
flake.lock build: nix flakes 2 weeks ago
flake.nix build: add version for flake 2 weeks ago
gen.go feat!: new kernel config structure 2 weeks ago
go.mod refactor: move container generation to distro modules 1 week ago
go.sum feat: bump go version 3 weeks ago
gomod2nix.toml build: nix flakes 2 weeks ago
images.go refactor: move kernelinfo to distro module 1 week ago
kernel.go fix: add check for shutdown request 22 hours ago
log.go fix: change artifact info padding 1 week ago
main.go fix: use the default config dirs provider 2 weeks ago
pack.go fix: define autogen var 23 hours ago
pew.go feat: add support for blocklisting kernels 3 hours ago
preload.go refactor: move kernelinfo to distro module 1 week ago
shell.nix build: nix flakes 2 weeks ago

README.md

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'