由于android系統(tǒng)開機(jī)向?qū)Ы缑姹容^特殊,會(huì)通過(guò)Settings.Global.DEVICE_PROVISIONED 屬性來(lái)控制记餐,刷完機(jī)第一次啟啟動(dòng)此值會(huì)默認(rèn)為0 ,開機(jī)向?qū)ЫY(jié)束后會(huì)設(shè)置為1,系統(tǒng)很多地方會(huì)根據(jù)此值來(lái)控制
opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java
DataEnabledSettings.java 中:
public boolean isProvisioning() {
? ? ? ? ?return Settings.Global.getInt(mResolver, Settings.Global.DEVICE_PROVISIONED, 0) == 0;
? ? ?}
? ? /**
? ? ? * In provisioning, we might want to have enable mobile data during provisioning. It depends
? ? ? * on value of Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED which is set by
? ? ? * setupwizard. It only matters if it's in provisioning stage.
? ? ?* @return whether we are enabling userData during provisioning stage.
? ? ? */
? ? public boolean isProvisioningDataEnabled() {
? ? ? ? ?final String prov_property = SystemProperties.get("ro.com.android.prov_mobiledata",
? ? ? ? ? ? ? ? ?"false");
? ? ? ? boolean retVal = "true".equalsIgnoreCase(prov_property);
? ? ? ? ?final int prov_mobile_data = Settings.Global.getInt(mResolver,
? ? ? ? ? ? ? ? Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? retVal ? 1 : 0);
? ? ? ? ?retVal = prov_mobile_data != 0;
? ? ? ? ?log("getDataEnabled during provisioning retVal=" + retVal + " - (" + prov_property
? ? ? ? ? ? ? ? ?+ ", " + prov_mobile_data + ")");
? ? ? ? ?return retVal;
? ? ?}
所以問(wèn)題就比較簡(jiǎn)單了系統(tǒng)給開了個(gè)后門:直接在開機(jī)向?qū)Ю锏谝粋€(gè)頁(yè)面初始化Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED 值為 1
如:
/**
? ? * 開機(jī)向?qū)芙缑婺荛_啟數(shù)據(jù)
? ? */
? ? private void startData() {
? ? ? ? Settings.Global.putInt(getContentResolver(), "device_provisioning_mobile_data", 1);
? ? }
快速驗(yàn)證通過(guò)adb 命令:adb?shell?settings?put?global?device_provisioning_mobile_data?1? 直接設(shè)置到數(shù)據(jù)庫(kù)中V奘亍!!