适配Xiaomi HyperOS
This commit is contained in:
parent
a7fbe6264f
commit
8b2a13cfe8
@ -7,6 +7,7 @@
|
||||
<option name="testRunner" value="GRADLE" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleJvm" value="Android Studio default JDK" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="temurin-11" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
@ -1,9 +1,11 @@
|
||||
package run.evan.hotspotip;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import de.robv.android.xposed.IXposedHookLoadPackage;
|
||||
import de.robv.android.xposed.XC_MethodHook;
|
||||
import de.robv.android.xposed.XC_MethodReplacement;
|
||||
import de.robv.android.xposed.XposedBridge;
|
||||
import de.robv.android.xposed.XposedHelpers;
|
||||
@ -13,10 +15,27 @@ public class MainHook implements IXposedHookLoadPackage {
|
||||
@Override
|
||||
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
|
||||
if (loadPackageParam.packageName.equals("com.android.networkstack.tethering.inprocess")) {
|
||||
XposedBridge.log("Hotspot Ip init");
|
||||
XposedBridge.log("Hotspot IP init process="+loadPackageParam.packageName);
|
||||
XposedHelpers.findAndHookMethod("com.android.networkstack.tethering.PrivateAddressCoordinator", loadPackageParam.classLoader, "requestDownstreamAddress", "android.net.ip.IpServer", boolean.class, new XC_MethodReplacement() {
|
||||
@Override
|
||||
protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
|
||||
return buildPrivateAddressResponse(methodHookParam, loadPackageParam);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (loadPackageParam.packageName.equals("com.android.networkstack.tethering")) {
|
||||
XposedBridge.log("Hotspot IP init process="+loadPackageParam.packageName);
|
||||
XposedHelpers.findAndHookMethod("com.android.networkstack.tethering.PrivateAddressCoordinator", loadPackageParam.classLoader, "requestDownstreamAddress", "android.net.ip.IpServer",int.class, boolean.class, new XC_MethodReplacement() {
|
||||
@Override
|
||||
protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
|
||||
return buildPrivateAddressResponse(methodHookParam, loadPackageParam);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static Object buildPrivateAddressResponse(XC_MethodHook.MethodHookParam methodHookParam, XC_LoadPackage.LoadPackageParam loadPackageParam) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
|
||||
Class linkAddressClass = XposedHelpers.findClass("android.net.LinkAddress", loadPackageParam.classLoader);
|
||||
Constructor linkAddressConstructor = linkAddressClass.getConstructor(String.class);
|
||||
Class ipServerClass = XposedHelpers.findClass("android.net.ip.IpServer", loadPackageParam.classLoader);
|
||||
@ -33,7 +52,4 @@ public class MainHook implements IXposedHookLoadPackage {
|
||||
return linkAddressConstructor.newInstance("192.168.8.1/24");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,5 +2,6 @@
|
||||
<resources>
|
||||
<string-array name="scope">
|
||||
<item>android</item>
|
||||
<item>com.android.networkstack</item>
|
||||
</string-array>
|
||||
</resources>
|
Loading…
Reference in New Issue
Block a user