APK其实是一种压缩的格式
改为.zip后解压可看到结构
res资源文件夹里有各种分辨率下的图片,xml格式的布局文件等。
resources.arsc含有文字显示相关的资源,主要包括strings等,即某id对应的字符串。
classes.dex是java源码编译后的文件。
----------------------------------------------------------
反编译的目的有两种,学习并尝试修改源代码;简单改名或汉化。
对APK反编译以及回编译的工具基本都是基于一大神的 apktool,该工具本文最后亦有提供。
设置好java环境,下载apktool.jar,使用 java -jar apktool.jar 执行操作。
也可以下载自己操作系统相关文件后简化操作,比如windows下的apktool.bat。
cmd,进入目录,apktool便会出现各种参数说明,比如:
apktool d in.apk out // 将in.apk反编译,结果存入out文件夹
apktool b out // 将out文件夹下文件回编译为out.apk
反编译后classes.dex会形成smali文件夹,resource.arsc会以value文件夹放入res中,汉化改名等工作主要在strings.xml中完成。
回编译后,还需对apk进行重新签名。
下面提供的工具包,有apktool,以及国人对其改装以便更容易使用。包含了签名等工具。