Skip to content

Latest commit

 

History

History
103 lines (69 loc) · 3.73 KB

README.md

File metadata and controls

103 lines (69 loc) · 3.73 KB

SoftApHelper

SoftAp static server IP(v4) for Android P-T (Xposed)

下载

Release

作用域

推荐使用LSPosed指定作用域(已配置推荐作用域)

安卓11及以下

系统框架

安卓12及以上(以及部分安卓11设备)

系统框架(一般只钩这个就可以了,勾选Tethering是保险起见)

com.google.android.networkstack.tethering.inprocess

com.android.networkstack.tethering.inprocess

com.google.android.networkstack.tethering

com.android.networkstack.tethering

连接测试&问题反馈

开启热点后,手机端使用ifconfig命令查看ip(或usb连接电脑后,进入adb shell执行)。或使用其他机器连接热点后,ping 192.168.43.1

如果插件未生效,作用域可尝试勾选更多包名包含networkstack.tethering的应用。

若仍未生效,请上传设备执行ifconfig的结果,以及/apex/com.android.tethering/priv-app/下的apk到Issues

注意

网络前缀冲突会导致网络连接失败(Android 10及以下)或仍使用随机IP(Android 11及以上,日志提示isConflictPrefix)。

wifi热点为192.168.43.1,同时提供了192.168.1.1版本(使用43.1连不上的先试试这个)。

支持设置WIFIUSB蓝牙的热点IP(Android 11及以上)。

Type IP
WIFI WIFI_HOST_IFACE_ADDR
USB 192.168.42.1
BlueTooth 192.168.44.1

Todo

  • 自定义ip
  • 自定义生效的网络类型

原理

安卓9 固定Wifi热点IP (Xposed)

安卓10、11 固定Wifi热点IP (Xposed)

安卓12 固定Wifi热点IP (Xposed)

Hook点

安卓9

com.android.server.connectivity.tethering.TetherInterfaceStateMachinegetRandomWifiIPv4Address函数。

TetherInterfaceStateMachine.java#259

private String getRandomWifiIPv4Address()

安卓10

android.net.ip.IpServergetRandomWifiIPv4Address函数。

IpServer.java#469

private String getRandomWifiIPv4Address()

安卓11

android.net.ip.IpServerrequestIpv4Address函数。

IpServer.java#645

private LinkAddress requestIpv4Address()

由于该函数还被用于其他方式的网络共享及更换前缀,所以需要判断网络类型(mInterfaceType == TETHERING_WIFI)和调用者(遍历堆栈查找configureIPv4),最后进行替换。

安卓12

android.net.ip.IpServerrequestIpv4Address函数。

IpServer.java#655

private LinkAddress requestIpv4Address(final boolean useLastAddress)

安卓13

Hook点同安卓12

IpServer.java#664

private LinkAddress requestIpv4Address(final boolean useLastAddress)

感谢

@mmfmkuang

@dsfgdadg