commit e3588fe8f8e934a705fa26d3c672ce9b4a299fdc Author: pocopico Date: Fri Dec 16 14:34:02 2022 +0200 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..5e54d38 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# 💊 RedPill LKM + +--- + +## THIS IS WORK IN PROGRESS +There's nothing to run/see here (yet ;)). + +--- + +## What is this? +This is a major part of a tool which will be able to run a DSM instance for research purposes without +engaging your real DS machine and risking your data in the process (ask me how I know...). + +## Target audience +This repository is target towards **developers** willing to learn and help with implementation of peculiarities of +Synology's DSM Linux distribution. + +Read about the quirk in a separate repo: https://github.com/RedPill-TTG/dsm-research/tree/master/quirks + +## How to build with Linux sources? +1. You need Synology's GPL sources for the kernel. Check the [Makefile](Makefile) for details +2. `cd` to kernel sources +3. Depending on the version: + - **Linux v3** + - `cp synoconfigs/bromolow .config` + - **Linux v4** + - `cp synoconfigs/apollolake .config` + - `echo '+' > .scmversion` (otherwise it will error-out loading modules) +4. `make oldconfig ; make modules_prepare` +5. `cd` back to the module directory +6. `make LINUX_SRC=....` (path to linux sources, default: `../linux-3.10.x-bromolow-25426`) +7. You will get a `redpill.ko` module as the result, you can `insmod` it + + +## How to build with syno toolkit? +The procedure to build with the toolkit is **not recommended**. However, some versions lack the kernel sources +(e.g. v7 now) and thus can only use this method. + +1. Get the appropriate toolkit from the [official SF repo](https://sourceforge.net/projects/dsgpl/files/toolkit/) + - You want to get the `.dev.txz` file for the corresponding platform (e.g. `ds.bromolow-7.0.dev.txz`) + - You only need to unpack a part of it: `tar -xvf ds.bromolow-7.0.dev.txz usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-7.0/build` + - If the path above changed you can use `tar -tvf ds.bromolow-7.0.dev.txz | grep kfifo.h` to find the correct one +2. `cd` to the module directory +3. `make LINUX_SRC=/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-7.0/build` +4. You will get a `redpill.ko` module as the result, you can `insmod` it + + +## Additional make options +While calling `make` you can also add these additional modifiers (e.g. `make FOO BAR`): + - `DBG_EXECVE=y`: enabled debugging of every `execve()` call with arguments + - `STEALTH_MODE=#`: controls the level of "stealthiness", see `STEALTH_MODE_*` in `internal/stealth.h`; it's + `STEALTH_MODE_BASIC` by default + - `LINUX_SRC=...`: path to the linux kernel sources (`./linux-3.10.x-bromolow-25426` by default) + +On Debian-based systems you will need `build-essential` and `libssl-dev` packages at minimum. + +## Documentation split +The documentation regarding actual quirks/mechanisms/discoveries regarding DSM is present in a dedicated research repo +at https://github.com/RedPill-TTG/dsm-research/. Documentation in this repository is solely aimed to explain +implementation details of the kernel module. It will mostly be available in forms of long(ish) doc blocks. +# redpill-lkm5