Terima kasih telah tertarik untuk berkontribusi pada Shellcode-Loader! Repositori ini adalah sumber daya edukasi terbuka untuk komunitas keamanan siber.
Shellcode-Loader adalah repositori referensi yang menghimpun teknik-teknik memuat shellcode ke memory. Repositori ini dirancang untuk:
- Menyediakan dokumentasi komprehensif tentang berbagai teknik loading shellcode
- Memberikan implementasi praktis dalam bahasa C/C++
- Menjadi sumber pembelajaran bagi peneliti keamanan dan profesional reverse engineering
Untuk informasi lebih lanjut, lihat README.md.
Fork repositori ini ke akun GitHub Anda, kemudian clone ke lokal machine:
git clone https://github.com/YOUR_USERNAME/Shellcode-Loader.git
cd Shellcode-LoaderBuat branch dengan nama deskriptif untuk perubahan Anda:
git checkout -b add/nama-teknik
git checkout -b fix/deskripsi-singkat
git checkout -b improve/dokumentasiIkuti konvensi berikut dalam membuat perubahan:
platform/
└── teknik/ # allocation, storage, execution, writing, etc
├── README.md # Dokumentasi teknik
├── c++/ # Implementasi c++ (misal)
│ └── code.cpp
└── subteknik/ # Sub-kategori jika ada
└── README.md
- Gunakan lowercase untuk nama direktori teknik secara umum. Jika nama direktori adalah API, sesuaikan lowercase dan uppercase dengan nama fungsi tersebut.
- Gunakan
codesebagai nama file sample (misalcode.cpp). - Gunakan strip atau underscore untuk pemisah:
my-technique/ - Hindari spasi dalam nama file
Ketika menambahkan teknik baru, ikuti struktur README berikut:
# [Nama Teknik]
### Overview
Penjelasan singkat tentang teknik ini. Apa tujuannya? Kapan digunakan?
### How It Works
Penjelasan mendalam tentang cara kerja teknik. Include diagram atau flowchart jika diperlukan.
### Implementation
Deskripsi implementasi dalam kode, API yang digunakan, dan batasan.
### Advantages
- Keuntungan 1
- Keuntungan 2
### Disadvantages
- Kekurangan 1
- Kekurangan 2
### Code Example
```c
// Code snippet here- Link ke dokumentasi API
- Link ke teknik related
- Paper atau resource lainnya
### 4. Panduan Coding (C/C++)
#### Style Guide
- Ikuti GNU C style atau K&R style
- Gunakan 4 spasi untuk indentasi (bukan tab)
- Penamaan fungsi: lowercase dengan underscore (snake_case)
- Penamaan konstanta: UPPERCASE dengan underscore
- Penamaan tipe: PascalCase
#### Contoh Format Kode
```c
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
// Konstanta
#define SHELLCODE_SIZE 4
// Struktur
typedef struct {
DWORD value;
char name[50];
} MyStruct;
// Fungsi
void execute_shellcode(unsigned char *shellcode, size_t size) {
LPVOID alloc = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (!alloc) {
printf("Allocation failed\n");
return;
}
memcpy(alloc, shellcode, size);
((void(*)())alloc)();
VirtualFree(alloc, size, MEM_RELEASE);
}
- Selalu periksa return value dari API calls
- Berikan error messages yang informatif
- Dokumentasi kondisi error dalam komentar
- Gunakan Bahasa Indonesia sebagai default
- Sediakan dokumentasi yang cukup untuk dipahami
- Include code examples yang berfungsi
- Jelaskan batasan dan edge cases
- Jika menambahkan dokumen baru, pertimbangkan untuk membuat versi English
- Ikuti struktur dari file yang sudah ada
Sebelum membuat PR:
- Kompilasi kode tanpa warning
- Test kode di platform yang relevan
- Pastikan implementasi sesuai dokumentasi
- Verify tidak ada broken links dalam dokumentasi
-
Pastikan branch Anda up-to-date dengan main branch:
git fetch origin git rebase origin/master
-
Bersihkan commit history (jika diperlukan):
git rebase -i origin/master
-
Push ke fork Anda:
git push origin add/nama-teknik
## Deskripsi
Penjelasan singkat tentang perubahan yang dibuat.
## Tipe Perubahan
- [ ] Teknik baru
- [ ] Perbaikan kode existing
- [ ] Dokumentasi
- [ ] Bug fix
## Teknik/Topik yang Diubah
- Sebutkan platform (Linux/Windows)
- Sebutkan kategori teknik
## Checklist
- [ ] Kode telah dikompilasi tanpa warning
- [ ] Dokumentasi sudah diupdate
- [ ] Link dalam dokumentasi sudah diverifikasi
- [ ] Tidak ada broken link
- Tim maintainer akan melakukan review
- Mungkin ada permintaan perubahan atau klarifikasi
- Perubahan kecil bisa langsung diterima
- Perubahan besar akan didiskusikan lebih lanjut
Dengan berkontribusi pada repositori ini, Anda setuju bahwa kontribusi Anda akan berlisensi di bawah lisensi yang sama dengan repositori. Pastikan kode yang Anda kontribusikan tidak melanggar hak cipta atau lisensi pihak ketiga.
Jika Anda memiliki pertanyaan:
- Buka issue baru dengan label
question - Jelaskan masalah atau pertanyaan Anda dengan detail
- Berikan konteks yang cukup untuk dimengerti
Kami mengharapkan semua kontributor untuk:
- Bersikap hormat dan profesional
- Menerima kritik konstruktif dengan baik
- Fokus pada tujuan bersama: edukasi dan keamanan
Terima kasih atas kontribusi Anda! 🎉