Lompat ke konten
Aback Tools Logo

Penganalisis Pustaka Native (.so) Android

Analisis berkas .so Android secara online dan gratis. Penganalisis pustaka native kami mengurai header ELF, tabel simbol, fungsi JNI, impor, ekspor, dan header seksi. Cepat, aman, dan tanpa pendaftaran.

Android Native Library (.so) Analyzer
Upload an Android .so file (ELF shared library) to analyze its headers, symbol tables, imports and exports, JNI functions, and detect symbol stripping. All processing is done locally in your browser.
Upload an Android .so file to analyze its ELF structure

Upload an Android .so File to Begin

Upload any Android native library (.so file) to analyze its ELF structure, symbol tables, JNI functions, imports and exports, section headers, and detect symbol stripping. All processing is completely local in your browser.

Mengapa menggunakan Penganalisis Pustaka Native (.so) Android kami?

  • Penguraian header ELF lengkap: penganalisis pustaka native mengurai seluruh struktur header ELF: magic identifikasi, kelas (32/64-bit), pengodean data (endianness), OS/ABI (Linux, Android, System V), tipe mesin (ARM, AArch64, x86, x86-64), tipe berkas, alamat titik masuk, serta lokasi tabel header program dan seksi. Semua bidang diterjemahkan menjadi label yang mudah dibaca, dengan nilai heksadesimal ditampilkan di sampingnya.
  • Analisis tabel simbol menyeluruh: ekstrak dan tampilkan semua simbol dari tabel .symtab dan .dynsym beserta nama, tipe (FUNC, OBJECT, NOTYPE), pengikatan (LOCAL, GLOBAL, WEAK), visibilitas (DEFAULT, HIDDEN, PROTECTED), alamat, ukuran, dan seksi terkaitnya. Filter berdasarkan ekspor, impor, fungsi JNI, atau semua simbol melalui antarmuka dengan pencarian.
  • Deteksi dan analisis fungsi JNI: deteksi otomatis fungsi JNI (Java Native Interface) melalui konvensi penamaan Java_. Setiap fungsi JNI disorot dengan lencana khusus yang menampilkan nama JNI lengkapnya. Penganalisis mengekstrak komponen paket, kelas, dan metode dari setiap nama Java_ agar mudah dirujuk selama rekayasa balik.
  • Analisis stripping dan keamanan: deteksi apakah berkas .so telah dihapus nama simbolnya, teknik obfuskasi umum baik pada build rilis yang sah maupun malware. Penganalisis juga mengidentifikasi fitur keamanan penting: header program GNU_RELRO (relokasi hanya-baca), seksi GOT/PLT, penyimpanan lokal thread, tabel penanganan pengecualian, dan konstruktor .init_array.

Kasus penggunaan umum Penganalisis Pustaka Native Android

  • Analisis malware dan spyware Android: perekayasa balik menganalisis berkas .so dari APK mencurigakan untuk mendeteksi kode native berbahaya. Malware sering memakai pustaka native untuk menjalankan payload, menerapkan teknik anti-analisis, dan meningkatkan hak akses. Penganalisis pustaka native mengungkap fungsi JNI dengan nama mencurigakan, tabel simbol terobfuskasi, dan fungsi sistem yang diimpor yang menandakan perilaku berbahaya.
  • Peninjauan keamanan aplikasi dan pentest: auditor keamanan memeriksa pustaka native untuk memastikan build rilis sudah di-strip dengan benar, simbol debug telah dihapus, dan tidak ada nama fungsi sensitif yang terekspos. Penganalisis membantu mengidentifikasi simbol pengembang yang tersisa, fungsi JNI yang mengekspos logika API backend, dan fungsi impor yang dapat dieksploitasi untuk merusak memori.
  • Pemeriksaan SDK pihak ketiga: analisis komponen native SDK Android pihak ketiga sebelum diintegrasikan. Penganalisis pustaka native mengungkap fungsi sistem apa yang diimpor SDK, callback JNI apa yang didaftarkan, dan apakah ada ekspor tak terduga. Hal ini krusial untuk SDK yang menangani data sensitif seperti ID periklanan, sidik jari perangkat, atau analitik.
  • Pengembangan dan debugging NDK: pengembang Android NDK memakai penganalisis untuk memastikan berkas .so yang dikompilasi memiliki arsitektur yang benar (arm64-v8a, armeabi-v7a, x86_64), ekspor fungsi JNI yang tepat, dan visibilitas simbol yang diharapkan. Ini membantu men-debug masalah penautan, ekspor yang hilang, dan paparan simbol yang tidak disengaja sebelum rilis.
  • Riset kerentanan dan pengembangan eksploit: peneliti kerentanan memeriksa berkas .so untuk informasi versi, mengidentifikasi build pustaka tertentu, dan menganalisis fungsi impor untuk memahami permukaan serangan. Analisis header seksi mengungkap segmen yang dapat ditulis dan dieksekusi, perlindungan RELRO yang hilang, serta kerentanan perusakan memori lainnya.
  • Pembelajaran format berkas ELF: pelajar yang mempelajari spesifikasi ELF (Executable and Linkable Format) dapat melihat berkas ELF nyata yang telah diurai, lengkap dengan header, seksi, dan simbolnya. Penganalisis memetakan setiap bidang struktur ELF ke definisinya dalam spesifikasi, menjadikannya alat edukasi yang sangat baik untuk memahami cara kerja pustaka bersama di Linux dan Android.

Apa itu berkas .so Android?

Berkas .so (Shared Object) adalah padanan Android dari pustaka tautan dinamis di Linux. Aplikasi Android memakai pustaka native yang ditulis dalam C atau C++ melalui Android NDK (Native Development Kit) untuk kode yang kritis terhadap performa, mesin game, kriptografi, pemrosesan sinyal, dan SDK pihak ketiga. Pustaka ini mengikuti spesifikasi ELF (Executable and Linkable Format), format yang sama dengan executable dan pustaka bersama Linux. Setiap berkas .so berisi kode mesin yang dikompilasi untuk arsitektur CPU tertentu - ARM, ARM64, x86, atau x86-64 - dan dimuat ke proses aplikasi saat runtime melalui System.loadLibrary(). Penganalisis pustaka native mengurai struktur ELF ini untuk mengungkap header, seksi, simbol, dan fungsi JNI.

Cara kerja Penganalisis Pustaka Native Android

  1. Unggah berkas .so Anda: pilih pustaka native Android mana pun untuk dianalisis. Penganalisis membaca data biner ELF mentah langsung di browser Anda tanpa mengunggah ke server - semua pemrosesan bersifat lokal.
  2. Penguraian ELF: alat ini membaca magic identifikasi ELF (\x7fELF), menentukan kelas (32 atau 64-bit) dan endianness, lalu mengurai seluruh header ELF termasuk header program (segmen) dan header seksi. Alat mengikuti tabel string header seksi untuk menyelesaikan nama seperti .text, .data, .bss, .dynsym, dan .init_array.
  3. Ekstraksi dan analisis simbol: penganalisis mengurai seksi .symtab (tabel simbol) dan .dynsym (tabel simbol dinamis), menyelesaikan nama simbol melalui tabel string terkait (.strtab dan .dynstr). Setiap simbol diklasifikasikan berdasarkan tipe, pengikatan, dan visibilitas. Fungsi JNI (berprefiks Java_) dideteksi dan ditandai secara otomatis, dan pustaka diperiksa untuk penghapusan simbol.

Struktur ELF penting yang akan Anda lihat

  • Header ELF: header 52-64 byte di awal setiap berkas .so yang berisi magic number, kelas (32/64-bit), urutan byte, OS/ABI, tipe mesin (ARM, AArch64, x86), dan penunjuk ke tabel header program dan seksi.
  • Header program: menjelaskan segmen yang dimuat ke memori saat runtime. Segmen LOAD dipetakan ke ruang alamat proses. DYNAMIC berisi informasi penautan dinamis. GNU_RELRO membuat data relokasi hanya-baca setelah dimuat. INTERP menentukan jalur linker/loader dinamis.
  • Header seksi: menjelaskan tata letak berkas saat penautan, termasuk .text (kode yang dapat dieksekusi), .data (data terinisialisasi), .bss (data belum terinisialisasi), .dynsym/.dynstr (simbol dinamis), .init_array/.fini_array (fungsi konstruktor/destruktor), .got/.got.plt (global offset table), .plt (procedure linkage table), dan .ARM.exidx (indeks pengecualian ARM).
  • Tabel simbol: berisi nama fungsi dan variabel beserta alamat, ukuran, tipe (FUNC, OBJECT, NOTYPE), dan pengikatan (LOCAL, GLOBAL, WEAK). Simbol dinamis dipakai untuk penautan saat runtime, sedangkan simbol biasa dipakai untuk debugging dan dapat dihapus pada build rilis.

Privasi, keamanan, dan catatan penggunaan

Penganalisis Pustaka Native Android memproses semua berkas sepenuhnya di browser Anda menggunakan JavaScript. Tidak ada data berkas yang pernah diunggah ke server, disimpan di basis data, atau dibagikan kepada pihak ketiga. Tidak ada batas ukuran selain kemampuan browser Anda: berkas di atas 100 MB mungkin perlu waktu lebih lama, tetapi tidak akan pernah meninggalkan perangkat Anda. Seluruh penguraian ELF, ekstraksi tabel simbol, deteksi JNI, dan analisis seksi berjalan secara lokal. Ekspor laporan analisis dalam format JSON untuk dibagikan ke tim atau disimpan sebagai arsip.

Pertanyaan yang Sering Diajukan

Berkas .so (Shared Object) adalah pustaka native yang digunakan aplikasi Android untuk kode yang kritis terhadap performa, ditulis dalam C atau C++. Menganalisis berkas .so mengungkap struktur ELF, fungsi yang diimpor dan diekspor, metode JNI yang dapat dipanggil dari Java/Kotlin, serta potensi masalah keamanan. Karena kode native memiliki akses memori langsung, analisis berkas .so sangat penting untuk audit keamanan dan analisis malware.

Android mendukung empat arsitektur CPU utama untuk pustaka native: arm64-v8a (ARM 64-bit, sebagian besar perangkat modern), armeabi-v7a (ARM 32-bit, perangkat lama), x86_64 (emulator Intel/AMD 64-bit dan beberapa tablet), dan x86 (x86 32-bit, emulator lama). Penganalisis Pustaka Native Android mendeteksi arsitektur secara otomatis dari bidang tipe mesin pada header ELF.

Fungsi JNI (Java Native Interface) adalah fungsi C/C++ yang dapat dipanggil dari Java atau Kotlin menggunakan konvensi penamaan Java_packagename_Class_method. Fungsi ini menjembatani aplikasi Android dan kode native. Penganalisis mendeteksi semua fungsi JNI melalui prefiks Java_, sehingga memudahkan mengidentifikasi seluruh permukaan API native dari berkas .so mana pun.

Pustaka yang di-strip telah kehilangan nama simbol dari seksi .symtab, sementara seksi .dynsym tetap dipertahankan untuk penautan saat runtime. Ini hal biasa pada build rilis, tetapi mempersulit rekayasa balik. Penganalisis mendeteksi stripping dengan memeriksa apakah ada simbol bernama di tabel simbol.

Tentu. Seluruh penguraian ELF, ekstraksi tabel simbol, deteksi JNI, dan analisis seksi berjalan secara lokal di browser Anda menggunakan JavaScript. Berkas .so Anda tidak pernah diunggah ke server mana pun, disimpan di basis data, atau dikirim melalui jaringan.

GOT (Global Offset Table) dan PLT (Procedure Linkage Table) adalah seksi ELF yang memungkinkan penautan dinamis saat runtime. GOT menyimpan alamat variabel global dan fungsi yang diimpor dari pustaka lain. PLT berisi kode stub yang menyelesaikan alamat fungsi saat pemanggilan pertama (lazy binding).

GNU_RELRO (Relocation Read-Only) adalah header program yang menandai data relokasi sebagai hanya-baca setelah linker dinamis menyelesaikannya. Ini mencegah penyerang menimpa entri GOT untuk membajak alur eksekusi. Penganalisis pustaka native memeriksa fitur keamanan ini.

Bisa, penganalisis menyediakan dua opsi ekspor: Salin Laporan menghasilkan ringkasan teks biasa berisi informasi header ELF, jumlah simbol, jumlah fungsi JNI, dan status stripping. Ekspor JSON membuat berkas JSON terstruktur dengan semua data yang diurai untuk analisis lebih lanjut.

Seksi .init_array berisi penunjuk ke fungsi konstruktor yang dijalankan saat pustaka dimuat. Malware sering memakai .init_array untuk rutinitas inisialisasi atau dekripsi payload. Seksi .fini_array berisi destruktor yang dipanggil saat pustaka dilepas. Penganalisis mendeteksi keberadaan kedua seksi tersebut.