package com.lody.virtual.client.hook.patchs.wifi;
import android.content.Context;
import android.net.wifi.WifiInfo;
import com.lody.virtual.client.core.VirtualCore;
import com.lody.virtual.client.hook.base.Patch;
import com.lody.virtual.client.hook.base.PatchBinderDelegate;
import com.lody.virtual.client.hook.base.StaticHook;
import com.lody.virtual.client.hook.delegate.PhoneInfoDelegate;
import com.lody.virtual.helper.utils.Reflect;
import java.lang.reflect.Method;
import mirror.android.net.wifi.IWifiManager;
/**
* @author Lody
*
* @see android.net.wifi.WifiManager
*/
@Patch({GetBatchedScanResults.class, GetScanResults.class, SetWifiEnabled.class})
public class WifiManagerPatch extends PatchBinderDelegate {
public WifiManagerPatch() {
super(IWifiManager.Stub.TYPE, Context.WIFI_SERVICE);
}
@Override
protected void onBindHooks() {
super.onBindHooks();
addHook(new StaticHook("getConnectionInfo") {
@Override
public Object call(Object who, Method method, Object... args) throws Throwable {
WifiInfo info = (WifiInfo) super.call(who, method, args);
if (info != null) {
if (info.getMacAddress() != null) {
PhoneInfoDelegate phoneInfoDelegate = VirtualCore.get().getPhoneInfoDelegate();
if (phoneInfoDelegate != null) {
try {
Reflect.on(info).set("mMacAddress", phoneInfoDelegate.getMacAddress((String) Reflect.on(info).get("mMacAddress")));
} catch (Exception ignored) {
}
}
}
}
return info;
}
});
}
}