안드로이드 앱 에뮬레이터 사용 금지

7042 단어 androidappAndroid
안드로이드 앱 에뮬레이터 사용 금지
인터넷에는 안드로이드 기기와 시뮬레이터의 차이에 대해 많은 자료를 찾아보았고 대부분이 설비 id를 통해 판단했다. 그들은 스스로 시험을 하지 않고 인터넷의 자원을 완전히 복사했다.조금도 실용적이지 않고 많은 자료를 뒤적였는데 마지막에 모두 9가지 방법으로 실기와 시뮬레이터를 판단할 수 있었다. 그 중에서 가장 효과적인 것은 시뮬레이터와 실기의 배터리 볼트와 배터리의 온도를 통해 판단하는 것이다.시뮬레이터의 배터리 볼트는 0 또는 1000일 수 있지만 온도는 반드시 0이다.그러나 실제 기계는 가변적이어서 이 차이를 통해 실제 기계와 시뮬레이터를 효과적으로 판단할 수 있다.또 다른 8가지 방법으로 판단하고 코드를 붙인다.
털을 뽑는 교류군을 추천합니다. 여러분들이 일상적으로 용돈을 벌 수 있도록 돕습니다. 364739778, 이 돈을 벌기를 기대하지 마세요.
IntentFilter intentFilter = new IntentFilter( Intent.ACTION_BATTERY_CHANGED); Intent batteryStatusIntent = registerReceiver(null, intentFilter);
    int voltage = batteryStatusIntent.getIntExtra("voltage", 99999);
    int temperature = batteryStatusIntent.getIntExtra("temperature", 99999);
    if (((voltage == 0) && (temperature == 0))
            || ((voltage == 10000) && (temperature == 0))) {
        //                       
    }

다음은 다른 8가지 방법입니다.
import java.io.File; import java.io.FileInputStream; import java.io.InputStream;
import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log;
public class AntiEmulator { private static String[] known_pipes = { “/dev/socket/qemud”, “/dev/qemu_pipe” };
private static String[] known_qemu_drivers = { "goldfish" };

private static String[] known_files = {
        "/system/lib/libc_malloc_debug_qemu.so", "/sys/qemu_trace",
        "/system/bin/qemu-props" };

private static String[] known_numbers = { "15555215554", "15555215556",
        "15555215558", "15555215560", "15555215562", "15555215564",
        "15555215566", "15555215568", "15555215570", "15555215572",
        "15555215574", "15555215576", "15555215578", "15555215580",
        "15555215582", "15555215584", };

private static String[] known_device_ids = { "000000000000000" //   ID
};

private static String[] known_imsi_ids = { "310260000000000" //     imsi id
};

//   “/dev/socket/qemud”,“/dev/qemu_pipe”     
public static boolean checkPipes() {
    for (int i = 0; i < known_pipes.length; i++) {
        String pipes = known_pipes[i];
        File qemu_socket = new File(pipes);
        if (qemu_socket.exists()) {
            Log.v("Result:", "Find pipes!");
            return true;
        }
    }
    Log.i("Result:", "Not Find pipes!");
    return false;
}

//         
//       ,      QEmu        
public static Boolean checkQEmuDriverFile() {
    File driver_file = new File("/proc/tty/drivers");
    if (driver_file.exists() && driver_file.canRead()) {
        byte[] data = new byte[1024]; // (int)driver_file.length()
        try {
            InputStream inStream = new FileInputStream(driver_file);
            inStream.read(data);
            inStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        String driver_data = new String(data);
        for (String known_qemu_driver : AntiEmulator.known_qemu_drivers) {
            if (driver_data.indexOf(known_qemu_driver) != -1) {
                Log.i("Result:", "Find know_qemu_drivers!");
                return true;
            }
        }
    }
    Log.i("Result:", "Not Find known_qemu_drivers!");
    return false;
}

//              
public static Boolean CheckEmulatorFiles() {
    for (int i = 0; i < known_files.length; i++) {
        String file_name = known_files[i];
        File qemu_file = new File(file_name);
        if (qemu_file.exists()) {
            Log.v("Result:", "Find Emulator Files!");
            return true;
        }
    }
    Log.v("Result:", "Not Find Emulator Files!");
    return false;
}

//             
public static Boolean CheckPhoneNumber(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);

    String phonenumber = telephonyManager.getLine1Number();

    for (String number : known_numbers) {
        if (number.equalsIgnoreCase(phonenumber)) {
            Log.v("Result:", "Find PhoneNumber!");
            return true;
        }
    }
    Log.v("Result:", "Not Find PhoneNumber!");
    return false;
}

//     IDS     “000000000000000”
public static Boolean CheckDeviceIDS(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

    String device_ids = telephonyManager.getDeviceId();

    for (String know_deviceid : known_device_ids) {
        if (know_deviceid.equalsIgnoreCase(device_ids)) {
            Log.v("Result:", "Find ids: 000000000000000!");
            return true;
        }
    }
    Log.v("Result:", "Not Find ids: 000000000000000!");
    return false;
}

//   imsi id   “310260000000000”
public static Boolean CheckImsiIDS(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);

    String imsi_ids = telephonyManager.getSubscriberId();

    for (String know_imsi : known_imsi_ids) {
        if (know_imsi.equalsIgnoreCase(imsi_ids)) {
            Log.v("Result:", "Find imsi ids: 310260000000000!");
            return true;
        }
    }
    Log.v("Result:", "Not Find imsi ids: 310260000000000!");
    return false;
}

//             
public static Boolean CheckEmulatorBuild(Context context) {
    String BOARD = android.os.Build.BOARD;
    String BOOTLOADER = android.os.Build.BOOTLOADER;
    String BRAND = android.os.Build.BRAND;
    String DEVICE = android.os.Build.DEVICE;
    String HARDWARE = android.os.Build.HARDWARE;
    String MODEL = android.os.Build.MODEL;
    String PRODUCT = android.os.Build.PRODUCT;
    if (BOARD == "unknown" || BOOTLOADER == "unknown" || BRAND == "generic"
            || DEVICE == "generic" || MODEL == "sdk" || PRODUCT == "sdk"
            || HARDWARE == "goldfish") {
        Log.v("Result:", "Find Emulator by EmulatorBuild!");
        return true;
    }
    Log.v("Result:", "Not Find Emulator by EmulatorBuild!");
    return false;
}

//         
public static boolean CheckOperatorNameAndroid(Context context) {
    String szOperatorName = ((TelephonyManager) context
            .getSystemService("phone")).getNetworkOperatorName();

    if (szOperatorName.toLowerCase().equals("android") == true) {
        Log.v("Result:", "Find Emulator by OperatorName!");
        return true;
    }
    Log.v("Result:", "Not Find Emulator by OperatorName!");
    return false;
}

} 위에 주석이 있으니 모두 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기