Android反编译系统应用

在平常开发中,有的时候须要获取系统APK学(po)习(jie),这里主要记录一下获取系统APK流程,该流程在Android 8.0如下已经验证过。java

一.找到系统APK odex 文件

系统APK安装的时候会将dex从APK中提取出来而且进行一波优化生成odex文件,dex文件转化为odex文件主要的缘由为优化和提早验证dex文件以提升应用运行速度。系统APK保存在/system/app目录中,直接到该目录下找对应APK,这里举例Launcher,进入Launcher目录下,有以下文件:Launcher.apk和oat文件夹,其中Launcher.apk文件中只有资源文件,没有dex文件,dex文件被优化为odex文件保存在oat目录中,将Launcher.apk和odex取出来:
bash

adb pull /system/app/Launcher/Launcher.apk
adb pull /system/app/Launcher/oat/arm64/Launcher.odex复制代码

二.odex转dex

odex转为dex须要2个工具jar:smali.jar 和 baksmali.jar:
  • smali.jar:smali文件转为dex文件
  • baksmali.jar:odex文件转为smali文件
首先须要将odex文件转为smali文件:

java -jar baksmali.jar deodex Launcher.odex复制代码

上面命令执行后通常都会失败,通常都会报错说找不到其余oat文件,如:
app

Cannot find dependency boot-telephony-ext.oat in null复制代码

通常系统APK都会依赖framwork层一些公共功能库,这样能够防止系统APK被盗运行在其余ROM上,须要到framwork层取到对应oat文件便可:
工具

adb pull /system/framework/arm64/boot-telephony.ext.oat复制代码

当获取全部须要的oat文件后,再次执行命令,反编译成功后会生成out目录,目录中均是smali文件。
将smali文件转为dex文件:

java -jar smali-2.2.6.jar assemble out/ -o class.dex复制代码

执行上述命令后就能够获得dex文件了,这样就完成了将系统odex文件转化为dex文件的过程了。优化

三.反编译dex

这里直接使用jadx打开class.dex便可 。spa

四.总结

目前厂商会定制各类应用,其中最让人吐槽的就是自定义权限功能,没法经过API来获取某一自定义权限的状态,经过反编译系统APK看看能不能找到漏洞来判断,下一篇将会介绍实际破解过程。code

相关文章
相关标签/搜索