当前位置:   article > 正文

Android安全–检测是否为Android模拟器(1)_android 判断设备是否模拟器

android 判断设备是否模拟器

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

            return true;

        }

    }

    Log.v("Result:", "Not Find imsi ids: 310260000000000!");

    return false;

}



//检测手机上的一些硬件信息

public static Boolean CheckEmulatorBuild(Context context){

    String BOARD = android.os.Build.BOARD;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

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

就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-50VEQMDN-1712821189126)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/829005
推荐阅读
相关标签
  

闽ICP备14008679号