[ ACCESSING_ARCHIVE ]

Show HN: I’ve updated my Linux System Call website and API

November 02, 2026 • BY azzar
[ READ_TIME: 7 MIN ] |
. . .

Pendahuluan: Kalau Hafal Nomor Syscall Itu Keren, Coba Deh Hafal Semua Arsitekturnya

Hai para kernel hacker, exploit developer, reverse engineer, dan penikmat strace sejati. Pernah nggak sih kamu lagi debugging di jam 3 pagi, mata merah seperti panda yang kurang tidur, cuma buat nyari tahu nomor syscall openat di ARM64 beda sama x86_64? Atau mungkin kamu lagi nulis shellcode dan lupa instruksi apa yang dipakai RISC-V buat masuk ke kernel mode? ecall? svc? int 0x80? Pusing kan?

Tenang, guitmz—si mastermind di balik syscall.sh—baru saja drop update besar-besaran yang diumumkan di Show HN. Bukan cuma cosmetic update ganti warna theme doang, tapi overhaul data dan API yang bikin hidup kita para low-level enthusiast jadi lebih santuy. Kita bahas satu-satu sampai ke tulang kernel-nya.

1. Apa Sih syscall.sh Itu? & Siapa guitmz?

Buat yang baru kenal (belajar dulu dong, jangan cuma ngikutin hype), syscall.sh adalah website dan API referensi tabel system call Linux yang komprehensif. Dia dikembangkan dan dipelihara oleh guitmz (Gustavo Silva, kalau nggak salah tebak dari handle GitHub-nya). Dia bukan orang random; dia orang yang paham betul calling convention dan ABI (Application Binary Interface) sampai ke level register rdi, rsi, rdx, r10, r8, r9 di x86_64.

Update kali ini bukan rilis pertama, tapi menurut posting HN-nya, ini adalah pembaruan signifikan (updated) yang membawa data terbaru dan struktur API yang lebih developer-friendly. Kalau dulu kamu harus scrape tabel HTML atau buka PDF man page yang bikin mata rabun, sekarang semuanya tersaji di piringan JSON yang bersih.

2. Cakupan Arsitektur: 27 Rasa, Dari x86 Hingga RISC-V, Semua Ada di Sini

Fitur killer utama syscall.sh adalah lebar cakupan arsitekturnya. Bukan cuma x86_64 (intel/AMD 64-bit) dan i386 (32-bit) doang. Menurut data di halaman utama syscall.sh dan ringkasan di Upstract, situs ini melayani tabel untuk 27 arsitektur berbeda. Dua puluh tujuh!

  • x86 Family: x86_64, x32, i386 (IA-32).
  • ARM Family: ARM64 (AArch64), ARM EABI 32-bit (armhf/armel), thumb.
  • RISC-V: RV64 (64-bit), RV32 (32-bit).
  • Lainnya: PowerPC (ppc64le, ppc64), MIPS (mips64, mips32, mipsn32), s390x (IBM Z), SuperH, Alpha, SPARC, IA-64 (Itanium), M68K, MicroBlaze, NDS32, C-SKY, LoongArch, Hexagon, ARC, OpenRISC.

Artinya, kalo kamu lagi porting exploit ke LoongArch (prosesor buatan China) atau nulis shellcode buat s390x (mainframe IBM), kamu nggak perlu grep source code kernel arch/... satu-satu. Cukup buka https://syscall.sh/[arch]/. Ini time-saver masif.

3. JSON API: Data Mentah untuk Otomatisasi & Tooling Kamu

Ini yang paling bikin saya nangis bahagia (air mata developer itu pahit-manis). Setiap tabel arsitektur di syscall.sh sekarang punya file JSON mentah yang bisa diakses langsung. Pola URL-nya standar: https://syscall.sh/[arch]/syscalls.json.

Contoh konkret dari sumber: /x64/syscalls.json untuk x86_64. Coba buka di browser atau curl:

curl -s https://syscall.sh/x64/syscalls.json | jq '.[0]'

Kamu akan dapet struktur data yang kaya akan informasi teknis:

  • number: Nomor syscall (syscall number/NR).
  • name: Nama syscall (misal read, write, io_uring_enter).
  • args: Array argumen dengan nama register dan tipe data (misal fd, buf, count).
  • since: Versi kernel kapan syscall ini introduced (diperkenalkan).
  • until: Versi kernel kapan syscall ini dropped (dibuang/deprecated).

Ini gold mine buat bikin tool otomatis: syscall tracer, seccomp policy generator, shellcode encoder, atau bahkan LLM fine-tuning dataset buat code generation low-level. Data histori versi (dari Linux 3.3 sampai 7.3 menurut catatan Upstract—iya, 7.3, mungkin typo atau time traveler dari masa depan, tapi poinnya: histori lengkap) memungkinkan kamu cek kompatibilitas backward tanpa reboot mesin VM berulang kali.

4. Calling Convention & Instruksi Masuk Kernel: Rahasia ABI Terungkap

Bukan cuma tabel nomor doang, syscall.sh menjelaskan Calling Convention per arsitektur dengan detail yang jarang dijumpai di man page bias. Ini bread and butter buat nulis assembly manual atau inline asm di C/Rust.

Ringkasan instruksi syscall entry per arsitektur (berdasarkan data daily.dev):

Arsitektur Instruksi Masuk Kernel Register Nomor Syscall Register Argumen (Arg0 – Arg5)
x86_64 / x32 syscall rax rdi, rsi, rdx, r10, r8, r9
x86 (IA-32) / Compat Mode int 0x80 eax ebx, ecx, edx, esi, edi, ebp
ARM64 (AArch64) svc #0 x8 x0 - x5
ARM 32-bit (EABI) svc #0 (atau swi #0 lama) r7 r0 - r5
RISC-V 64-bit ecall a7 (x17) a0 - a5 (x10 - x15)
RISC-V 32-bit ecall a7 (x17) a0 - a5 (x10 - x15)
s390x svc 0 r1 r2 - r7
PowerPC64LE sc r0 r3 - r8

Perhatikan perbedaan x86_64 (pakai syscall, argumen ke-4 di r10 bukan rcx karena rcx dipakai hardware buat rip return) vs x32 (ILP32 di x86_64, pakai syscall juga tapi pointer 32-bit). Detail seperti ini yang sering bikin segfault kalo salah.

5. Sejarah & Versioning: Arkeologi Kernel Linux 3.3 – 7.3

Satu fitur yang sering terlewat tapi krusial buat compatibility layer (seperti Wine, gVisor, atau container runtime) adalah histori lifecycle syscall. Data di syscall.sh (dirujuk Upstract) mencakup rentang Linux 3.3 hingga 7.3.

  • Field since: Versi kernel minimum di mana syscall ini exist. Contoh: openat muncul di 2.6.16, io_uring_setup di 5.1.
  • Field until: Versi kernel di mana syscall dihapus/removed. Ini langka tapi terjadi (misal syscall lama yang diganti versi _v2 atau statx menggantikan stat di beberapa arsitektur baru).

Dengan JSON API, kamu bisa query: “Tampilkan semua syscall yang introduced di kernel 5.10 tapi dropped di 6.5 untuk arsitektur ARM64”. Coba lakukan itu dengan man syscalls atau grep kernel tree—kamu akan tua sebelum selesai.

6. Use Case Nyata: Kenapa Para “Wong Edan” Butuh Ini?

Oke, cukup teori. Kita pakai ini buat apa sih seharian?

Reverse Engineering & Malware Analysis

Kamu nemu binary ELF stripped, static linked, di IoT device berbasis MIPS64. Kamu lihat instruksi syscall di IDA Pro/Ghidra dengan $v0 = 0x101. Nomor 257 itu apa? Buka https://syscall.sh/mips64/syscalls.json, filter number == 257. Booom: openat. Terselamat.

Exploit Development & Shellcoding

Nulis shellcode polimorfik buat RISC-V? Butuh tau register mana yang clobbered saat ecall. Syscall.sh bilang: a7 buat nomor, a0-a5 buat args. Return value di a0. Error code? Cek errno di a0 kalo negatif. Done.

Kernel Development & eBPF

Kamu nulis kprobe atau tracepoint buat trace syscall bpf sendiri. Butuh mapping nama ke nomor buat userspace loader? JSON API siap makan.

Seccomp / Sandboxing Policy

Bikin profile seccomp ketat buat container untrusted. Butuh daftar semua syscall “berbahaya” (ptrace, process_vm_writev, userfaultfd) per arsitektur target deploy (misal AMD64 server + ARM64 edge). Export JSON, generate policy libseccomp otomatis.

7. Perbandingan: syscall.sh vs man syscalls vs Kernel Source vs LXR

Sumber Kelebihan Kekurangan
man syscalls (man-pages) Standar, terinstall default, pakai man pager. Hanya arsitektur host (biasanya x86_64), format teks susah di-parse mesin, histori versi minim.
Kernel Source (arch/…/entry/syscalls/syscall_*.tbl) Sumber kebenaran mutlak (source of truth). Harus clone repo kernel (GBan), cari file per arch, format .tbl butuh script custom buat parsing argumen register.
LXR / Elixir / Bootlin Browse online, cross-ref ke definisi C. Lambat, UI clunky, susah export massal 27 arch sekaligus.
syscall.sh (Update Terbaru) 27 Arch sekaligus, JSON API siap pakai, Calling Convention & Instruksi Entry, Histori Versi (since/until), UI Web cepat. Bukan source of truth resmi (mirip mirror), bergantung update manual maintenernya (guitmz).

Kesimpulan: syscall.sh adalah reference card terbaik untuk daily driver. Kernel source tetap bos utuh buat verifikasi akhir.

Kesimpulan: Bookmark Ini, Hidupmu Akan Berubah (Sedikit Lebih Mudah)

Update syscall.sh kali ini bukan cuma maintenance release. Ini consolidasikan data tersebar di 27 arsitektur, histori kernel 3.3-7.3, calling convention register-level, hingga instruksi trap entry (svc #0, syscall, int 0x80, ecall, sc) ke dalam satu antarmuka Web + JSON API yang clean.

Buat kamu yang sering ngoprek userspace-kernel boundary, alat ini naik kelas dari “berguna” jadi “wajib ada di bookmark toolbar browser”. Terima kasih guitmz sudah ngurusin dirty work parsing syscall_64.tbl, syscall_32.tbl, syscalls.h ARM, RISC-V, s390x, dll, biar kita bisa fokus ke hal yang lebih seru: nulis kode yang segfault di jam 3 pagi.

Pro Tip Wong Edan: Clone repo github.com/guitmz/syscall.sh (kalau ada/public) atau mirror JSON-nya ke local. Jaringan kantor/rumah bisa putus, tapi deadline exploit nggak nunggu.

Sekian dulu dari saya. Santai aja, kalau error ENOSYS (Function not implemented), cek syscall.sh dulu—mungkin syscall itu memang belum ada di kernel versi kamu, atau kamu salah arsitektur. Happy Hacking!

[ END_OF_ENTRY ]
[ SUCCESS: COPIED_TO_CLIPBOARD ]
[ ARCHIVAL_COMMAND_INDEX ]
SHOW_COMMANDS?
SEARCH_ARCHIVECTRL+K / /
GOTO_INDEXSHIFT+H
NEXT_ENTRY_PAGE]
PREV_ENTRY_PAGE[
COPY_LINKSHIFT+S
CITE_SPECIMENC
MOVE_FOCUSW / S
ACTION_KEYENTER
PRINT_SPECIMENCTRL+P
PRECISION_DOWNJ
PRECISION_UPK
CLOSE_ALLESC
[ ARCHIVAL_CITATION_SPECIMEN ]
APA_FORMAT
azzar. (2026). Show HN: I’ve updated my Linux System Call website and API. Glass Gallery. Retrieved from https://wp.glassgallery.my.id/show-hn-ive-updated-my-linux-system-call-website-and-api/
[ CLICK_TO_COPY ]
MLA_FORMAT
azzar. "Show HN: I’ve updated my Linux System Call website and API." Glass Gallery, 2026, November 02, https://wp.glassgallery.my.id/show-hn-ive-updated-my-linux-system-call-website-and-api/.
[ CLICK_TO_COPY ]
CHICAGO_STYLE
azzar. "Show HN: I’ve updated my Linux System Call website and API." Glass Gallery. Last modified 2026, November 02. https://wp.glassgallery.my.id/show-hn-ive-updated-my-linux-system-call-website-and-api/.
[ CLICK_TO_COPY ]
BIBTEX_ENTRY
@misc{glassgallery_1703,
  author = "azzar",
  title = "Show HN: I’ve updated my Linux System Call website and API",
  howpublished = "\url{https://wp.glassgallery.my.id/show-hn-ive-updated-my-linux-system-call-website-and-api/}",
  year = "2026",
  note = "Retrieved from Glass Gallery"
}
[ CLICK_TO_COPY ]
TECHNICAL_REF
[ REF: SHOW HN: I’VE UPDATED MY LINUX SYSTEM CALL WEBSITE AND API | SRC: GLASS GALLERY | INDEX: 1703 ]
[ CLICK_TO_COPY ]