Flutter debug Apk decompile to get source code

Jagraj Singh picture Jagraj Singh · Dec 7, 2018 · Viewed 14.3k times · Source

I have lost the source code of my flutter application due to drive corruption, but I have my debug.apk in my android phone. Can anyone please tell me how to decompile the Flutter apk to get source code. I have tried decompiling it using decompilers but it is not giving my source code as the flutter source code is in dart language.

Answer

user3467955 picture user3467955 · May 28, 2019

If your debug.apk is in debug mode then you can use apktool in order to extract the components of the apk (I'm using the word extracting since apk is a zip file).

Flutter, in debug mode, keeps the source code (with comments!) in the file kernel_blob.bin. Thus, using the following command should help you extract the code into a file:

strings /path/to/extracted/apk/assets/flutter_assets/kernel_blob.bin > extracted_code.dart

Please, pay attention - You'll need to clean 'extracted_code.dart', from irrelevant/garbage strings.

Try to search strings like "dart", "import", "void" and other keywords in 'extracted_code.dart', it will help you find the code itself.

Here's an example from my Ubuntu:

Example

If the apk is compiled in "release" mode, extracting the code will be much harder, since the code is compiled into isolate_snapshot_instr file, which is not a raw arm assembly, and is only deserialized using the Flutter engine in run-time. You can read more about it here