Android判断设备是否为模拟器

来源:互联网 发布:网页编程是什么 编辑:程序博客网 时间:2024/06/05 01:13
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) {                // TODO: handle exception                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() {        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;        String SERIAL = android.os.Build.SERIAL;        /*if (BOARD == "unknown" || BOOTLOADER == "unknown"                || BRAND == "generic" || DEVICE == "generic"                || MODEL == "sdk" || PRODUCT == "sdk"                || HARDWARE == "goldfish" || SERIAL.equals("unknown")                || BRAND.toLowerCase().equals("android")                || MODEL.toLowerCase().contains("sdk")) {            Log.v("Result:", "Find Emulator by EmulatorBuild!");            return true;        }*/        if (BRAND.toLowerCase().equals("android") || MODEL.toLowerCase().contains("sdk")) {            Log.v("Result:", "Find Emulator by EmulatorBuild!");            return true;        }        Log.v("Result:", "Not Find Emulator by EmulatorBuild!");        return false;    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 西瓜视频答题结束了钱没提现怎么办 诚信答题密码忘了怎么办 我未成年杀了人怎么办 错过了网课考试怎么办? 2018广东省普法考试0分怎么办 小孩错过了小升初的考试怎么办 错过了自主招生考试怎么办? 科目一考试错过了时间怎么办 中学生网瘾怎么办济南远大认真 u盘安装不了系统怎么办 对敏感脆弱的青春期孩子怎么办? 脸变得很交黑怎么办 玩手机长痘痘了怎么办 青少年左侧后背突发疼痛怎么办 纵欲过度导致青少年白发怎么办 20岁了不想长大怎么办 网吧老板跑路了怎么办 网吧玩地下城卡怎么办 个人公积金封存之前厂子欠费怎么办 学生欠了2万块怎么办 玉米去完库存量cool怎么办 幸福蓝海电子券过期怎么办 幸福蓝海国际影城会员怎么办 幸福蓝海会员卡过期了怎么办 电机线圈处于平衡位置怎么办 混联电路求电功率最小怎么办 电脑超出工作频率范围怎么办 手机红外线感应器坏了怎么办 我的世界左右慢怎么办 发电机自动启停装置故障怎么办 如果自动启停没关发动机涉水怎么办 偏激的人不分手怎么办 被极端的人纠缠怎么办 对固执偏激的人怎么办 车子右前轮偏磨怎么办? 轮胎边缘磨黑了怎么办 36周胎儿绕颈一周怎么办 孕中期胎儿偏小怎么办 怀孕34周偏小2周怎么办 胎盘低怎么办6个月了 怀孕四个月胎盘低怎么办