Terima kasih telah tertarik untuk berkontribusi! Repositori ini adalah sumber daya edukasi terbuka untuk komunitas keamanan siber dan pembelajar kernel-level programming.
Untuk informasi umum tentang repositori, lihat README.md.
For English version, see CONTRIBUTING.EN.md.
Repositori ini menghimpun contoh kode dan kerangka program (skeleton) untuk membangun Kernel Module di berbagai platform (Linux, FreeBSD, Solaris, Windows). Setiap contoh:
- fokus pada satu konsep (skeleton, memory allocation, hook syscall, char/block driver, dsb).
- ringkas dan dapat langsung dikompilasi dengan instruksi yang disertakan.
- disertai komentar yang menjelaskan konsep, bukan hanya kode kosong.
git clone https://github.com/YOUR_USERNAME/KernelModule-Examples.git
cd KernelModule-Examplesgit checkout -b add/example-name
git checkout -b fix/short-description
git checkout -b improve/documentationplatform/
├── basics/ # konsep dasar LKM (tidak melibatkan device)
│ └── N.nama-konsep/ # contoh: 0.skeleton, 1.hello, 2.memory-alloc
│ ├── code.c
│ └── Makefile
├── drivers/
│ ├── char/ # character device driver
│ │ └── N.nama-konsep/
│ └── block/ # block device driver
│ └── N.nama-konsep/
├── payload/ # payload gaya rootkit (jika relevan untuk platform)
│ └── nama-payload/
├── README.md / README.EN.md
├── _introduction.md / .EN.md # konsep dasar kernel module di platform ini
├── _preparation.md / .EN.md # setup toolchain & build environment
└── _commands.md / .EN.md # cheat-sheet perintah operasional
Konvensi penamaan:
- Direktori contoh diberi prefix nomor urut dan nama singkat:
0.skeleton,1.hello,2.memory-alloc. Nomor menandakan urutan belajar yang disarankan (dari paling dasar), bukan urutan penambahan. - Gunakan
code.c(ataucode.cppuntuk Windows) sebagai nama file source utama. - Gunakan
test.cuntuk program user-space pendamping (misal untuk menguji IOCTL). - Gunakan strip (
-) sebagai pemisah kata dalam nama direktori, huruf kecil semua:memory-alloc,hook-syscall. - File dokumentasi pendukung diberi prefix underscore (
_introduction.md, dst) agar terpisah secara visual dari direktori contoh saat di-sort.
Setiap contoh kode harus memiliki header comment dengan format berikut (sesuaikan bagian yang relevan dengan platform):
/*
Nama Konsep
Archive of Reversing.ID
Tested on <Nama OS + Versi Kernel>
Penjelasan singkat: apa yang didemonstrasikan contoh ini.
Build:
$ make
Module info:
$ modinfo code.ko
List module:
$ lsmod
Load:
$ insmod code.ko
Unload:
$ rmmod code
*/Sesuaikan bagian Build/Load/Unload dengan tooling platform (kldload/kldunload untuk BSD, modload/modunload untuk Solaris, sc create/sc start untuk Windows, dst — lihat contoh yang sudah ada di platform terkait).
Jika ada langkah pengujian tambahan (misal menulis ke device file, mengirim signal, menjalankan program user-space), tambahkan bagian Testing: di antara Load: dan Unload:.
- Ikuti gaya penulisan yang sudah ada di direktori platform yang sama (indentasi 4 spasi, kurung buka di baris baru untuk fungsi, spasi sebelum tanda kurung pada pemanggilan fungsi).
- Penamaan fungsi dan variabel:
snake_case. - Beri komentar pada bagian yang menjelaskan konsep (mengapa API ini dipakai, apa akibatnya di kernel), bukan komentar yang hanya mengulang nama fungsi.
- Setiap module wajib memiliki fungsi inisialisasi dan terminasi yang simetris — apapun yang dialokasikan/didaftarkan saat init harus dibersihkan saat exit.
- Sertakan
Makefile(atau project file) yang teruji — kode harus benar-benar bisa dikompilasi dengan instruksi yang diberikan.
Setiap contoh baru wajib menyertakan:
code.c/code.cppdengan header comment sesuai template di atas.Makefile(atau project file untuk Windows) yang sudah diuji build-nya.- Update tabel daftar contoh di
README.md/README.EN.mddirektori platform terkait.
- Kompilasi kode tanpa warning pada environment yang disebutkan di header comment.
- Load dan unload module untuk memastikan tidak ada crash/panic.
- Verifikasi tidak ada broken link di dokumentasi yang diubah.
Sebelum submit, pastikan branch up-to-date:
git fetch origin
git rebase origin/master## Deskripsi
Penjelasan singkat tentang perubahan yang dibuat.
## Tipe Perubahan
- [ ] Contoh/platform baru
- [ ] Perbaikan kode existing
- [ ] Dokumentasi
- [ ] Bug fix
## Platform/Konsep yang Diubah
- Platform: (Linux/BSD/Solaris/Windows)
- Konsep: (basics/drivers/payload)
## Checklist
- [ ] Kode dikompilasi tanpa warning
- [ ] Header comment mengikuti template
- [ ] README platform terkait sudah diupdate
- [ ] Tidak ada broken link
Dengan berkontribusi pada repositori ini, kamu setuju bahwa kontribusimu boleh didistribusikan ulang sebagai bagian dari repositori ini. Pastikan kode yang dikontribusikan tidak melanggar hak cipta atau lisensi pihak ketiga.
- Buka issue baru dengan label
question. - Email pengurus [at] reversing.id
- Telegram @ReversingID