某APP中模拟器检测

简介: 模拟器检查

以下的只是分享检测的一部分实现,并且仅为技术研究。

1.检测模拟器的实现

1.检测模拟器的 imsi的 id是否是310260000000000
具体的实现:先判断是否有android.permission.READ_PHONE_STATE权限,在判断当前的运行环境的imsi id 是否是310260000000000这个值,以及判断VoiceMailNumbe是否等于15552175049和 GetDeviceId等于"000000000000000", "012345678912345"这两串值。

private static boolean a(Context context, String str, String[] strArr, String str2) {
    boolean z;
    boolean z2;
    boolean z3;
    String[] strArr2;
    if (context.getPackageManager().checkPermission("android.permission.READ_PHONE_STATE", context.getPackageName()) == 0) {
        z = true;
    } else {
        z = false;
    }
    if (z) {
        z2 = false;
        for (String str3 : d) {
            if (z2 || StringUtils.equal(str3, str)) {
                z2 = true;
            } else {
                z2 = false;
            }
        }
    } else {
        z2 = false;
    }
    if (strArr != null) {
        for (String equal : strArr) {
            if (StringUtils.equal(equal, "310260000000000") || z2) {
                z3 = true;
            } else {
                z3 = false;
            }
        }
    }
    if (z2 || StringUtils.equal(str2, "15552175049")) {
        return true;
    }
    return false;
}

2.检测模拟器的驱动文件内容
具体的检测步骤:判断/proc/tty/drivers 文件是否存在是否可读取。可读情况下读取出具体的内容数据进行比对是否包含goldfish字符串

private static String[] b = {"goldfish"};
private static Boolean a() {

    String str;
    File file = new File("/proc/tty/drivers");
    if (!file.exists() || !file.canRead()) {
        String str2 = "EmulatorChecker";
        StringBuilder sb = new StringBuilder("can not read file /proc/tty/drivers ,because");
        if (file.exists()) {
            str = "not exist";
        } else {
            str = "not readable";
        }
        sb.append(str);
        Logger.e(str2, sb.toString());
    } else {
        byte[] bArr = new byte[1024];
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            fileInputStream.read(bArr);
            fileInputStream.close();
        } catch (Exception unused) {
        }
        String str3 = new String(bArr);
        for (String contains : b) {
            if (str3.contains(contains)) {
                return Boolean.TRUE;
            }
        }
    }
    return Boolean.FALSE;
}

3.检测模拟器的特定文件及文件属性
具体的步骤:判断读取指定的文件及文件属性,以及判断特有的Genymotion模拟器,采用的是ro.product.manufacturer 读取的手机厂商的方式

private static int a(h hVar) {

    int i;
    int i2;
    String[] strArr = {"/system/bin/qemu_props", "/system/bin/androVM-prop", "/system/bin/microvirt-prop", "/system/lib/libdroid4x.so", "/system/bin/windroyed", "/system/bin/microvirtd", "/system/bin/nox-prop", "/system/bin/ttVM-prop", "/system/bin/droid4x-prop", "/data/.bluestacks.prop"};
    String[] strArr2 = {"init.svc.vbox86-setup", "init.svc.droid4x", "init.svc.qemud", "init.svc.su_kpbs_daemon", "init.svc.noxd", "init.svc.ttVM_x86-setup", "init.svc.xxkmsg", "init.svc.microvirtd", "ro.kernel.android.qemud", "androVM.vbox_dpi", "androVM.vbox_graph_mode"};
    int i3 = 0;
    for (int i4 = 0; i4 < 10; i4++) {
        if (a(strArr[i4])) {
            i2 = 1 << i4;
        } else {
            i2 = 0;
        }
        i3 |= i2;
        a(strArr[i4]);
    }
    int i5 = 10;
    for (int i6 = 0; i6 < 11; i6++) {
        String str = strArr2[i6];
        if (StringUtils.isEmpty(hVar.a(str))) {
            i = 0;
        } else {
            i = 1 << i5;
        }
        i3 |= i;
        StringUtils.isEmpty(hVar.a(str));
        i5++;
    }
    Pair pair = new Pair("ro.product.manufacturer", "Genymotion");
    String a2 = hVar.a((String) pair.first);
    if (StringUtils.isEmpty(a2) || !a2.contains((CharSequence) pair.second)) {
        return i3;
    }
    return i3 | (1 << i5);
}

4.判断指定的设备文件是否存在
判断下面三个文件是否存在

private static String[] c = {"/dev/socket/qemud", "/dev/qemu_pipe", "/dev/qemu_trace"};

private static boolean a(String str) {

    if (StringUtils.isEmpty(str)) {
        return false;
    }
    File file = new File(str);
    if (file.exists()) {
        return true;
    }
    try {
        new FileInputStream(file);
        return true;
    } catch (FileNotFoundException e) {
        if (!e.getMessage().contains("No such file or directory")) {
            return true;
        }
        return false;
    }
}
相关文章
|
5月前
|
人工智能 JSON 小程序
【一步步开发AI运动APP】七、自定义姿态动作识别检测——之规则配置检测
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用自定义姿态识别检测技术开发高性能的AI运动应用。核心内容包括:1) 自定义姿态识别检测,满足人像入镜、动作开始/停止等需求;2) Pose-Calc引擎详解,支持角度匹配、逻辑运算等多种人体分析规则;3) 姿态检测规则编写与执行方法;4) 完整示例展示左右手平举姿态检测。通过这些技术,开发者可轻松实现定制化运动分析功能。
|
3月前
|
安全 测试技术 开发者
银行转账模拟器手机版app, 银行转账凭证生成器app,用autojs实现效果【逼真效果】
本内容展示了一套基于Auto.js的银行APP自动化测试脚本和框架,用于学习和研究移动应用测试技术。脚本涵盖登录、转账等功能测试
|
4月前
|
人工智能 小程序 API
【一步步开发AI运动APP】九、自定义姿态动作识别检测——之关键点追踪
本文介绍了【一步步开发AI运动APP】系列中的关键点追踪技术。此前分享的系列博文助力开发者打造了多种AI健身场景的小程序,而新系列将聚焦性能更优的AI运动APP开发。文章重点讲解了“关键点位变化追踪”能力,适用于动态运动(如跳跃)分析,弥补了静态姿态检测的不足。通过`pose-calc`插件,开发者可设置关键点(如鼻子)、追踪方向(X或Y轴)及变化幅度。示例代码展示了如何在`uni-app`框架中使用`createPointTracker`实现关键点追踪,并结合人体识别结果完成动态分析。具体实现可参考文档与Demo示例。
|
5月前
|
人工智能 小程序 API
【一步步开发AI运动APP】八、自定义姿态动作识别检测——之姿态相似度比较
本文介绍了如何通过姿态相似度比较技术简化AI运动应用开发。相比手动配置规则,插件`pose-calc`提供的姿态相似度比较器可快速评估两组人体关键点的整体与局部相似度,降低开发者工作量。文章还展示了在`uni-app`框架下调用姿态比较器的示例代码,并提供了桌面辅助工具以帮助提取标准动作样本,助力开发者打造性能更优、体验更好的AI运动APP。
|
安全 测试技术 网络安全
APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器
APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器
187 5
|
安全 定位技术 网络安全
禁止应用在模拟器上运行的方案及app安全问题
禁止应用在模拟器上运行的方案及app安全问题
1266 1
|
安全 Shell 网络安全
Charles - 夜神模拟器证书安装App抓包
Charles - 夜神模拟器证书安装App抓包 前言 一、软件安装 1.Openssl安装 1.1下载安装 1.2配置环境变量 1.3查看openssl版本,输入命令:openssl version 2.夜神模拟器安装 1.1 下载安装 1.2工具准备,MT管理器 3.Charles安装 二、Charles 安装证书,抓包 1.Charles破解 2.安装证书并导出 3.开启代理模式 4.证书格式化 5.通过MT管理器将证书配置到模拟器中 6.模拟器WiFi填入Charles代理的IP和端口 7.抓包示例
1641 0
Charles - 夜神模拟器证书安装App抓包
|
XML 监控 Java
Android App开发之事件交互Event中检测软键盘和物理按键讲解及实战(附源码 演示简单易懂)
Android App开发之事件交互Event中检测软键盘和物理按键讲解及实战(附源码 演示简单易懂)
1187 0
|
iOS开发
scenePhase 的作用 -- 检测 APP 是否在后台
SwiftUI 提供了一个名为 `scenePhase` 的 环境变量,它在应用程序在前台、后台和非活动状态之间切换时会自动更新。你可以在 App 结构体本身或任何 SwiftUI 视图中观察这些状态的变化。
scenePhase 的作用 -- 检测 APP 是否在后台
|
存储 数据采集 人工智能
App隐私合规“免费”自动化检测
App隐私合规检测提供了全面的隐私合规检测报告和专家建议,从确保形式合规(隐私政策文本合规性)及实质合规(代码层合规性)的一致性,从个人信息收集、权限使用场景、超范围采集、隐私政策、三方SDK等多个维度帮助企业和开发者提前识别App隐私合规相关风险,规避监管通报、应用下架等重大风险。
5806 1
App隐私合规“免费”自动化检测

热门文章

最新文章