|
|
@@ -27,40 +27,44 @@ public class HookSystem extends BaseHook {
|
|
|
param.setResult(getProperty(PROP_SERIAL, ""));
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
- XposedHelpers.findAndHookMethod(ClassLoader.class, "loadClass", String.class, new XC_MethodHook() {
|
|
|
- @Override
|
|
|
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
- if (param.hasThrowable()) return;
|
|
|
- Class<?> cls = (Class<?>) param.getResult();
|
|
|
- String name = cls.getName();
|
|
|
- log("system_server loadClass: " + name);
|
|
|
- }
|
|
|
- });
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- Class<?> WifiServiceImpl = XposedHelpers.findClass("com.android.server.wifi.WifiServiceImpl", lpparam.classLoader);
|
|
|
- XposedHelpers.findAndHookMethod(WifiServiceImpl, "getFactoryMacAddresses", new XC_MethodHook() {
|
|
|
+ Class<?> SystemServiceManager = XposedHelpers.findClass("com.android.server.SystemServiceManager", lpparam.classLoader);
|
|
|
+ XposedHelpers.findAndHookMethod(SystemServiceManager, "loadClassFromLoader", String.class, ClassLoader.class, new XC_MethodHook() {
|
|
|
@Override
|
|
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
- String[] macs = new String[]{getProperty(PROP_MAC, "")};
|
|
|
- log("spoof getFactoryMacAddresses: " + macs[0]);
|
|
|
- param.setResult(macs);
|
|
|
- }
|
|
|
- });
|
|
|
+ if (param.hasThrowable()) return;
|
|
|
+ Class<?> cls = (Class<?>) param.getResult();
|
|
|
+ String name = cls.getName();
|
|
|
+ log("system_server loadClassFromLoader: " + param.args[0] + " " + name);
|
|
|
|
|
|
- XposedHelpers.findAndHookMethod(WifiServiceImpl, "getConnectionInfo", String.class, String.class, new XC_MethodHook() {
|
|
|
- @Override
|
|
|
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
- String mac = getProperty(PROP_MAC, "");
|
|
|
- String bssid = getProperty(PROP_BSSID, "");
|
|
|
- log("spoof getConnectionInfo: " + mac + " " + bssid);
|
|
|
- param.setResult(mac);
|
|
|
- XposedHelpers.setObjectField(param.getResult(), "macAddress", mac);
|
|
|
- XposedHelpers.setObjectField(param.getResult(), "mBSSID", bssid);
|
|
|
+ if (name.equals("com.android.server.wifi.WifiService")) {
|
|
|
+ ClassLoader classLoader = (ClassLoader) param.args[1];
|
|
|
+ Class<?> WifiServiceImpl = XposedHelpers.findClass("com.android.server.wifi.WifiServiceImpl", classLoader);
|
|
|
+ XposedHelpers.findAndHookMethod(WifiServiceImpl, "getFactoryMacAddresses", new XC_MethodHook() {
|
|
|
+ @Override
|
|
|
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
+ String[] macs = new String[]{getProperty(PROP_MAC, "")};
|
|
|
+ log("spoof getFactoryMacAddresses: " + macs[0]);
|
|
|
+ param.setResult(macs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ XposedHelpers.findAndHookMethod(WifiServiceImpl, "getConnectionInfo", String.class, String.class, new XC_MethodHook() {
|
|
|
+ @Override
|
|
|
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
|
|
+ String mac = getProperty(PROP_MAC, "");
|
|
|
+ String bssid = getProperty(PROP_BSSID, "");
|
|
|
+ log("spoof getConnectionInfo: " + mac + " " + bssid);
|
|
|
+ param.setResult(mac);
|
|
|
+ XposedHelpers.setObjectField(param.getResult(), "mMacAddress", mac);
|
|
|
+ XposedHelpers.setObjectField(param.getResult(), "mBSSID", bssid);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
} catch (Exception e) {
|