Skip to content

Commit

Permalink
Add batterstats hook
Browse files Browse the repository at this point in the history
Signed-off-by: tiann <twsxtd@gmail.com>
  • Loading branch information
tiann committed Nov 24, 2020
1 parent 69a5a6b commit fe87e43
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.lody.virtual.client.hook.proxies.appwidget.AppWidgetManagerStub;
import com.lody.virtual.client.hook.proxies.audio.AudioManagerStub;
import com.lody.virtual.client.hook.proxies.backup.BackupManagerStub;
import com.lody.virtual.client.hook.proxies.battery.BatteryStatsStub;
import com.lody.virtual.client.hook.proxies.bluetooth.BluetoothStub;
import com.lody.virtual.client.hook.proxies.clipboard.ClipBoardStub;
import com.lody.virtual.client.hook.proxies.connectivity.ConnectivityStub;
Expand Down Expand Up @@ -187,6 +188,8 @@ private void injectInternal() throws Throwable {
addInjector(new WifiScannerStub());
addInjector(new ShortcutServiceStub());
addInjector(new DevicePolicyManagerStub());

addInjector(new BatteryStatsStub());
}
if (BuildCompat.isOreo()) {
addInjector(new AutoFillManagerStub());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.lody.virtual.client.hook.proxies.battery;

import android.content.Context;
import android.os.IInterface;

import com.lody.virtual.client.core.VirtualCore;
import com.lody.virtual.client.hook.base.BinderInvocationProxy;
import com.lody.virtual.client.hook.base.ReplaceLastUidMethodProxy;

import mirror.com.android.internal.os.health.SystemHealthManager;

/**
* @author weishu
* @date 2020/11/24.
*/
public class BatteryStatsStub extends BinderInvocationProxy {

public BatteryStatsStub() {
super(getInterface(), "batterystats");
}

private static IInterface getInterface() {
Object manager = VirtualCore.get().getContext().getSystemService(Context.SYSTEM_HEALTH_SERVICE);
return SystemHealthManager.mBatteryStats.get(manager);
}

@Override
protected void onBindMethods() {
super.onBindMethods();

addMethodProxy(new ReplaceLastUidMethodProxy("takeUidSnapshot"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package mirror.com.android.internal.app;

import android.os.IBinder;
import android.os.IInterface;

import mirror.MethodParams;
import mirror.RefClass;
import mirror.RefStaticMethod;

/**
* @author weishu
* @date 2020/11/24.
*/

public class IBatteryStats {
public static Class<?> TYPE = RefClass.load(IBatteryStats.class, "com.android.internal.app.IBatteryStats");

public static class Stub {
public static Class<?> TYPE = RefClass.load(IBatteryStats.Stub.class, "com.android.internal.app.IBatteryStats$Stub");
@MethodParams({IBinder.class})
public static RefStaticMethod<IInterface> asInterface;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package mirror.com.android.internal.os.health;

import android.os.IInterface;

import mirror.RefClass;
import mirror.RefObject;

/**
* @author weishu
* @date 2020/11/24.
*/

public class SystemHealthManager {
public static Class<?> TYPE = RefClass.load(SystemHealthManager.class, "android.os.health.SystemHealthManager");

public static RefObject<IInterface> mBatteryStats;
}

0 comments on commit fe87e43

Please sign in to comment.