Catatan teknis

INTERCEPT v0.2 — Realtime SA-MP RakNet Packet/RPC Monitor

25 Agustus 2026SA-MP / RakNet

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.

Status v0.2: implementasi saat ini bersifat passive monitor. GUI digunakan untuk capture, filtering, inspection, dan identifikasi protocol. Versi ini belum memodifikasi, memblokir, replay, atau mengirim ulang traffic yang ditangkap.

Apa yang sudah diimplementasikan

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.

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.

CONTACT

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.

← Kembali ke Blog