Jadwal Sholat

Memuat jadwal sholatโ€ฆ

Editorial Ilmu Komputer & AI

Open AccessOA2026

NotDec: Dekompilasi WebAssembly dengan Pemulihan Tipe Antar-Prosedur

Kerangka berbasis SSA yang mengangkat bytecode Wasm menjadi C yang mudah dibaca, mencapai 100% rekompilasi pada 5.241 sampel Juliet dan pemulihan anggota struct 85,33% dibandingkan 9,24% milik Ghidra.
Jikai Wang; Ningyu He; Tianming Liu; Junhai Wang; Haoyu Wangยท 2026ยท DOI 10.48550/arXiv.2608.03286

Masalah inti

WebAssembly (Wasm) telah menjadi standar bytecode tingkat rendah yang universal, didukung secara luas di peramban, kontainer, perangkat IoT, dan platform serverless. Seiring pertumbuhan adopsinya, kebutuhan untuk mengaudit kerentanan tersembunyi dan niat jahat yang tertanam dalam modul Wasm juga meningkat. Dekompilasi adalah alat utama bagi peneliti keamanan dan pengguna akhir untuk memahami perilaku biner, namun dekompiler yang ada menghasilkan keluaran bertele-tele, keterbacaan buruk, dan pemulihan tipe yang terbatas. Para penulis mempresentasikan **NotDec**, kerangka dekompilasi WebAssembly canggih yang dirancang untuk mengatasi kekurangan tersebut. NotDec menargetkan tiga tujuan inti: (1) mengangkat bytecode Wasm menjadi representasi antara (IR) berbasis SSA yang bersih, (2) memulihkan struktur data kompleks melalui pemulihan tipe antar-prosedur, dan (3) menghasilkan kode C yang mudah dibaca dan konsisten secara semantik. Karya ini diposisikan terhadap baseline seperti Ghidra, yang hanya mencapai tingkat keberhasilan rekompilasi 45,95% pada dataset Juliet. Klaim utama makalah ini adalah bahwa penggabungan pengangkatan berbasis pemeriksaan tipe dengan pemulihan tipe bergaya Rety

Inovasi

Evaluasi melaporkan hasil kuantitatif yang kuat. NotDec mencapai **tingkat keberhasilan rekompilasi 100%** pada seluruh **5.241 sampel Juliet** dan semua **program dataset Howard**, jauh melampaui baseline termasuk **Ghidra (tingkat keberhasilan 45,95%)**. Pada akurasi pemulihan tipe, NotDec memulihkan **85,33% akses anggota struct** pada program dunia nyata, jauh melebihi **9,24%** milik Ghidra. Hasil ini menunjukkan bahwa kombinasi pengangkatan berbasis SSA, pemulihan tipe antar-prosedur, dan Memory SSA efektif menghasilkan keluaran yang dapat dikompilasi dan akurat secara tipe. Para penulis juga mengevaluasi skalabilitas: meskipun versi antar-prosedur penuh menghadapi tantangan pada biner besar, varian intra-prosedur **NotDec_F** menunjukkan efisiensi superior, mengonsumsi **kurang dari setengah memori Ghidra** dan hingga **97% lebih sedikit waktu eksekusi** pada biner yang tidak dioptimalkan. Trade-off antara presisi dan skalabilitas ini merupakan temuan kunci, yang menunjukkan bahwa NotDec_F cocok untuk analisis skala besar atau dengan sumber daya terbatas, sementara NotDec penuh lebih disukai ketika pemulihan tipe maksimal diperlukan.
WebAssembly (Wasm) telah menjadi standar bytecode tingkat rendah yang universal, didukung secara luas di peramban, kontainer, perangkat IoT, dan platform serverless. Seiring pertumbuhan adopsinya, kebutuhan untuk mengaudit kerentanan tersembunyi dan niat jahat yang tertanam dalam modul Wasm juga meningkat. Dekompilasi adalah alat utama bagi peneliti keamanan dan pengguna akhir untuk memahami perilaku biner, namun dekompiler yang ada menghasilkan keluaran bertele-tele, keterbacaan buruk, dan pemulihan tipe yang terbatas. Para penulis mempresentasikan **NotDec**, kerangka dekompilasi WebAssembly canggih yang dirancang untuk mengatasi kekurangan tersebut. NotDec menargetkan tiga tujuan inti: (1) mengangkat bytecode Wasm menjadi representasi antara (IR) berbasis SSA yang bersih, (2) memulihkan struktur data kompleks melalui pemulihan tipe antar-prosedur, dan (3) menghasilkan kode C yang mudah dibaca dan konsisten secara semantik. Karya ini diposisikan terhadap baseline seperti Ghidra, yang hanya mencapai tingkat keberhasilan rekompilasi 45,95% pada dataset Juliet. Klaim utama makalah ini adalah bahwa penggabungan pengangkatan berbasis pemeriksaan tipe dengan pemulihan tipe bergaya Retypd dan Memory SSA menghasilkan keuntungan substansial baik dalam keberhasilan rekompilasi maupun akurasi pemulihan tipe.
Pipeline NotDec terdiri dari empat tahap utama. Pertama, kerangka ini **memperluas algoritma pemeriksaan tipe WebAssembly** untuk mengangkat bytecode menjadi IR berbasis SSA. Perluasan ini memastikan IR yang diangkat mempertahankan semantik asli sekaligus memungkinkan analisis hilir. Kedua, kerangka ini menerapkan **Retypd**, algoritma pemulihan tipe antar-prosedur, yang diperkaya dengan metode pembedaan nilai pointer dan numerik untuk memulihkan struktur data kompleks seperti struct dan array. Ketiga, kerangka ini memanfaatkan **Memory SSA** untuk memodelkan operasi memori secara presisi, yang krusial untuk mendisambiguasi alias dan merekonstruksi tata letak data. Keempat, kerangka ini melakukan **analisis aliran kendali terstruktur yang mempertahankan semantik** untuk menghasilkan kode C yang mudah dibaca dan mencerminkan aliran kendali asli. Kerangka ini menawarkan dua varian: versi antar-prosedur penuh (NotDec) dan varian intra-prosedur (NotDec_F) yang dirancang untuk efisiensi. Proses pemulihan tipe dapat diringkas sebagai masalah penyelesaian kendala pada graf SSA:

Mengapa penting

Hasil ini memposisikan NotDec sebagai kemajuan substansial dibandingkan dekompiler WebAssembly yang ada. Tingkat rekompilasi 100% pada dataset Juliet dan Howard menunjukkan bahwa IR yang diangkat dan analisis aliran kendali terstruktur mempertahankan semantik cukup baik untuk rekompilasi, properti krusial untuk audit keamanan dan pemahaman biner. Akurasi pemulihan tipe 85,33% pada akses anggota struct dunia nyata sangat menonjol karena mengatasi kelemahan lama dalam dekompilasi: tanpa pemulihan tipe yang akurat, keluaran tetap bertele-tele dan sulit ditafsirkan. Perbandingan dengan Ghidra (9,24%) menyoroti efektivitas Retypd yang dikombinasikan dengan pembedaan pointer/numerik. Namun, keterbatasan skalabilitas versi antar-prosedur penuh menjadi catatan penting. Varian intra-prosedur NotDec_F meredam hal ini dengan menukar sebagian presisi antar-prosedur demi efisiensi, mengonsumsi kurang dari setengah memori Ghidra dan hingga 97% lebih sedikit waktu eksekusi pada biner yang tidak dioptimalkan. Ini menyarankan strategi penerapan praktis: gunakan NotDec_F untuk biner besar atau analisis interaktif, dan sisakan NotDec penuh untuk modul lebih kecil yang membutuhkan kesetiaan tipe maksimal. Pekerjaan mendatang dapat berfokus pada penskalaan analisis antar-prosedur, mungkin melalui teknik peringkasan atau inkremental. Secara keseluruhan, NotDec menetapkan tolok ukur baru untuk dekompilasi Wasm dan menyediakan fondasi bagi analisis biner yang lebih mudah dibaca dan konsisten secara semantik.

Siapa yang sebaiknya membaca

Praktisi dan peneliti ilmu komputer

Membuka konten memberโ€ฆ