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

前言:

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

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

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

1. 通过Rom包获取手机厂商的系统源码

找rom网站或者对应需要系统的官网,下载rom包。这里以Oppo A33为例子,下载好对应rom包,如下图所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第1张图片

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第2张图片

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第3张图片

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第4张图片

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

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

用手机通过USB连接到电脑,打开开发者模式后,找到androidstudio 中sdk,再找到到adb.exe所在的文件夹,如下图所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第5张图片

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第6张图片
这里可以看到system文件夹下,包含了很多的文件,有framwork层源码,有系统app,有字体等等。

接下来,拷贝system中的framework源码,指定电脑存放路径,输入以下命令adb pull system/framework D:/system/jingli。这里,存放在d盘中system文件夹下的jingli文件中。效果如下图所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第7张图片

拷贝成功后,打开jinglin文件夹,可以看到对应的源码,如下图所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第8张图片

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

找到boot.oat和service.odex文件,如下图所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第9张图片

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第10张图片

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

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第11张图片
这里可以看到,oat2dex工具可以生成odex文件,smali文件,dex文件。

接下来,将boot.oat和service.odex拷贝到oat2dex工具同一个文件下,输入命令进行反编译。
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第12张图片

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第13张图片
查看编译成功的dex文件如下所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第14张图片

反编译service.odex,获取service层的源码,输入命令行java -jar oat2dex.jar odex services.odex,如下所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第15张图片

查看编译成功的dex文件如下所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第16张图片

通过jadx工具打开对应的dex文件,如下所示:
Android反编译之各大手机厂商的系统(adb pull和Rom包)_第17张图片

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

Android反编译之各大手机厂商的系统(adb pull和Rom包)_第18张图片

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


关于Android反编译的教程:

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

你可能感兴趣的:(Android,ROM适配之路,android,逆向工程,android反编译,oat2dex,系统反编译,framework编译)