Reversing Flutter with Blutter and Radare2
10-24, 10:15–11:45 (Europe/Luxembourg), Schengen 1 & 2

Flutter is an open-source UI software development kit with the ability to create applications for Android, iOS, and non-mobile platforms using a single codebase. The performance aspect is handled by using ahead-of-time (AOT) native compilation in release builds.

In terms of reverse engineering, Flutter is particularly difficult to tackle because disassemblers do not support its custom binary format, registers and representation of integers.

In this workshop, we will:

  • Learn how to reverse Flutter applications
  • Learn how to use Blutter and understand its output
  • Load symbols in Radare2 to parse the binary more easily
  • Patch a game with a native Frida hook to reveal an Easter Egg

Pre-requisites:

  • It is preferable to have basic experience in reading Assembly (but it is not necessary to be fluent).
  • Pre-Install Radare2 (https://rada.re/n/radare2.html) and Docker (https://docs.docker.com/engine/install/) on your laptop, before the workshop.
  • If possible, come with an ARM64 Android smartphone. If not, I'll lend one (we only need it shortly). On ARM-based MacOS, instead, you can use an ARM64 Android emulator from Android Studio: download and install Android 14, Google APIs (but not Google Play), ARM64.
  • Access to Internet.

Not necessary:

  • You do not need to install Blutter: we'll learn how to install and use a patched version during the workshop. That patched version runs in a Docker container.
  • You do not need to know how to use Radare2: we'll cover all basic commands you need to use during the workshop.