Repositori edukasi berisi contoh kode dan kerangka program untuk membangun Kernel Module / Driver di berbagai platform.
Bahasa: Bahasa Indonesia (default) | English
- Tentang Repositori
- Apa itu Kernel Module?
- Struktur Repository
- Konten
- Quick Start
- Berkontribusi
- Disclaimer
Repositori ini menghimpun contoh kode dan kerangka program (skeleton) untuk membangun Kernel Module di beragam platform: Linux, FreeBSD, Solaris, dan Windows.
Setiap contoh kode disertai instruksi kompilasi, pemuatan (load), dan pembongkaran (unload) module β cukup ikuti komentar di kepala setiap file atau README pada direktori terkait.
Repositori ini merupakan inisiatif dari komunitas Reversing.ID untuk mendalami pengembangan Kernel Module. Reversing.ID tidak berafiliasi dengan vendor platform manapun; tujuan utama repositori ini adalah bahan belajar.
Kernel Module adalah potongan kode yang memperluas atau memperkaya kemampuan kernel Operating System tanpa harus membangun ulang kernel setiap kali perubahan terjadi. Sebagian besar operating system mendukung konsep ini dengan istilah berbeda, misalnya:
Kernel Loadablemodule (kld) untukFreeBSDKernel Extension(kext) untukMacOSLoadable Kernel Module(lkm) untukLinuxdanSolaris
Kernel Module sering disebut pula dengan driver atau device driver. Meskipun banyak kernel module diciptakan untuk mengimplementasikan interface antara kernel dan perangkat, istilah ini tidak sepenuhnya tepat β kernel module juga dapat mengimplementasikan fitur tertentu di sisi kernel tanpa berhubungan dengan perangkat fisik sama sekali (misalnya hooking syscall).
KernelModule-Examples/
βββ linux/ # Linux Loadable Kernel Module (LKM)
β βββ basics/ # skeleton, module param, memory, hook syscall, kernel thread
β βββ drivers/
β β βββ char/ # character device driver
β β βββ block/ # block device driver
β βββ payload/ # payload gaya rootkit (give-root, hide-file/module/process)
β
βββ bsd/ # FreeBSD Kernel Loadable (KLD)
β βββ basics/ # skeleton, memory, hook syscall
β βββ drivers/char/ # character device driver
β
βββ solaris/ # Solaris Loadable Kernel Module (LKM)
β βββ basics/ # skeleton, memory, hook syscall
β
βββ windows/ # Windows Kernel-Mode Driver Framework (KMDF)
β βββ kmdf/0.basic/ # skeleton, hello
β
βββ README.md / README.EN.md # Dokumentasi ini
βββ CONTRIBUTING.md / .EN.md # Panduan kontribusi
βββ .gitignore
Setiap contoh berada di direktori tersendiri berisi code.c (atau code.cpp) dan Makefile/project file yang dibutuhkan untuk kompilasi.
| Platform | Istilah | Jumlah Contoh | Build Tool |
|---|---|---|---|
linux/ |
Loadable Kernel Module (LKM) | 17 | make (kbuild) |
bsd/ |
Kernel Loadable (KLD) | 7 | make (bsd.kmod.mk) |
solaris/ |
Loadable Kernel Module (LKM) | 4 | make (manual gcc/ld rules) |
windows/ |
Kernel-Mode Driver Framework (KMDF) | 2 | msbuild / Visual Studio |
Lihat README pada masing-masing direktori platform untuk daftar lengkap contoh, penjelasan konsep, dan persiapan environment.
- Pemula? Baca Apa itu Kernel Module? di atas, lalu masuk ke
_introduction.mdpada platform pilihanmu. - Ingin kontribusi? Baca CONTRIBUTING.md.
- Linux: buka direktori linux/
- FreeBSD: buka direktori bsd/
- Solaris: buka direktori solaris/
- Windows: buka direktori windows/
Setiap platform membutuhkan toolchain berbeda (compiler, kernel headers, WDK, dsb). Ikuti _preparation.md pada direktori platform yang dipilih sebelum melakukan build.
Setiap direktori contoh berisi:
code.c/code.cppβ source code dengan instruksi build/load/unload di komentar kepala file.Makefile(atau project file untuk Windows) β jalankanmake(ataumsbuild) di direktori tersebut.
Ini adalah projek terbuka. Kamu bisa memberikan sumbangsih berupa kode untuk platform yang belum terdaftar, menambah contoh baru, atau memperbaiki contoh yang sudah ada.
Baca CONTRIBUTING.md untuk panduan lengkap tentang konvensi penamaan, template contoh baru, dan proses pull request.
Kamu juga bisa:
- mengirimkan email ke pengurus [at] reversing.id
- memberi tahu di telegram @ReversingID
Repositori ini digunakan untuk tujuan edukasi. Beberapa contoh (khususnya direktori linux/payload/) mendemonstrasikan teknik yang lazim dipakai oleh rootkit (hook syscall, hide process/file/module, privilege escalation) β dibuat semata untuk pembelajaran konsep kernel-level programming dan reverse engineering, bukan untuk disalahgunakan pada sistem yang bukan milikmu atau tanpa izin. Pengguna bertanggung jawab atas penggunaan kode dalam repositori ini dan wajib mematuhi hukum yang berlaku di yurisdiksinya.