Skip to content

Latest commit

Β 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kernel Module Examples

Repositori edukasi berisi contoh kode dan kerangka program untuk membangun Kernel Module / Driver di berbagai platform.

Bahasa: Bahasa Indonesia (default) | English


Daftar Isi


Tentang Repositori

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.


Apa itu Kernel Module?

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 Loadable module (kld) untuk FreeBSD
  • Kernel Extension (kext) untuk MacOS
  • Loadable Kernel Module (lkm) untuk Linux dan Solaris

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).


Struktur Repository

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.


Konten

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.


Quick Start

1. Mulai Dari Sini

2. Pilih Platform

3. Siapkan Build Environment

Setiap platform membutuhkan toolchain berbeda (compiler, kernel headers, WDK, dsb). Ikuti _preparation.md pada direktori platform yang dipilih sebelum melakukan build.

4. Pilih Contoh dan 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) β€” jalankan make (atau msbuild) di direktori tersebut.

Berkontribusi

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

Disclaimer

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.

About

Examples of Kernel Modules for various Operating System.

Resources

Contributing

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages