package com.lody.virtual.client.hook.base;
import android.os.IBinder;
import android.os.IInterface;
import mirror.android.os.ServiceManager;
/**
* @author Paulo Costa
*
* @see PatchDelegate
*/
public abstract class PatchBinderDelegate extends PatchDelegate<HookBinderDelegate> {
protected String serviceName;
public PatchBinderDelegate(IInterface stub, String serviceName) {
this(new HookBinderDelegate(stub), serviceName);
}
public PatchBinderDelegate(Class<?> stubClass, String serviceName) {
this(new HookBinderDelegate(stubClass, ServiceManager.getService.call(serviceName)), serviceName);
}
public PatchBinderDelegate(HookBinderDelegate hookDelegate, String serviceName) {
super(hookDelegate);
this.serviceName = serviceName;
}
@Override
public void inject() throws Throwable {
getHookDelegate().replaceService(serviceName);
}
@Override
public boolean isEnvBad() {
IBinder binder = ServiceManager.getService.call(serviceName);
return binder != null && getHookDelegate() != binder;
}
}