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 shell
、cd system
、ls -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反编译之各大手机厂商的系统(adb pull和Rom包) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1728227796h1216134.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论