admin 管理员组

文章数量: 887016

前言:

在实际开发中,手机适配是一个大问题,特别是适配各大手机厂商的系统,也是操碎了心。为了攻克一些难题,适当反编译系统是必不可少的。

获取各大手机厂商的系统源码,有以下几种方式:

  • 有指定系统的手机:手机USB连接,adb pull 拷贝出system文件夹的文件。
  • 没有指定系统的手机:去官网或者各大rom网站,下载各大手机厂商的rom系统包。
1. 通过Rom包获取手机厂商的系统源码

找rom网站或者对应需要系统的官网,下载rom包。这里以Oppo A33为例子,下载好对应rom包,如下图所示:

通过解压工具,打开可以看到rom包中system.img ,如下图所示:

安装rom助手,且打开解压后获取到的system.img,如下图所示:

解析后看到system文件下的全部文件,包含系统app和framework层的源码,如下图所示:

编译framework层中源码,在5.0以下,找到framework.jar和service.jar。而在5.0以上通常找到boot.oat和service.odex文件,需要进一步反编译。

2. 通过adb pulll方式获取手机中系统源码

用手机通过USB连接到电脑,打开开发者模式后,找到androidstudio 中sdk,再找到到adb.exe所在的文件夹,如下图所示:

在该文件夹上最顶端输入cmd,打开命令行。为了查看system文件夹下的文件,依次输入以下命令:adb shellcd systemls -a,就可以看到对应的文件,最后输入exit关闭本次操作。效果如下:


这里可以看到system文件夹下,包含了很多的文件,有framwork层源码,有系统app,有字体等等。

接下来,拷贝system中的framework源码,指定电脑存放路径,输入以下命令adb pull system/framework D:/system/jingli 。若是出现找不到目录,则改为D:\system\jingli.这里,存放在d盘中system文件夹下的jingli文件中。效果如下图所示:

拷贝成功后,打开jinglin文件夹,可以看到对应的源码,如下图所示:

若是想查看系统app的源码,也可以通过adb pull方式拷贝。系统app一般存在system的app和pri-app文件夹下

找到boot.oat和service.odex文件,如下图所示:

3. oat2dex反编译系统,jadx查看编译后的系统源码

oat2dex是一个非常强大系统源码反编译的工具,输入以下命令行可以查看到具体如何使用,如下所示:


这里可以看到,oat2dex工具可以生成odex文件,smali文件,dex文件。

接下来,将boot.oat和service.odex拷贝到oat2dex工具同一个文件下,输入命令进行反编译。

反编译boot.oat,获取framework层的源码,输入命令行java -jar oat2dex.jar boot boot.oat,如下所示:


查看编译成功的dex文件如下所示:

反编译service.odex,获取service层的源码,输入命令行java -jar oat2dex.jar odex services.odex,如下所示:

查看编译成功的dex文件如下所示:

通过jadx工具打开对应的dex文件,如下所示:

若是对某个手机上的launcher感兴趣,也可以反编译,这里以小辣椒的launcher为例子,打开如下:

若是感兴趣,可以点击下载,Android反编译工具包。


关于Android反编译的教程:

  • Android反编译之APK(apktool、dex2jar、jd、jadx)

本文标签: 各大 手机厂商 反编译 系统 Android