redpill-lkm5/README.md

62 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

2022-12-16 19:34:02 +07:00
# 💊 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=<toolkit-directory>/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