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