Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reverse Engineering & Secure Your Android Code

Reverse Engineering & Secure Your Android Code

Ngalam Backend Community

November 25, 2019
Tweet

More Decks by Ngalam Backend Community

Other Decks in Technology

Transcript

  1. Reverse? Reverse engineering is the process of understanding how things

    work and reusing the information to do something. Ketika apps sudah di publish di playstore = semua orang bisa melakukan apapun
  2. Aplikasi Mod adalah salah satu produk dari reverse engineering yang

    melakukan perubahan pada code aplikasi asli untuk tujuan tertentu. ex : mod spotify, whatsapp, vsco gratisan dll Aplikasi Mod ? How it could be?
  3. Get Android APK File 1. Pakai aplikasi backup di smartphone

    2. Download langsung di google search
  4. Decompile Tujuan umum Decompile => proses merubah paket aplikasi (.apk)

    jadi source code yang bisa dibaca manusia Read another’s code Find vulnerabilities in the code Search for sensitive data hardcoded in the code Malware Analysis Modifying the functionality of an existing application tujuan kali ini hanya untuk education (karena decompile bisa menjadi hal yang ilegal bila digunakan untuk membuat app tiruan, mencuri algoritma dll)
  5. Decompile Beberapa tools untuk decompile : 1. APK Tool 2.

    Dex2jar & JdGui 3. APK Studio 4. Online decompiler 5. JADX
  6. Yang Didapat Dari Decompile dengan JADX 1. Asset (icon,drawable,custom asset)

    2. Layout (.xml) 3. Value (Color, String, Style) 4. Setting Android Manifest 5. Java File (sometime susah dibaca) 6. Other Note : Hasil tergantung setting yang dilakukan developer saat build aplikasi
  7. 1. Aktifkan ProGuard / R8 Android Build Gradle < 3.4.0

    use ProGuard Android Build Gradle > 3.4.0 use R8
  8. ProGuard or R8 Android Build Gradle < 3.4.0 use ProGuard

    Android Build Gradle > 3.4.0 use R8 Code shrinking Why u should proguard or r8 : removes unused classes, fields, methods, attributes, library Resource shrinking removes unused resources Obfuscation shortens the name of classes and members ex : androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider -> a.a.a.b String nama_ayam = “ayam betutu” -> String z = “ayam betutu” Optimization inspects and rewrites your code
  9. 2. Jangan Hardcode Many such APIs comes with subscription plans

    and can be accessed using API keys which we get during the subscription process Masih sering terjadi di negara +62 developer menulis langsung secret key pada appsnya 2.1 Storing keys in the native C/C++ (existing apps) 1. Create folder jni on main menyembunyikan, bukan menghilangkan
  10. 2.2 Storing keys in cloud bisa pakai firebase, atau cloud

    sendiri (untuk apps yang harus online) 3. Don’t store raw format ex: saved Coin on SharedPreference Daripada save langsung var coin = 300 mending save 1,208 didapat dari (coin/2+1)/125
  11. 4. Put Logic on BackEnd Sebisa mungkin kurangi logic pada

    front end (android) pilih menu, saat button `Beli` ditekan ada validasi if (harga < saldo) { pindah halaman }
  12. NOTE : 1. Jika app error setelah penerapan R8 (kode

    yg digunakan ternyata dihapus) gunakan -keep public class MyClass pada file proguard-rules.pro cara melihat code yg terhapus r8 Link 2. Resource Shrinking hanya dapat dilakukan bersama dengan penyusutan kode, jika ingin mempertahankan resource agar tidak dihapus bisa mengakses Link 3.