第一章 安卓aosp源码编译环境搭建
第二章 手机硬件参数介绍和校验算法
第三章 修改安卓aosp代码更改硬件参数
第四章 编译定制rom并刷机实现硬改(一)
第五章 编译定制rom并刷机实现硬改(二)
第六章 不root不magisk不xposed lsposed frida原生修改定位
第七章 安卓手机环境检测软件分享
第八章 硬改之设备画像
第九章 修改Art虚拟机对指定app的指定函数进行拦截(一)
第十章 修改Art虚拟机对指定app的指定函数进行拦截(二)
傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓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
//分别修改其中的函数。
先看第一个文件,主要是手机品牌型号等。
//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;
}
这个类提供了一系列获取手机与通讯相关的状态和信息的方法,包括手机的信息、手机卡的状态、电信网络的状态等。
//gedit frameworks/base/telephony/java/android/telephony/TelephonyManager.java
public 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("填你的值");
}
}
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;
}
wifi地址和蓝牙地址
//gedit frameworks/base/wifi/java/android/net/wifi/WifiInfo.java
public String getMacAddress() {
this.mMacAddress ="填你的值";
return this.mMacAddress;
}
wifi地址和蓝牙地址
//gedit frameworks/base/core/java/android/net/InterfaceConfiguration.java
public String getHardwareAddress() {
return new String("填你的值");
}
public void setHardwareAddress(String hwAddr) {
mHwAddr = new String("填你的值");
}
wifi地址和蓝牙地址
//gedit frameworks/base/core/java/android/bluetooth/BluetoothAdapter.java
public String getAddress() {
return new String("填你的值");
}
网络接口,字节数组方式返回地址
//gedit libcore/ojluni/src/main/java/java/net/NetworkInterface.java
public byte[] getHardwareAddress() throws SocketException
NetworkInterface 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镜像刷机。