Flutter debug Apk反编译获取源码

Flutter debug Apk decompile to get the source code

由于驱动损坏,我丢失了我的 flutter 应用程序的源代码,但我的 debug.apk 在我的 android phone 中。 如何反编译 Flutter apk 获取源码? 我试过使用反编译器反编译它,但它没有提供我的源代码 因为Flutter源码是Dart语言

如果您的 debug.apk 处于调试模式,那么您可以使用 apktool 来提取 apk 的组件(我使用提取这个词是因为 apk 是一个 zip 文件)。

Flutter 在调试模式下将源代码(带有注释!)保存在文件 kernel_blob.bin 中。因此,使用以下命令应该可以帮助您将代码提取到文件中:

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

注意 - 您需要从 irrelevant/garbage 个字符串中清理 'extracted_code.dart'。

尝试搜索"dart"、"import"、"void"等字符串以及'extracted_code.dart'中的其他关键字,它会帮助您找到代码本身。

这是我的 Ubuntu 中的示例:

如果 apk 是在 "release" 模式下编译的,提取代码会更难,因为代码被编译到 isolate_snapshot_instr 文件中,这不是原始的 arm 程序集,并且仅在 run-time 中使用 Flutter 引擎反序列化。您可以阅读更多相关信息 here