|
@@ -1,5 +1,7 @@
|
|
|
package com.example.modifiermodule;
|
|
package com.example.modifiermodule;
|
|
|
|
|
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+
|
|
|
import de.robv.android.xposed.XC_MethodHook;
|
|
import de.robv.android.xposed.XC_MethodHook;
|
|
|
import de.robv.android.xposed.XposedHelpers;
|
|
import de.robv.android.xposed.XposedHelpers;
|
|
|
import de.robv.android.xposed.callbacks.XC_LoadPackage;
|
|
import de.robv.android.xposed.callbacks.XC_LoadPackage;
|
|
@@ -16,15 +18,17 @@ public class HookSystem extends BaseHook {
|
|
|
XposedHelpers.findAndHookMethod(DeviceIdentifiersPolicy, "getSerial", new XC_MethodHook() {
|
|
XposedHelpers.findAndHookMethod(DeviceIdentifiersPolicy, "getSerial", new XC_MethodHook() {
|
|
|
@Override
|
|
@Override
|
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
- log("spoof getSerial");
|
|
|
|
|
- param.setResult(getProperty(PROP_SERIAL, ""));
|
|
|
|
|
|
|
+ String serial = getProperty(PROP_SERIAL, "");
|
|
|
|
|
+ log(String.format("getSerial(): %s -> %s", param.getResult(), serial));
|
|
|
|
|
+ param.setResult(serial);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
XposedHelpers.findAndHookMethod(DeviceIdentifiersPolicy, "getSerialForPackage", String.class, String.class, new XC_MethodHook() {
|
|
XposedHelpers.findAndHookMethod(DeviceIdentifiersPolicy, "getSerialForPackage", String.class, String.class, new XC_MethodHook() {
|
|
|
@Override
|
|
@Override
|
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
- log("spoof getSerialForPackage");
|
|
|
|
|
- param.setResult(getProperty(PROP_SERIAL, ""));
|
|
|
|
|
|
|
+ String serial = getProperty(PROP_SERIAL, "");
|
|
|
|
|
+ log(String.format("getSerialForPackage(%s, %s): %s -> %s", param.args[0], param.args[1], param.getResult(), serial));
|
|
|
|
|
+ param.setResult(serial);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -39,7 +43,7 @@ public class HookSystem extends BaseHook {
|
|
|
if (param.hasThrowable()) return;
|
|
if (param.hasThrowable()) return;
|
|
|
Class<?> cls = (Class<?>) param.getResult();
|
|
Class<?> cls = (Class<?>) param.getResult();
|
|
|
String name = cls.getName();
|
|
String name = cls.getName();
|
|
|
- log("system_server loadClassFromLoader: " + param.args[0] + " " + name);
|
|
|
|
|
|
|
+ log(String.format("loadClassFromLoader(%s, %s)", param.args[0], param.args[1]));
|
|
|
|
|
|
|
|
if (name.equals("com.android.server.wifi.WifiService")) {
|
|
if (name.equals("com.android.server.wifi.WifiService")) {
|
|
|
ClassLoader classLoader = (ClassLoader) param.args[1];
|
|
ClassLoader classLoader = (ClassLoader) param.args[1];
|
|
@@ -47,8 +51,13 @@ public class HookSystem extends BaseHook {
|
|
|
XposedHelpers.findAndHookMethod(WifiServiceImpl, "getFactoryMacAddresses", new XC_MethodHook() {
|
|
XposedHelpers.findAndHookMethod(WifiServiceImpl, "getFactoryMacAddresses", new XC_MethodHook() {
|
|
|
@Override
|
|
@Override
|
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
|
|
+ String[] old = (String[]) param.getResult();
|
|
|
String[] macs = new String[]{getProperty(PROP_MAC, "")};
|
|
String[] macs = new String[]{getProperty(PROP_MAC, "")};
|
|
|
- log("spoof getFactoryMacAddresses: " + macs[0]);
|
|
|
|
|
|
|
+ if (old == null) {
|
|
|
|
|
+ log(String.format("getFactoryMacAddresses(): null -> %s", param.getResult(), macs[0]));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log(String.format("getFactoryMacAddresses(): %s -> %s", StringUtils.join(old, ","), macs[0]));
|
|
|
|
|
+ }
|
|
|
param.setResult(macs);
|
|
param.setResult(macs);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -58,8 +67,9 @@ public class HookSystem extends BaseHook {
|
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
String mac = getProperty(PROP_MAC, "");
|
|
String mac = getProperty(PROP_MAC, "");
|
|
|
String bssid = getProperty(PROP_BSSID, "");
|
|
String bssid = getProperty(PROP_BSSID, "");
|
|
|
- log("spoof getConnectionInfo: " + mac + " " + bssid);
|
|
|
|
|
- param.setResult(mac);
|
|
|
|
|
|
|
+ log(String.format("getConnectionInfo(%s, %s)", param.args[0], param.args[1]));
|
|
|
|
|
+ log(String.format(" mac: %s -> %s", XposedHelpers.getObjectField(param.getResult(), "mMacAddress"), mac));
|
|
|
|
|
+ log(String.format(" bssid: %s -> %s", XposedHelpers.getObjectField(param.getResult(), "mBSSID"), bssid));
|
|
|
XposedHelpers.setObjectField(param.getResult(), "mMacAddress", mac);
|
|
XposedHelpers.setObjectField(param.getResult(), "mMacAddress", mac);
|
|
|
XposedHelpers.setObjectField(param.getResult(), "mBSSID", bssid);
|
|
XposedHelpers.setObjectField(param.getResult(), "mBSSID", bssid);
|
|
|
}
|
|
}
|
|
@@ -72,4 +82,6 @@ public class HookSystem extends BaseHook {
|
|
|
log("SystemProperties not found");
|
|
log("SystemProperties not found");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|