Modifikasi Aplikasi Android

Ada banyak alasan kenapa kadang kita ingin memodifikasi aplikasi Android, dan ada banyak cara untuk melakukannya. Beberapa alasan saya pernah memodifikasi Android di antaranya: untuk pentest, untuk membuat aplikasi bisa berjalan lagi, dan untuk mencurangi game.

Untuk pentesting, modifikasi yang sering perlu dilakukan adalah: mematikan certificate pinning, mematikan root checking, dan juga menambahkan tracing untuk melihat logika aplikasi lebih jelas. Jam tangan murah dari China yang saya pakai memakai aplikasi Android untuk notifikasinya. Suatu saat aplikasi ini tidak bisa dipakai karena servernya di China sudah dimatikan, dengan mengubah aplikasinya, jam ini jadi tetap terpakai. Untuk masalah mencurangi game, sudah pernah saya tuliskan di blog saya yang lain.

Sekarang saya ingin menjelaskan beberapa cara untuk mengubah aplikasi Android. Saya tidak akan membahas aplikasi spesifik, karena tiap aplikasi berbeda, dan bahkan satu aplikasi yang sama bisa berubah total di rilis berikutnya. Asumsinya adalah aplikasi memakai kode Java/Smali (kebanyakan aplikasi seperti ini) dan bukan HTML/JS atau teknologi lain. Teknologi HTML/JS lebih mudah dimodifikasi, tapi beberapa yang lain seperti Unity (.NET), dan Rhomobile (Ruby) membutuhkan penanganan khusus .

Cara pertama adalah yang paling dasar, dan paling sering saya pakai: patching smali. Caranya adalah: APK diekstrak dengan apktool menjadi smali, di-edit, dicompile lagi, lalu disign. Kelebihan cara ini: hampir selalu berhasil, tidak perlu rooting HP dan menginstall software. Kekurangannya: tidak user friendly, harus mengedit kode smali yang cukup rawan salah. Dengan pendekatan ini, aplikasi asli perlu diuninstall, dan aplikasi baru menggantikan aplikasi lama.

Dengan unpack/repack APK, kita juga bisa menambah atau mengubah library native, termasuk juga menambahkan LD_PRELOAD seperti yang pernah saya bahas sebelumnya.

Pendekatan variasi lain dari cara tersebut adalah dengan DexPatcher. Ini sama saja dengan mengedit smali (aplikasi asli diuninstall lalu diinstall yang baru) tapi kita menuliskan kode patching dalam Java sehingga tidak rawan salah.  Tentunya selain cara di atas ada cara variasi lain. Contohnya untuk aplikasi tertentu hasil dekompilasi menjadi Java cukup baik sehingga mudah dikompilasi ulang.

Kelemahan kedua cara tersebut adalah: data lama aplikasi akan dihapus (kita perlu login ulang). Kelemahan lain adalah: signature aplikasi berubah. Beberapa aplikasi memiliki proteksi sehingga tidak akan mau berjalan jika signature aplikasi berubah, jadi bagian checking ini perlu dipatch juga. Kelebihan utama kedua cara di atas adalah: tidak butuh root, dan APK yang sudah diubah mudah disebarkan ke orang lain.

Pendekatan lain adalah dengan XPosed framework, yang sudah pernah saya bahas sebelumnya. Dengan pendekatan ini: signature aplikasi tidak berubah, kita membuat perubahan di luar aplikasi menggunakan bahasa Java. Kelemahan cara ini adalah: handphone harus terinstall XPosed framework. Tiap kali kita memodifikasi modul framework, handphone perlu direstart (bisa soft restart saja agar lebih cepat) untuk mengaktifkan modifikasinya.

Pendekatan sejenis XPosed yang lebih dinamik adalah Frida. Dengan Frida kita bisa memanipulasi berbagai hal secara dinamis menggunakan JavaScript, termasuk juga mengganti beberapa kode native. Jika ingin mudah, frida bisa dijalankan pada HP yang sudah diroot, dengan ini signature APK tidak berubah. Tapi jika tidak memungkinkan, kita bisa memodifikasi APK agar meload library Frida (modifikasi APK akan mengubah signature aplikasi).

Kelemahan Frida dibandingkan XPosed adalah: perubahan yang dilakukannya tidak permanen. Tapi kelemahan ini juga menjadi suatu kelebihan: modifikasi mudah dilakukan dan tidak perlu restart HP setiap kali

Contoh skrip Frida untuk salah satu soal Flare On

Selain XPosed dan Frida, sebenarnya ada juga Cycript dan MobileSusbtrate tapi keduanya sudah lama tidak diupdate dan tidak mendukung Android terbaru.

Semua cara di atas sebaiknya dikuasai, karena penerapannya tergantung kebutuhan. Contohnya: jika modifikasi hanya temporer (untuk pentest atau menyelesaikan CTF) mungkin Frida akan lebih baik. Jika ingin menyebarkan modifikasi tanpa menyertakan aplikasi asli (karena masalah hak cipta) maka XPosed bisa digunakan. Xposed juga cocok jika ingin membuat perubahan semi permanen.

Ketika ada sistem operasi baru, biasanya XPosed dan Frida tidak langsung bisa dipakai jika ada perubahan mendasar di sistem operasi, jadi tetap perlu tahu cara modifikasi manual.

2 thoughts on “Modifikasi Aplikasi Android”

Leave a Reply

Your email address will not be published. Required fields are marked *