Android反编译之各大手机厂商的系统(adb pull和Rom包)

前言:

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

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

  • 有指定系统的手机:手机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文件中。效果如下图所示:
这里写图片描述

拷贝成功后,打开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反编译的教程:

猜你喜欢

转载自blog.csdn.net/hexingen/article/details/80429653