三、修改安卓aosp代码更改硬件参数

系列文章目录

第一章 安卓aosp源码编译环境搭建
第二章 手机硬件参数介绍和校验算法
第三章 修改安卓aosp代码更改硬件参数
第四章 编译定制rom并刷机实现硬改(一)
第五章 编译定制rom并刷机实现硬改(二)
第六章 不root不magisk不xposed lsposed frida原生修改定位
第七章 安卓手机环境检测软件分享
第八章 硬改之设备画像
第九章 修改Art虚拟机对指定app的指定函数进行拦截(一)
第十章 修改Art虚拟机对指定app的指定函数进行拦截(二)


文章目录

  • 系列文章目录
  • 前言
  • 需要修改的文件
    • Build.java
    • TelephonyManager.java
    • Settings.java
    • WifiInfo.java
    • InterfaceConfiguration.java
    • BluetoothAdapter.java
    • BluetoothAdapter.java
  • 补充
  • 视频教程


前言

傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓aosp源码定制自己的系统


需要修改的文件

aosp代码版本:android-8.1.0_r1 OPM1.171019.011

1: frameworks/base/core/java/android/os/Build.java
2: frameworks/base/telephony/java/android/telephony/TelephonyManager.java
3: frameworks/base/core/java/android/provider/Settings.java
4: frameworks/base/wifi/java/android/net/wifi/WifiInfo.java
5: frameworks/base/core/java/android/net/InterfaceConfiguration.java
6: libcore/ojluni/src/main/java/java/net/NetworkInterface.java
7: frameworks/base/core/java/android/bluetooth/BluetoothAdapter.iava
8: build/core/Makefile
9: build/make/tools/buildinfo.sh
//分别修改其中的函数。

Build.java

先看第一个文件,主要是手机品牌型号等。

//gedit frameworks/base/core/java/android/os/Build.java
public static String getSerial() {return new String("填你的值");
}// android.os.Build 所涉及的全部值
private static String getString(String property) {String result = SystemProperties.getlproperty, UNKNOWN);if (property.equals("ro.product.brand") || property.equals("ro.product.manufacturer")) {result = new Strina("填你的值");} else if (property.equals("ro.product.model")) {result = new String("填你的值");} else if (poroperty.equalsl("ro.product name") || property.equals( "ro.product.board") || property.equals("ro,product device")||property.equals( "ro.build.product")){result = new String("填你的值");} else if (property.equals("ro.build.id")) {result = new String("填你的值");} else if (property.equals("ro.build.version.incremental")) {result = new String("填你的值");} else if (propertyequals("ro.serialno")) (result = new String("填你的值");
。。。。。}return result;}

TelephonyManager.java

这个类提供了一系列获取手机与通讯相关的状态和信息的方法,包括手机的信息、手机卡的状态、电信网络的状态等。

//gedit frameworks/base/telephony/java/android/telephony/TelephonyManager.javapublic String getDeviceld() {return new String("填你的值");}public String getDeviceld(int slotlndex) {if (slotlndex == 0) {return new String("填你的值");} else{ return new String("填你的值");}
}public String getlmei(int slotlndex) {if (slotlndex == 0) {return new String("填你的值"); } else {return new String("填你的值");}
}public String getMeid(int slotlndex) {if (slotlndex == 0) {return new String("填你的值");} else {return new String("填你的值");}
}public String getSubscriberld(int subld) {if (subld == 0) {return new String("填你的值");} else {return new String("填你的值");}
}

Settings.java

android id

//gedit frameworks/base/core/java/android/provider/Settings.java
public static String getString(ContentResolver resolver, String name) {String result = getStringForUser(resolver, name, UserHandle.myUserld());if (name.equals("android id")) {result = new String("填你的值");}return result;
}

WifiInfo.java

wifi地址和蓝牙地址

//gedit frameworks/base/wifi/java/android/net/wifi/WifiInfo.java
public String getMacAddress() {this.mMacAddress ="填你的值";return this.mMacAddress;
}

InterfaceConfiguration.java

wifi地址和蓝牙地址

//gedit frameworks/base/core/java/android/net/InterfaceConfiguration.java 
public String getHardwareAddress() {return new String("填你的值");
}
public void setHardwareAddress(String hwAddr) {mHwAddr = new String("填你的值");
}

BluetoothAdapter.java

wifi地址和蓝牙地址

//gedit frameworks/base/core/java/android/bluetooth/BluetoothAdapter.java 
public String getAddress() {return new String("填你的值");
}

BluetoothAdapter.java

网络接口,字节数组方式返回地址

//gedit libcore/ojluni/src/main/java/java/net/NetworkInterface.java
public byte[] getHardwareAddress() throws SocketExceptionNetworkInterface ni = getByName(name);if (name.equalslgnoreCase("wlan0")){bytell mymac = new byte[6];mymac[0] = 72;mymac[1] = 44;mymac[2] = -96;mymac[3] = 97;mymac[4] = 121;mymac[5] = 35;return mymac;
}if (ni == null) {throw new SocketException("Networklnterface doesn't exist anymore");}return ni.hardwareAddr;

补充

另外,品牌型号除了在Build.java修改外,还需要在下面两个文件中修改。

       //gedit build/core/Makefile//gedit build/make/tools/buildinfo.sh
TARGET_BUILD_FLAVOR  
TARGET_DEVICE
PRODUCT_NAME
PRODUCT_BRAND
PRODUCT_DEFAULT_LOCALE
PRODUCT_DEFAULT_WIFI_CHANNELS
PRODUCT_MODEL
PRODUCT_MANUFACTURER

当完成以上修改后,再次恭喜你,需要修改的地方已经全部修改好了,下面我们就开始编译生成ROM镜像刷机。

视频教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 中“1000==1000”为false,而”100==100“为true?

如果你运行下面的代码: Integer a 1000, b 1000; System.out.println(a b);//1Integer c 100, d 100; System.out.println(c d);//2你会得到: false true基本知识:我们知道,如果两个引用指向同一个对象,用表示它们是相等的。如果两…

【JavaSE笔记】类和对象(万字详解)

一、前言 Java是一种广泛应用于各个领域的编程语言,它的面向对象编程范式使得它成为了当今软件开发的主要选择之一。通过面向对象编程,Java使程序员能够将代码组织成易于理解和维护的结构,并且在开发大型复杂的应用程序时提供了许多便利。 …

FDM3D打印系列——Blue Mary

大家好,我是阿赵。   这次打印一个拳皇里面的Blue Mary。   打印这个模型的原因,是看到有网友说这个模型用FDM打印不出来,有些人评论说要光固化才行。所以我也想试试。结果是成功的。 一、打印过程 这个模型是分为了5个部分&#xff0c…

uniapp轮播图制作

在Uniapp中实现轮播图可以使用swiper组件&#xff0c;它是一个常用的轮播组件。以下是一个简单的示例&#xff1a; 在你的组件模板文件中&#xff0c;添加swiper组件&#xff0c;并设置相应的属性和事件处理方法&#xff1a; <template><view><swiper autopla…

守护线程?

守护线程&#xff08;Daemon Thread&#xff09;是一种特殊类型的线程。它与普通线程&#xff08;用户线程&#xff09;的区别&#xff1a; 生命周期&#xff1a; 守护线程的生命周期依赖于其他线程&#xff0c;当所有的用户线程都结束时&#xff0c;守护线程会随之自动终止。…

关于老项目从JDK8升级到JDK17所需要注意的细节

文章目录 ☀️1.关于老项目从JDK8升级到JDK17所需要注意的细节&#x1f338;1.1.更新JDK&#x1f338;1.2.修改Idea中的JDK版本&#x1f338;1.3.关于修改过程中遇到的异常&#x1f338;1.4.IDEA工具栏操作Maven正常&#xff0c;但使用mvn命令运行就报错 ☀️1.关于老项目从JDK…

基于SpringbootShiro实现的CAS单点登录

概述 单点登录&#xff08;Single Sign On,SSO&#xff09;是一种登录管理机制&#xff0c;主要用于多系统集成&#xff0c;即在多个系统中&#xff0c;用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个&#xff0c;无须多次登录。常见的例子就是&#xff0c;…

MCU软核 3. Xilinx Artix7上运行cortex-m3软核

0. 环境 - win10 vivado 2018.3 keil mdk - jlink - XC7A35TV12 1. 下载资料 https://keilpack.azureedge.net/pack/Keil.V2M-MPS2_DSx_BSP.1.1.0.pack https://gitee.com/whik/cortex_m3_on_xc7a100t 2. vivado 2018 Create Project -> Next -> -> Project n…

dp(3) - 背包问题(上)

目录 简论 关于dp问题 : ​编辑 0-1背包问题 定义 : 例题 : 题面 : ​编辑 思路 : 代码(二维) : 代码(一维优化版): 完全背包问题 题目链接 : 题面 : ​编辑 思路 : 代码(朴素) : 代码(优化) : 代码(一维优化) : 多重背包问题 题目链接 : 题面 : ​编辑 …

软件测试常用的功能测试方法

功能测试 功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。针对Web系统的常用测试方法如下&#xff1a; 1. 页面链接检查&#xff1a;每一个链接是否都有对应的页面&#xff0c;并且页面之…

如何判断linux 文件(或lib)是由uclibc还是glibc编译出来的?

工作中使用的编译环境有2套编译器&#xff0c;一个是glibc&#xff0c;一个是uclibc。 有些项目使用的glibc编译的lib&#xff0c;和使用uclibc编译的工程&#xff0c;在一起就会出现reference的编译错误如下&#xff1a; 那和如何来判断一个文件是由哪个编译器编译的呢&#…

软件工程评级B-,有大量调剂名额。北京联合大学考情分析

北京联合大学(B-) 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1239字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 北京…

进程,线程,并发相关入门

进程与线程的简单理解 进程是一个独立的执行单元&#xff0c;它拥有自己的内存空间、文件句柄和系统资源.进程是操作系统层面的,每个应用运行就是一个进程.进程之间通常是隔离的&#xff0c;它们不能直接访问对方的内存空间&#xff0c;必须通过进程间通信&#xff08;IPC&…

详细解释HiveSQL执行计划

一、前言 Hive SQL的执行计划描述SQL实际执行的整体轮廓&#xff0c;通过执行计划能了解SQL程序在转换成相应计算引擎的执行逻辑&#xff0c;掌握了执行逻辑也就能更好地把握程序出现的瓶颈点&#xff0c;从而能够实现更有针对性的优化。此外还能帮助开发者识别看似等价的SQL其…

前端面试话术集锦第 12 篇:高频考点(Vue常考基础知识点)

这是记录前端面试的话术集锦第十二篇博文——高频考点(Vue常考基础知识点),我会不断更新该博文。❗❗❗ 这一章节我们将来学习Vue的一些经常考到的基础知识点。 1. 生命周期钩子函数 在beforeCreate钩子函数调用的时候,是获取不到props或者data中的数据的,因为这些数据的…

log4j2漏洞复现

log4j2漏洞复现 漏洞原理 log4j2框架下的lookup查询服务提供了{}字段解析功能&#xff0c;传进去的值会被直接解析。例如${sys:java.version}会被替换为对应的java版本。这样如果不对lookup的出栈进行限制&#xff0c;就有可能让查询指向任何服务&#xff08;可能是攻击者部署…

MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置

MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置 一个完整的Sentinel模具保护解决方案包括一到四台冲击式摄像机、专用红外LED照明和镜头、Sentinel软件以及所有与模压机连接的必要互连组件。摄像机支架基于磁性&#xff0c;可快速、安全、灵活地部署。此外&#xff0c;一个…

部署ik分词器

部署ik分词器 案例版本&#xff1a;elasticsearch-analysis-ik-8.6.2 ​ ES默认自带的分词器对中文处理不够友好&#xff0c;创建倒排索引时可能达不到我们想要的结果&#xff0c;然而IK分词器能够很好的支持中文分词 ​ 因为是集群部署&#xff0c;所以每台服务器中的ES都需…

unity 使用Photon进行网络同步

Pun使用教程 第一步&#xff1a;请确保使用的 Unity 版本等于或高于 2017.4&#xff08;不建议使用测试版&#xff09;创建一个新项目。 第二步&#xff1a;打开资源商店并找到 PUN 2 资源并下载/安装它。 导入所有资源后&#xff0c;让 Unity 重新编译。 第三步&#xf…

Python中Mock和Patch的区别

前言&#xff1a; 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 在测试并行开发&#xff08;TPD&#xff09;中&#xff0c;代码开发是第一位的。 尽管如此&#xff0c;我们还是要写出开发的测试&#xff0c…