由于驱动器损坏,我丢失了 flutter 应用程序的源代码,但我的
debug.apk
在我的 Android 手机中。
如何反编译 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
请注意 - 您需要清除不相关/垃圾字符串中的“extracted_code.dart”。
尝试在“extracted_code.dart”中搜索“dart”、“import”、“void”等关键字,它将帮助您找到代码本身。
这是我的 Ubuntu 中的一个示例:
如果
apk
是在“release”模式下编译的,提取代码会更加困难,因为代码被编译到isolate_snapshot_instr文件中,该文件不是原始的arm程序集,并且仅在run-中使用Flutter引擎进行反序列化时间。您可以阅读更多相关信息这里
您可以使用github项目Blutter来反编译您的flutter应用程序。目前,这仅适用于 Android 版本的 Flutter 应用。它得到积极维护,但请注意它仍然非常有限。