Luno v7.28.0版本的 MD5 值为:08d81b3b88ef7df48c89cb5d56dc11a2
以下内容为反编译后的 fb6.java 源代码,内容仅作参考
package mdi.sdk;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.text.TextUtils;
import com.facebook.appevents.AppEventsConstants;
import com.facebook.internal.NativeProtocol;
import com.facebook.share.internal.MessengerShareContentUtility;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@TargetApi(14)
public final class fb6 {
public static final String[] c = {"/dev/socket/genyd", "/dev/socket/baseband_genyd"};
public static final String[] d = {"goldfish"};
public static final String[] e = {"/dev/socket/qemud", "/dev/qemu_pipe"};
public static final String[] f = {"ueventd.android_x86.rc", "x86.prop", "ueventd.ttVM_x86.rc", "init.ttVM_x86.rc", "fstab.ttVM_x86", "fstab.vbox86", "init.vbox86.rc", "ueventd.vbox86.rc"};
public static final String[] g = {"fstab.andy", "ueventd.andy.rc"};
public static final String[] h = {"fstab.nox", "init.nox.rc", "ueventd.nox.rc"};
public static final pb6[] i = {new pb6("init.svc.qemud", null), new pb6("init.svc.qemu-props", null), new pb6("qemu.hw.mainkeys", null), new pb6("qemu.sf.fake_camera", null), new pb6("qemu.sf.lcd_density", null), new pb6("ro.bootloader", "unknown"), new pb6("ro.bootmode", "unknown"), new pb6("ro.hardware", "goldfish"), new pb6("ro.kernel.android.qemud", null), new pb6("ro.kernel.qemu.gles", null), new pb6("ro.kernel.qemu", AppEventsConstants.EVENT_PARAM_VALUE_YES), new pb6("ro.product.device", MessengerShareContentUtility.TEMPLATE_GENERIC_TYPE), new pb6("ro.product.model", "sdk"), new pb6("ro.product.name", "sdk"), new pb6("ro.serialno", null)};
@SuppressLint({"StaticFieldLeak"})
public static fb6 j;
public final Context a;
public List<String> b;
public interface a {
}
public fb6(Context context) {
ArrayList arrayList = new ArrayList();
this.b = arrayList;
this.a = context;
arrayList.add("com.google.android.launcher.layouts.genymotion");
this.b.add("com.bluestacks");
this.b.add("com.bignox.app");
}
public final boolean a() {
boolean z;
boolean z2 = false;
if (!Build.FINGERPRINT.startsWith(MessengerShareContentUtility.TEMPLATE_GENERIC_TYPE)) {
String str = Build.MODEL;
if (!str.contains("google_sdk") && !str.toLowerCase().contains("droid4x") && !str.contains("Emulator") && !str.contains("Android SDK built for x86") && !Build.MANUFACTURER.contains("Genymotion")) {
String str2 = Build.HARDWARE;
if (!str2.equals("goldfish") && !str2.equals("vbox86")) {
String str3 = Build.PRODUCT;
if (!str3.equals("sdk") && !str3.equals("google_sdk") && !str3.equals("sdk_x86") && !str3.equals("vbox86p") && !Build.BOARD.toLowerCase().contains("nox") && !Build.BOOTLOADER.toLowerCase().contains("nox") && !str2.toLowerCase().contains("nox") && !str3.toLowerCase().contains("nox") && !Build.SERIAL.toLowerCase().contains("nox")) {
z = false;
if (!z) {
return true;
}
if (Build.BRAND.startsWith(MessengerShareContentUtility.TEMPLATE_GENERIC_TYPE) && Build.DEVICE.startsWith(MessengerShareContentUtility.TEMPLATE_GENERIC_TYPE)) {
z2 = true;
}
boolean z3 = z | z2;
if (z3) {
return true;
}
return z3 | "google_sdk".equals(Build.PRODUCT);
}
}
}
}
z = true;
if (!z) {
}
}
public final boolean b(String[] strArr, String str) {
for (String str2 : strArr) {
if (new File(str2).exists()) {
return true;
}
}
return false;
}
public final boolean c() {
if (androidx.core.content.a.a(this.a, "android.permission.INTERNET") != 0) {
return false;
}
String[] strArr = {"/system/bin/netcfg"};
StringBuilder sb = new StringBuilder();
try {
ProcessBuilder processBuilder = new ProcessBuilder(strArr);
processBuilder.directory(new File("/system/bin/"));
processBuilder.redirectErrorStream(true);
InputStream inputStream = processBuilder.start().getInputStream();
byte[] bArr = new byte[1024];
while (inputStream.read(bArr) != -1) {
sb.append(new String(bArr));
}
inputStream.close();
} catch (Exception unused) {
}
String sb2 = sb.toString();
if (TextUtils.isEmpty(sb2)) {
return false;
}
for (String str : sb2.split("\n")) {
if ((str.contains("wlan0") || str.contains("tunl0") || str.contains("eth0")) && str.contains("10.0.2.15")) {
return true;
}
}
return false;
}
public final boolean d() {
boolean z;
String str;
String str2 = Build.PRODUCT;
String str3 = Build.MANUFACTURER;
String str4 = Build.BRAND;
String str5 = Build.DEVICE;
String str6 = Build.MODEL;
String str7 = Build.HARDWARE;
String str8 = Build.FINGERPRINT;
boolean a2 = a();
if (!a2) {
androidx.core.content.a.a(this.a, "android.permission.READ_PHONE_STATE");
if (!b(c, "Geny") && !b(g, "Andy") && !b(h, "Nox")) {
File[] fileArr = {new File("/proc/tty/drivers"), new File("/proc/cpuinfo")};
int i2 = 0;
loop0: while (true) {
if (i2 >= 2) {
z = false;
break;
}
File file = fileArr[i2];
if (file.exists() && file.canRead()) {
byte[] bArr = new byte[1024];
try {
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(bArr);
fileInputStream.close();
} catch (Exception e2) {
e2.printStackTrace();
}
String str9 = new String(bArr);
for (String str10 : d) {
if (str9.contains(str10)) {
z = true;
break loop0;
}
}
}
i2++;
}
if (!z && !b(e, "Pipes") && !c()) {
int i3 = 0;
for (pb6 pb6Var : i) {
Context context = this.a;
String str11 = pb6Var.a;
try {
Class<?> loadClass = context.getClassLoader().loadClass("android.os.SystemProperties");
str = (String) loadClass.getMethod("get", String.class).invoke(loadClass, str11);
} catch (Exception unused) {
str = null;
}
String str12 = pb6Var.b;
if (str12 == null && str != null) {
i3++;
}
if (str12 != null && str.contains(str12)) {
i3++;
}
}
if (!(i3 >= 5) || !b(f, "X86")) {
a2 = false;
}
}
}
a2 = true;
}
if (a2) {
return a2;
}
if (this.b.isEmpty()) {
return false;
}
PackageManager packageManager = this.a.getPackageManager();
Iterator<String> it = this.b.iterator();
while (it.hasNext()) {
Intent launchIntentForPackage = packageManager.getLaunchIntentForPackage(it.next());
if (launchIntentForPackage != null && !packageManager.queryIntentActivities(launchIntentForPackage, NativeProtocol.MESSAGE_GET_ACCESS_TOKEN_REQUEST).isEmpty()) {
return true;
}
}
return false;
}
}