💊 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?
- You need Synology's GPL sources for the kernel. Check the Makefile for details
cd
to kernel sources- 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)
- Linux v3
make oldconfig ; make modules_prepare
cd
back to the module directorymake LINUX_SRC=....
(path to linux sources, default:../linux-3.10.x-bromolow-25426
)- You will get a
redpill.ko
module as the result, you caninsmod
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.
- Get the appropriate toolkit from the official SF repo
- 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
- You want to get the
cd
to the module directorymake 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
- You will get a
redpill.ko
module as the result, you caninsmod
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 everyexecve()
call with argumentsSTEALTH_MODE=#
: controls the level of "stealthiness", seeSTEALTH_MODE_*
ininternal/stealth.h
; it'sSTEALTH_MODE_BASIC
by defaultLINUX_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.