Amankan Aplikasi Android dari Reverse Engineering !

Mahrus Khomaini
NgalamBackend
Published in
4 min readDec 9, 2019
Android Reverse Engineering by Otniel Vistory on Ngalam Backend Community

November 2019, Ngalam Backend Community (NBC) berkolaborasi dengan Kelas Mobile Malang (KMM) dan RAION Community dengan meriah menyelenggarakan meetup bulanan bertempat di DILo Malang. Bertemakan “Secure Your App”, mendatangkan 2 pemateri expert dibidangnya yakin Otniel Victory dan Moch. Lutfi.

Otniel Vitory (Software Engineer Android at Alterra) berbagi pengalaman bagaiman cara mengamankan aplikasi android dari reverse engineering. Moch. Lutfi (Software Engineer at BUKALAPAK) membahas bagaimana memaksimalkan keamanan aplikasi khususnya dari sisi backend.

Reverse Engineering ?

Banyak developer android tidak menyadari ketika membuat aplikasi kemudian mempublikasinya di playstore, maka berarti semua orang dapat melakukan “apapun”, salah satunya adalah reverse engineering.

Reverse Engineering merupakan proses memahami bagaimana suatu hal bekerja, untuk kemudian menggunakannya ulang untuk tujuan lain.

Orang lain dapat membongkar aplikasi yang kita buat untuk mengetahui cara kerja fitur, mengambil algoritma, melakukan modifikasi, menghapus iklan, hingga mengetahui code penting seperti API key sehingga bisa digunakan untuk tujuan tertentu. Misalnya saja kita memiliki aplikasi android dimana di dalamnya terdapat API berbayar untuk tiap kali request, kemudian dibongkar sehingga orang lain mendapatkan endpoint serta API key nya dan digunakan secara cuma-cuma, maka tentu kita sangat dirugikan.

Hasilnya adalah aplikasi mod yang merupakan salah satu produk dari reverse engineering dengan melakukan perubahan pada aplikasi asli menjadi aplikasi baru. Misalnya: aplikasi mod whatsapp, spotify, vsco, dll.

Membongkar Aplikasi Android !

Sangat perlu mengetahui bagaimana proses membongkar aplikasi android, sehingga bisa mempelajarinya, mencegah dan mengamankan aplikasi android yang kita buat.

NOTE: Tujuan kali ini hanya untuk pembelajaran, proses decompile bisa menjadi tindakan illegal bila digunakan untuk membuat aplikasi tiruan, eksploitasi, mencuri algoritma, dll.

Photo by Pim Chu on Unsplash

1. Menyiapkan APK android

Bisa mencarinya di internet, juga bisa menggunakan aplikasi Apps Backup & Restore yang tersedia di playstore, maupun menggunakan tools lain serupa untuk menghasilkan paket android APK.

2. Decompile

Merupakan proses mengubah paket aplikasi (.apk) menjadi source code yang dapat dibaca oleh manusia. Tujuan umum decompile sebagai berikut.

  • Read another’s code. Membaca untuk mempelajari bagaimana structure dan logic suatu aplikasi yang dianggap powerfull. Misalnya bisa mempelajari code dari aplikasi whatsapp milik facebook, dll.
  • Find vulnerability in the code. Menemukan kerentanan code yang merupakan kelemahan aplikasi bila dieksploitasi lebih lanjut.
  • Search for sensitive data hardcoded in the code. Mencari code yang bersifat sensitif atau rahasia. Misalnya: API key, token, sensitive logic, dll.
  • Malware Analysis. Menemukan dan mempelajari malware yang ada pada aplikasi.
  • Modifiying the functionality of an exiting application. Memodifikasi fungsi atau fitur-fitur yang ada, sehingga bekerja tidak sebagaimana aslinya.

Beberapa tools yang dapat digunakan untuk decompile sebagai berikut.

  • APK tool.
  • Dex2jar & JdGui.
  • APK Studio.
  • Online decompiler.
  • JADX

Menggunakan JADX

  1. Install dan buka JADX.
  2. Buka paket android (.apk). And gotcha, you got the code!!!

Setelah berhasil decompile menggunakan JADX, maka akan didapatkan:

  • Asset (icon, drawable, custom assets, etc.)
  • Layout (.xml)
  • Value (color, string, style, etc.)
  • Setting Android Manifest
  • Java File
  • Others

Bagaimana agar 100% Aman ?

Jawaban “resmi” nya adalah tidak ada. Tidak ada yang menjamin bahwa aplikasi android akan aman 100%., khususnya dari reverse engineering. Tetapi yang bisa dilakukan adalah dengan mengurangi kerentanan sekecil mungkin pada aplikasi, berikut tipsnya.

Photo by chris panas on Unsplash

1. Gunakan ProGuard / R8

  • Android Build Gradle < 3.4.0 use ProGuard
  • Android Build Gradle > 3.4.0 use R8

NOTE: Jika aplikasi mengalami error saat penerapan R8 (kode yang digunakan terhapus), maka gunakan -keep public class MyClass pada file proguard-rules.pro, seperti referensi berikut.

Dengan menggunakan ProGuard / R8, maka secara otomatis:

  • Code Shrinking. Menghapus code yang tidak digunakan seperti classes, fields, methods, attributes, libraries, dan lainnya.
  • Resource Shrinking. Menghapus resource yang tidak digunakan.

NOTE: Resource Shrinking hanya dapat dilakukan bersama dengan penyusutan kode, jika ingin mempertahankan resource agar tidak dihapus, please open this reference.

  • Obfuscation. Me-rename nama class and members menjadi lebih ringkas sehingga sulit dibaca oleh manusia.
  • Optimization. Hasilnya ukuran file yang lebih kecil.

TIPS: Aktifkan ProGuard / R8 hanya pada buildType Relase, karena prosesnya sangat memakan waktu. Sangat tidak efisien jika digunakan pada mode development.

2. Hindari Hardcode

Sangat penting untuk tidak menuliskan sensitive code(misal secret key) langsung pada aplikasi android nya.

FAKTA: Masih sering terjadi di negara ASEAN dengan kode IDN (oleh FIFA) ini, mari berhijrah.

3. Storing Keys in the Native C/C++

Menyembunyikan (bukan menghilangkan) keys, ditulis menggunakan bahasa C atau C++. Seperti berikut:

  • Buat folder jni di main.
  • Buat Android.mk dan Application.mk di jni.
  • Buat key.c di jni.
  • Tambahkan pada build gradle.

NOTE: Point nomor 3 memiliki kelemahan yakni tetap bisa ditemukan jika yang mencari benar-benar jeli dan teliti.

4. Memanfaatkan Cloud

Menggunakan cloud storage seperti firebase maupun lainnya untuk meletakkan keys.

5. Don’t Store Raw Format

Misalnya: daripada save langsung var coin = 300, maka lebih baik save 1,208 hasil dari (coin/2+1)/125.

6. Put Logic on BackEnd

Semaksimal mungkin letakkan logic aplikasi di backend, serta gunakan android hanya untuk menyajikan data.

7. Layanan Berbayar

Memanfaatkan layanan berbayar untuk melindungi aplikasi android, salah satunya adalah DexGuard.

Slide

Semua materi oleh Otniel Victory.

Slide Materi Android Reverse Engineering

Keep in touch with Ngalam Backend Community on: Instagram NBC, Telegram NBC Group, Whatsapp NBC Group, Twitter NBC, Facebook NBC.

Say hello to our brothers KMM Malang and RAION Community.

--

--