# TaxiDriver
Linux Kernel Module for RPM/WPM and usermode driver with examples.
## Features
* Get the base address of any process/loaded .so file
* RPM
* WPM
## Compiling
### Prerequises :
```
sudo pacman -S git linux-headers OpenGL cmake
yay -S sdl3-git
```
### Upstream Linux Kernel
To compile the driver you'll need to be at least on kernel version v6.5 (i used the [arch kernel](https://github.com/archlinux/linux/releases/tag/v6.5.8-arch1)).
### legacy Linux Kernel
To build for an older Linux Kernel ex. 5.15 change KERNEL_UPSTREAM preprocessor definition
in TaxiDriver.h:
`#define KERNEL_UPSTREAM 0`
or if you use cmake only change required in CmakeLists.txt:
`add_compile_definitions(TaxiDriver PRIVATE KERNEL_UPSTREAM=0)`
### Compiling and running :
```
git clone --recursive https://github.com/ALittlePatate/TaxiDriver
```
#### Kernel Module
choose and write a MAJOR number ex. 506 in install.sh and validate for uniqueness `grep "506" /proc/devices`
```
# sudo mknod /dev/TaxiDriver c 0
# cmake is still incomplete
cd km && ./install.sh
```
system might still choose to set a different one, so read the number that is in use, after TaxiDriver is loaded,
with `grep "TaxiDriver" /proc/devices` and adjust in mknod and reload TaxiDriver.
After loading the Driver, you should find a line saying that TaxiDriver was loaded with X major code.
```
sudo dmesg | grep TaxiDriver
```
Unload the driver :
```
# sudo make unload
sudo rmmod TaxiDriver
sudo rm /dev/TaxiDriver
```
#### Usermode Target/Test Application
```
cd um/test && make
./test_app
```
#### Usermode Driver Application
```
cd um && make
./main
```
### Known Issues
- Fails to open device:
MAJOR number has to match in mknod to open device! Check with `grep "TaxiDriver" /proc/devices`
If you find anything not listed above. Please open up Issues on the Repo
and provide the build log showing the issue with `LANG=C make` with all of your steps and envoirment info to reproduce.
### Missing Features in development
- ImGui Overlay
- expand km mem functions
- expand um driver example and test_app
- Findpattern
- write/inject shellcode with asm mid function hook
- X11 Input Event Handling
## Contact
If you have a problem regarding the code, open an issue or make a pull request, i'll be happy to add your contribution !
If you need to contact me for any other reasons, message me at `_.patate` on discord.