Overview
INTERCEPT v0.2 adalah monitor realtime untuk mengamati traffic packet dan RPC RakNet pada client SA-MP yang diuji. Project ini ditulis dalam C++ dan menggunakan RakHook untuk menerima event packet/RPC, lalu menampilkannya melalui GUI native Win32.
Target yang didokumentasikan saat ini adalah Windows, GTA San Andreas 1.0 US, SA-MP 0.3.DL-R1, arsitektur 32-bit x86, dan RakHook pada commit yang dipin secara spesifik oleh project.
Apa yang sudah diimplementasikan
- Observasi packet dan RPC melalui RakHook.
- Capture event incoming dan outgoing.
- Thread-safe bounded event queue untuk traffic realtime.
- GUI native Win32 dengan tab All, Packets, dan RPC.
- Text filtering untuk ID, nama, detail, dan payload HEX.
- Filter Hide Sync untuk traffic sinkronisasi berfrekuensi tinggi.
- Pause untuk menghentikan update tampilan tanpa menghentikan counter.
- Event counters dan queue-drop counter.
- Inspector per event dengan raw hexadecimal payload.
- Bounded in-memory history hingga 20.000 event yang sudah dikonsumsi GUI.
Arsitektur runtime
Alur utamanya sengaja dibuat sederhana. Callback dari RakHook tidak langsung melakukan pekerjaan UI yang berat. Event dimasukkan ke bounded queue, kemudian GUI mengonsumsi queue tersebut secara terpisah. Counter juga diperbarui dari alur event yang sama.
RakHook callback
|
v
bounded event queue
|
+----> realtime GUI
|
+----> counters
Pending queue dibatasi pada 4.096 event. Ketika GUI tidak mampu mengonsumsi event secepat traffic masuk, event pending lama akan dibuang dan jumlahnya dicatat melalui counter Queue drops. Batas ini mencegah pertumbuhan memory tanpa batas pada kondisi traffic sinkronisasi yang sangat tinggi.
Realtime GUI
Milestone v0.2 menggunakan Win32 GUI native. Interface dibuat setelah RakHook berhasil diinisialisasi, sehingga monitor tidak dibuka sebelum layer packet/RPC siap.
+---------------------------------------------------------------+
| Filter [Hide Sync] [Pause] |
+---------------------------------------------------------------+
| [All] [Packets] [RPC] |
| |
| # Dir Type ID Name Bytes Details |
| ... |
| |
+---------------------------------------------------------------+
| Selected event / status / raw HEX |
+---------------------------------------------------------------+
Filter hanya memengaruhi apa yang terlihat di interface. Counter dasar tetap merepresentasikan event yang diterima. Pendekatan ini membuat traffic dapat disaring secara agresif tanpa kehilangan gambaran jumlah event yang sebenarnya masuk.
Decoder packet dan RPC
Layer decoder pada v0.2 masih bersifat konservatif. Project menyediakan penamaan packet/RPC dan metadata yang sudah diketahui, tetapi belum menganggap decoder tersebut sebagai schema protocol SA-MP yang lengkap.
Field-level layout direncanakan ditambahkan hanya setelah struktur masing-masing event diverifikasi terhadap traffic SA-MP 0.3.DL-R1 dan interface RakHook yang digunakan project. Ini penting karena asumsi layout yang salah dapat menghasilkan interpretasi payload yang keliru walaupun raw bytes yang ditangkap benar.
Logging
Traffic packet/RPC berfrekuensi tinggi tidak lagi diarahkan ke text log utama. INTERCEPT.log dipakai terutama untuk lifecycle dan diagnostic message, sementara payload realtime diperiksa melalui GUI.
[INFO] INTERCEPT v0.2 starting
[INFO] samp.dll detected.
[INFO] INTERCEPT monitor callbacks registered.
[INFO] RakHook initialized. attempt=1 samp_version=3
[INFO] Realtime monitor is active.
Build
Karena target SA-MP dan RakHook yang digunakan adalah x86, build harus menggunakan generator Visual Studio 32-bit.
cmake -S . -B build -A Win32
cmake --build build --config Release
Output Release berada di:
build\Release\INTERCEPT.dll
Loading
INTERCEPT.dll harus dimuat ke proses GTA SA setelah samp.dll tersedia. Project ini tidak menyertakan injector; bagian tersebut berada di luar scope implementasi saat ini.
Struktur source
Source tree memisahkan beberapa tanggung jawab utama ke file yang berbeda. Di antaranya terdapat modul decoder, monitor, event queue, GUI, session, logger, console, dan entry point DLL. Pemisahan ini membuat capture path, presentation layer, decoding, serta lifecycle lebih mudah dikembangkan secara independen.
monitor.cpp— layer observasi/callback traffic.event_queue.cpp— queue event yang dibatasi.decoder.cpp— naming dan metadata decoder.gui.cpp— realtime Win32 inspection interface.session.cpp— state/session runtime.logger.cppdanconsole.cpp— diagnostic output.dllmain.cpp— lifecycle entry point DLL.
Capture data
Beberapa capture CSV dari sesi pengujian digunakan sebagai artefak observasi traffic untuk membandingkan pola event pada kondisi berbeda, misalnya ketika client diam, ketika sebuah aktivitas selesai, atau ketika input tertentu terjadi.
Roadmap
Milestone yang sudah selesai mencakup passive RakHook capture, realtime event queue, pemisahan packet/RPC di GUI, sync filtering, dan raw payload inspector. Beberapa pekerjaan lanjutan yang masih tercatat adalah verified field-level SA-MP decoder, event classification/search yang lebih baik, dashboard atau rate graph, serta persistent capture/export format.
Penutup
INTERCEPT v0.2 berfokus pada fondasi observability yang stabil sebelum menambahkan kemampuan yang lebih kompleks. Bounded queue menjaga monitor tetap terkendali ketika traffic tinggi, GUI mempermudah pemisahan packet dan RPC, dan raw HEX inspector mempertahankan akses ke payload asli ketika decoder belum memiliki field-level schema yang terverifikasi.
Dengan scope tersebut, v0.2 berfungsi sebagai basis untuk analisis protocol SA-MP 0.3.DL-R1 secara realtime sekaligus menyediakan struktur yang cukup modular untuk pengembangan decoder, classification, dan capture tooling berikutnya.