JADX Tutorial Demonstrates Recovering Credentials from an Insecure Android App

· 9:51 · Watch on YouTube ↗

Summary

The tutorial uses ADB shell access and JADX to inspect a deliberately insecure Android banking app, showing how a Base64-encoded username and AES-CBC-encrypted password can be recovered from app preferences when the key and IV are exposed.

Key points

  • The demonstration connects to an Android device over Wi-Fi with ADB and opens a root shell.
  • The presenter locates the demo app’s stored login values in its shared preferences.
  • JADX is used to decompile the APK and inspect its login and cryptography code.
  • The username is Base64-encoded, while the password uses AES-256-CBC with a key in the app and an all-zero initialization vector.
  • Using the values found in the app and its code, the presenter recovers the demo credentials and logs into the app.

Article Details

Topics
  • [00:31] Connecting to the Android device over Wi-Fi with ADB and opening a root shell
  • [01:48] Locating stored login credentials in the app’s shared preferences
  • [02:51] Extracting the demo APK and decompiling it with JADX
  • [05:12] Tracing the app’s login and cryptography logic in the decompiled source
  • [06:39] Inspecting the embedded AES key, zero IV, and AES-CBC implementation
  • [08:09] Decoding the username and decrypting the password to access the demo account