jimu-decompiled/sources/bitter/jnibridge/JNIBridge.java
2025-05-13 19:24:51 +02:00

89 lines
2.9 KiB
Java

package bitter.jnibridge;
import com.ijm.dataencryption.de.DataDecryptTool;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/* loaded from: classes.dex */
public class JNIBridge {
private static class a implements InvocationHandler {
private Object a = new Object[0];
private long b;
private Constructor c;
public a(long j) {
this.b = j;
try {
this.c = MethodHandles.Lookup.class.getDeclaredConstructor(Class.class, Integer.TYPE);
this.c.setAccessible(true);
} catch (NoClassDefFoundError unused) {
this.c = null;
} catch (NoSuchMethodException unused2) {
this.c = null;
}
}
private Object a(Object obj, Method method, Object[] objArr) {
if (objArr == null) {
objArr = new Object[0];
}
Class<?> declaringClass = method.getDeclaringClass();
return ((MethodHandles.Lookup) this.c.newInstance(declaringClass, 2)).in(declaringClass).unreflectSpecial(method, declaringClass).bindTo(obj).invokeWithArguments(objArr);
}
public final void a() {
synchronized (this.a) {
this.b = 0L;
}
}
public final void finalize() {
synchronized (this.a) {
if (this.b == 0) {
return;
}
JNIBridge.delete(this.b);
}
}
@Override // java.lang.reflect.InvocationHandler
public final Object invoke(Object obj, Method method, Object[] objArr) {
synchronized (this.a) {
if (this.b == 0) {
return null;
}
try {
return JNIBridge.invoke(this.b, method.getDeclaringClass(), method, objArr);
} catch (NoSuchMethodError e) {
if (this.c == null) {
System.err.println("JNIBridge error: Java interface default methods are only supported since Android Oreo");
throw e;
}
if ((method.getModifiers() & DataDecryptTool.DECRYPT_SP_FILE) == 0) {
return a(obj, method, objArr);
}
throw e;
}
}
}
}
static native void delete(long j);
static void disableInterfaceProxy(Object obj) {
if (obj != null) {
((a) Proxy.getInvocationHandler(obj)).a();
}
}
static native Object invoke(long j, Class cls, Method method, Object[] objArr);
static Object newInterfaceProxy(long j, Class[] clsArr) {
return Proxy.newProxyInstance(JNIBridge.class.getClassLoader(), clsArr, new a(j));
}
}