Android安全–检测是否为Android模拟器

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


package com.monkey.antiemulator;



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) {

                // 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!");


### 给大家的福利


**零基础入门**


对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


![](https://i-blog.csdnimg.cn/blog_migrate/adf0897b07ab2276161763a94ef2b8b3.png)


同时每个成长路线对应的板块都有配套的视频提供:


![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e4801501d80f6bd4fea8230337015a9.png#pic_center)

因篇幅有限,仅展示部分资料

**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.youkuaiyun.com/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值