最近想学习APK反编译,在网上找了一圈教程之后发现全都是:
1.将APK后缀改成.zip解压看结构
2.用apktool反编译APK
apktool d ***.apk反编译
3.在解压出来的文件夹中拿到classes.dex
4.用dex2jar将classes.dex编译成源码,会生成classes_dex2jar.jar文件
dex2jar.bat classes.dex
5.用jd-gui打开classes_dex2jar.jar查看源码
6.使用baksmali工具将classes.dex转为smali文件
java -jar baksmali.jar -x classes.dex
在生成的out文件夹中找到要修改的smali文件,修改smali源码
接下来就是生成新的classes.dex文件,替换原来apk中的classes.dex文件,重新打包,重新签名,卸载手机上原来的APK,安装修改后的APK一系列的操作,对于想修改自己写的APK做反编译学习来说很多步骤都是繁琐没有必要的,都会增加新手的学习成本。实际上,如果只是想入门了解怎么对一个APK反编译修改源码再安装,只需要4步。
前期准备:把APK从手机导到电脑上
adb devices //确认设备连接
adb shell pm list package //找到APK的包名,实际上自己知道把APK从手机导到电脑上可省略这步
adb shell pm path com.example.resource//找到这个包在手机上安装的位置
adb pull +apk位置:/data/路径/路径resource.apk base/apks)【指定保存在电脑的位置】 //把APK从手机导到电脑上
第一步:反编译APK