由于驱动器损坏,我丢失了flutter应用程序的源代码,但是我的android手机中有debug.apk。 谁能告诉我如何反编译Flutter apk以获得源代码。 我尝试使用反编译器对其进行反编译,但未提供我的源代码 因为flutter的源代码是dart语言。
答案 0 :(得分:1)
如果您的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是在“发行”模式下编译的,则提取代码将更加困难,因为代码已编译到isolate_snapshot_instr文件中,该文件不是原始的程序集,并且只能在运行时使用Flutter引擎反序列化-时间。您可以详细了解here
答案 1 :(得分:0)
Flutter使用Dart语言编译为本机(ARM)代码,而不是像Java或.NET这样的字节码,因此很难从中获取源代码。从理论上讲,从二进制文件中,我们只能获得ARM汇编代码或类似的代码。我不知道有什么工具可以将ARM程序集转换为Flutter代码。
很明显,没有Java Decompiler可以反编译或理解Flutter二进制文件。