Skip to content

Commit fe87e43

Browse files
committed
Add batterstats hook
Signed-off-by: tiann <twsxtd@gmail.com>
1 parent 69a5a6b commit fe87e43

4 files changed

Lines changed: 76 additions & 0 deletions

File tree

VirtualApp/lib/src/main/java/com/lody/virtual/client/core/InvocationStubManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.lody.virtual.client.hook.proxies.appwidget.AppWidgetManagerStub;
1616
import com.lody.virtual.client.hook.proxies.audio.AudioManagerStub;
1717
import com.lody.virtual.client.hook.proxies.backup.BackupManagerStub;
18+
import com.lody.virtual.client.hook.proxies.battery.BatteryStatsStub;
1819
import com.lody.virtual.client.hook.proxies.bluetooth.BluetoothStub;
1920
import com.lody.virtual.client.hook.proxies.clipboard.ClipBoardStub;
2021
import com.lody.virtual.client.hook.proxies.connectivity.ConnectivityStub;
@@ -187,6 +188,8 @@ private void injectInternal() throws Throwable {
187188
addInjector(new WifiScannerStub());
188189
addInjector(new ShortcutServiceStub());
189190
addInjector(new DevicePolicyManagerStub());
191+
192+
addInjector(new BatteryStatsStub());
190193
}
191194
if (BuildCompat.isOreo()) {
192195
addInjector(new AutoFillManagerStub());
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.lody.virtual.client.hook.proxies.battery;
2+
3+
import android.content.Context;
4+
import android.os.IInterface;
5+
6+
import com.lody.virtual.client.core.VirtualCore;
7+
import com.lody.virtual.client.hook.base.BinderInvocationProxy;
8+
import com.lody.virtual.client.hook.base.ReplaceLastUidMethodProxy;
9+
10+
import mirror.com.android.internal.os.health.SystemHealthManager;
11+
12+
/**
13+
* @author weishu
14+
* @date 2020/11/24.
15+
*/
16+
public class BatteryStatsStub extends BinderInvocationProxy {
17+
18+
public BatteryStatsStub() {
19+
super(getInterface(), "batterystats");
20+
}
21+
22+
private static IInterface getInterface() {
23+
Object manager = VirtualCore.get().getContext().getSystemService(Context.SYSTEM_HEALTH_SERVICE);
24+
return SystemHealthManager.mBatteryStats.get(manager);
25+
}
26+
27+
@Override
28+
protected void onBindMethods() {
29+
super.onBindMethods();
30+
31+
addMethodProxy(new ReplaceLastUidMethodProxy("takeUidSnapshot"));
32+
}
33+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package mirror.com.android.internal.app;
2+
3+
import android.os.IBinder;
4+
import android.os.IInterface;
5+
6+
import mirror.MethodParams;
7+
import mirror.RefClass;
8+
import mirror.RefStaticMethod;
9+
10+
/**
11+
* @author weishu
12+
* @date 2020/11/24.
13+
*/
14+
15+
public class IBatteryStats {
16+
public static Class<?> TYPE = RefClass.load(IBatteryStats.class, "com.android.internal.app.IBatteryStats");
17+
18+
public static class Stub {
19+
public static Class<?> TYPE = RefClass.load(IBatteryStats.Stub.class, "com.android.internal.app.IBatteryStats$Stub");
20+
@MethodParams({IBinder.class})
21+
public static RefStaticMethod<IInterface> asInterface;
22+
}
23+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package mirror.com.android.internal.os.health;
2+
3+
import android.os.IInterface;
4+
5+
import mirror.RefClass;
6+
import mirror.RefObject;
7+
8+
/**
9+
* @author weishu
10+
* @date 2020/11/24.
11+
*/
12+
13+
public class SystemHealthManager {
14+
public static Class<?> TYPE = RefClass.load(SystemHealthManager.class, "android.os.health.SystemHealthManager");
15+
16+
public static RefObject<IInterface> mBatteryStats;
17+
}

0 commit comments

Comments
 (0)