178 lines
7.3 KiB
Java
178 lines
7.3 KiB
Java
package p004;
|
||
|
||
import android.os.IBinder;
|
||
import android.os.IInterface;
|
||
import android.os.Parcel;
|
||
import android.util.Log;
|
||
import de.robv.android.xposed.XC_MethodHook;
|
||
import de.robv.android.xposed.XposedBridge;
|
||
import de.robv.android.xposed.XposedHelpers;
|
||
import java.io.FileDescriptor;
|
||
import java.lang.reflect.InvocationTargetException;
|
||
import java.lang.reflect.Member;
|
||
import java.lang.reflect.Method;
|
||
import java.util.Arrays;
|
||
import java.util.Collections;
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
|
||
/* JADX INFO: renamed from: ԫ.Ԩ, reason: contains not printable characters */
|
||
/* JADX INFO: loaded from: classes.dex */
|
||
public class C0008 implements IBinder {
|
||
|
||
/* JADX INFO: renamed from: Ϳ, reason: contains not printable characters */
|
||
public static Map<String, String> f4 = Collections.synchronizedMap(new HashMap());
|
||
|
||
/* JADX INFO: renamed from: ԫ.Ԩ$Ϳ, reason: contains not printable characters */
|
||
public class C0009 extends XC_MethodHook {
|
||
|
||
/* JADX INFO: renamed from: Ϳ, reason: contains not printable characters */
|
||
public final /* synthetic */ Method f5;
|
||
|
||
public C0009(Method method) {
|
||
this.f5 = method;
|
||
}
|
||
|
||
public void afterHookedMethod(XC_MethodHook.MethodHookParam methodHookParam) {
|
||
try {
|
||
Object[] objArr = new Object[1];
|
||
Object[] objArr2 = methodHookParam.args;
|
||
if (objArr2 != null) {
|
||
objArr = new Object[objArr2.length + 1];
|
||
System.arraycopy(objArr2, 0, objArr, 1, objArr2.length);
|
||
}
|
||
Object obj = methodHookParam.thisObject;
|
||
objArr[0] = obj;
|
||
methodHookParam.setResult(this.f5.invoke(obj, objArr));
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
public void beforeHookedMethod(XC_MethodHook.MethodHookParam methodHookParam) {
|
||
}
|
||
}
|
||
|
||
/* JADX WARN: Failed to find 'out' block for switch in B:66:0x0474. Please report as an issue. */
|
||
/* JADX WARN: Removed duplicated region for block: B:65:0x0473 */
|
||
/* JADX WARN: Removed duplicated region for block: B:83:0x04dd A[Catch: ClassNotFoundException -> 0x04ec, TRY_LEAVE, TryCatch #1 {ClassNotFoundException -> 0x04ec, blocks: (B:68:0x0479, B:79:0x04a8, B:81:0x04ab, B:83:0x04dd), top: B:94:0x0479 }] */
|
||
/*
|
||
Code decompiled incorrectly, please refer to instructions dump.
|
||
To view partially-correct add '--show-bad-code' argument
|
||
*/
|
||
private java.lang.Class<?>[] parseParameterTypes(java.lang.String r25, java.lang.ClassLoader r26) {
|
||
/*
|
||
Method dump skipped, instruction units count: 1468
|
||
To view this dump add '--comments-level debug' option
|
||
*/
|
||
throw new UnsupportedOperationException("Method not decompiled: p004.C0008.parseParameterTypes(java.lang.String, java.lang.ClassLoader):java.lang.Class[]");
|
||
}
|
||
|
||
public final <T> T callOriginMethod(Object obj, Object... objArr) {
|
||
StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[6];
|
||
String str = f4.get(stackTraceElement.getClassName() + C0016.m12(new byte[]{-91}, new byte[]{-118, -92, -18, 44, 51, 33, -114, -126}) + stackTraceElement.getMethodName());
|
||
if (str == null) {
|
||
return null;
|
||
}
|
||
String[] strArrSplit = str.split(C0016.m12(new byte[]{-39}, new byte[]{-10, -89, 91, -86, -105, -27, -46, 106}));
|
||
String str2 = strArrSplit[0];
|
||
String str3 = strArrSplit[1];
|
||
String str4 = strArrSplit[2];
|
||
Class clsFindClass = XposedHelpers.findClass(str2, obj.getClass().getClassLoader());
|
||
Class<?>[] parameterTypes = parseParameterTypes(str4, obj.getClass().getClassLoader());
|
||
return (T) callOriginMethod(C0016.m12(new byte[]{-35, -108, -124, 85, 22, 92}, new byte[]{-31, -3, -22, 60, 98, 98, 23, -30}).equals(str3) ? XposedHelpers.findConstructorBestMatch(clsFindClass, parameterTypes) : XposedHelpers.findMethodExact(clsFindClass, str3, parameterTypes), obj, objArr);
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public void dump(FileDescriptor fileDescriptor, String[] strArr) {
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public void dumpAsync(FileDescriptor fileDescriptor, String[] strArr) {
|
||
}
|
||
|
||
public XC_MethodHook.Unhook findAndHookMethod(Class cls, String str, Class[] clsArr, Method method) {
|
||
Object[] objArr;
|
||
try {
|
||
objArr = new Object[1];
|
||
if (clsArr != null) {
|
||
objArr = new Object[clsArr.length + 1];
|
||
System.arraycopy(clsArr, 0, objArr, 0, clsArr.length);
|
||
}
|
||
} catch (NoSuchMethodError e) {
|
||
e = e;
|
||
} catch (Throwable th) {
|
||
th = th;
|
||
}
|
||
try {
|
||
objArr[objArr.length - 1] = new C0009(method);
|
||
XC_MethodHook.Unhook unhookFindAndHookConstructor = C0016.m12(new byte[]{101, 53, -62, -32, -12, 3}, new byte[]{89, 92, -84, -119, -128, 61, 20, 73}).equals(str) ? XposedHelpers.findAndHookConstructor(cls, objArr) : XposedHelpers.findAndHookMethod(cls, str, objArr);
|
||
f4.put(method.getDeclaringClass().getName() + C0016.m12(new byte[]{-54}, new byte[]{-27, -105, -96, -45, 25, 68, -30, 59}) + method.getName(), cls.getName() + C0016.m12(new byte[]{-22}, new byte[]{-59, -106, -100, -10, -86, 37, -2, -64}) + str + C0016.m12(new byte[]{-55}, new byte[]{-26, 33, -102, 114, -66, -102, 126, 115}) + Arrays.toString(clsArr));
|
||
return unhookFindAndHookConstructor;
|
||
} catch (NoSuchMethodError e2) {
|
||
e = e2;
|
||
Log.e(C0016.m12(new byte[]{31, 18, -123, 1, -16}, new byte[]{89, 94, -35, 81, -72, 71, -122, 101}), e.getMessage());
|
||
return null;
|
||
} catch (Throwable th2) {
|
||
th = th2;
|
||
th.printStackTrace();
|
||
return null;
|
||
}
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public String getInterfaceDescriptor() {
|
||
return null;
|
||
}
|
||
|
||
public int getVersionCode() {
|
||
return 6;
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public boolean isBinderAlive() {
|
||
return false;
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public void linkToDeath(IBinder.DeathRecipient deathRecipient, int i) {
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public boolean pingBinder() {
|
||
return false;
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public IInterface queryLocalInterface(String str) {
|
||
return null;
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public boolean transact(int i, Parcel parcel, Parcel parcel2, int i2) {
|
||
return false;
|
||
}
|
||
|
||
@Override // android.os.IBinder
|
||
public boolean unlinkToDeath(IBinder.DeathRecipient deathRecipient, int i) {
|
||
return false;
|
||
}
|
||
|
||
private final <T> T callOriginMethod(Member member, Object obj, Object... objArr) {
|
||
try {
|
||
return (T) XposedBridge.invokeOriginalMethod(member, obj, objArr);
|
||
} catch (IllegalAccessException e) {
|
||
throw new RuntimeException(e);
|
||
} catch (InvocationTargetException e2) {
|
||
if (e2.getTargetException() == null) {
|
||
return null;
|
||
}
|
||
throw new RuntimeException(e2.getTargetException());
|
||
}
|
||
}
|
||
|
||
public void findAndHookMethod(Class cls, String str, Class cls2, Class[] clsArr, Method method, Method method2, Method method3) {
|
||
findAndHookMethod(cls, str, clsArr, method);
|
||
}
|
||
}
|