我需要从apk文件中提取源代码。我知道apktool并且多次使用它。该方法的问题是提取代码更改一点点,并且所有资源加载都具有静态值,如加载布局。我也有res文件夹,但我无法确定加载哪个布局。
我需要可靠的解决方案,也可以使用生成的R提取完整的源代码。我认为这是可能的。
答案 0 :(得分:1)
实际上不可能按照你想要的方式做到这一点。
原因如下:.apk
是链中的最终工件: java source(.java
)> java字节码(.class
)> dalvik字节码(.dex
)>应用程序包(.apk
)
你可以从.dex
中提取.apk
而不会丢失(类似于从.class
中提取.jar
,因为.jar
只是zip存档),但是这样不会帮助您获得完全相同的来源,因为从.java
到.class
再到.dex
的编译不可逆(一般情况下)。< / p>
UPDATE :即使是现代的java字节码反编译工具(如jad)有时也无法生成字节码的有效来源(发生在我身上几次),更不用说dalvik字节码更加“通过编译过程扭曲。