反编译工具:
apktool.bat
apktool.jar
运行环境:
window 10
第一步:
先下载工具,并解压。我放到了F盘的根目录,文件名为apktool。即: F:/apktool
下载地址:apktool 下载
第二步:
将需要反编译的apk文件,复制到该目录下。例如 demo.apk
第三步:
打开cmd,并定位到 apktool 文件夹下
执行命令 :apktool d demo.apk (注:demo :.apk 名称)
d 即 decode,对demo.apk 文件进行解码
其他命令:
-f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
-o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
-s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
-r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)
执行完命令之后,会显示如下效果:
然后后会在该目录下生成demo 文件夹:
到这里反编译就结束成功。
接下来简单分析一下生成的文件目录:
lib : 即包目录,存放so 库
original:原始的AndroidManifest.xml文件,
res: 存放的资源文件
smail: 即代码文件,查看apk代码,从这里入手。文件已 .smail 结尾。内部是 smail 汇编语言
想要学习smail 语言,可以比较着学习,即,将java文件转为 smail文件。
可以参考:android Studio javaTosmial : https://blog.youkuaiyun.com/lijia1201900857/article/details/85775374
反编译完成之后,就可以根据你的需求对代码进行修改了,修改完成之后,还需要对修改的文件,回编译成apk文件
请看下节:反编译之回编译