1
0
Fork 0
out-of-tree kernel {module, exploit} development tool
 
 
 
 
Go to file
dump_stack() 8d2d56bea3
build: add version for flake
2023-05-18 12:53:46 +00:00
.github/workflows ci: wait for the previous debian cache workflow to finish 2023-05-18 12:00:12 +00:00
cache fix: cleanup tar.gz after unpack 2023-05-16 08:17:15 +00:00
config feat: introduce kernel version 2023-05-14 22:00:29 +00:00
container feat: mount container volumes based on kernel info 2023-05-14 21:39:41 +00:00
distro test: fix function name 2023-05-18 12:52:52 +00:00
docs Build with cgo 2023-03-16 18:46:46 +00:00
examples feat: test lkrg alert 2023-05-17 17:04:13 +00:00
fs feat: search file in directory by substring 2023-05-14 21:03:57 +00:00
kernel refactor: move cmdline generation out of distro switch 2023-05-18 12:07:59 +00:00
qemu feat: set -cpu max, also for non-kvm 2023-05-17 17:45:52 +00:00
tools fix: old dhclient requires interface name 2023-05-15 18:55:27 +00:00
.gitignore build: nix flakes 2023-05-16 11:47:17 +00:00
CHANGELOG.md Update changelog 2023-04-07 21:38:30 +00:00
LICENSE Change license to GNU AGPLv3 2018-10-08 20:54:18 +00:00
README.md docs: update readme 2023-05-17 13:32:31 +00:00
container.go refactor: move container functions to submodule 2023-05-13 10:14:45 +00:00
db.go Show last log if no ID specified 2020-06-14 20:46:56 +00:00
debug.go refactor: remove global temporary directory base 2023-05-13 11:32:29 +00:00
default.nix build: add version for flake 2023-05-18 12:53:46 +00:00
distro.go feat: add --dump to dump cache 2023-05-17 12:33:59 +00:00
flake.lock build: nix flakes 2023-05-16 11:47:17 +00:00
flake.nix build: add version for flake 2023-05-18 12:53:46 +00:00
gen.go Add support for applying patches 2023-02-16 10:22:08 +00:00
go.mod build: nix flakes 2023-05-16 11:47:17 +00:00
go.sum feat: bump go version 2023-05-15 15:09:09 +00:00
gomod2nix.toml build: nix flakes 2023-05-16 11:47:17 +00:00
images.go refactor: move kernel functions to submodule 2023-05-13 10:47:47 +00:00
kernel.go refactor: move kernel functions to submodule 2023-05-13 10:47:47 +00:00
log.go Switch to zerolog 2023-03-18 21:30:07 +00:00
main.go feat: add command for distro-related helpers 2023-05-15 10:50:56 +00:00
pack.go refactor: move fs-related functions to submodule 2023-05-13 09:17:57 +00:00
pew.go fix: keep target with random name 2023-05-17 16:55:22 +00:00
preload.go refactor: remove global temporary directory base 2023-05-13 11:32:29 +00:00
shell.nix build: nix flakes 2023-05-16 11:47:17 +00:00

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'