众所周知,APK代码要通过反编译后才可查看。这里介绍下我常用的方法(Windows系统):
方法一、apk反编译为类似Java源代码
1、将apk文件重命名为.rar格式的文件
2、解压缩rar,得到dex/androidmanifest等文件
3、将classes.dex文件复制到dex2jar中,与dex2jar.bat同一目录。
(如果dex2jar.bat目录中有重名文件,则把要拷贝的classes.dex文件重命名再拷贝)
将classes.dex文件拖到dex2jar.bat文件上,则生成XXX_dex2jar.jar文件,使用jdgui将其打开,就看见源码了。
若应用有多个class.dex文件,则每个class.dex都是如此操作。
4、对于解压后得到的AndroidManifest.xml文件,因为该文件已经被压缩了,所以不能直接打开。
将其拷贝到AXMLPrinter2.jar的所在目录中,
在cmd窗口中,首先将当前目录cd到AXMLPrinter2.jar所在的目录,然后执行命令
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt
将AndroidManifest.xml转化为txt文件。
阅读txt文件的软件多了去了,我常用notepad++。
扩展知识:
jar文件查看方法:
jar文件使用jdgui可以直接查看
方法二、apk编译为smali语言
使用apktool工具中apktool d xxx.apk -o outputFolder命令,将apk反编译为smali语言,并放置在outputFolder文件夹中。
不过我第一次执行该命令后,失败,提示:
Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars
c file
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:56)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibRes
ources.java:491)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java
原来是因为apktool不是新版本。使用新版本就OK了。
新版本下载路径:
https://ibotpeaches.github.io/Apktool/install/