模拟器检测

往期推荐

文件检测

签名验证

资源文件混淆

apk保护策略——Java代码混淆

模拟器检测的就是指通过检测确认软件、手游等不能运行在模拟器上面。比如一个游戏,它能够在模拟器上实现批量刷金币或者是其他功能,但模拟器又无法启动起来,在这种情况下,就需要使用真机,相应地成本也就增加了。

检测模拟器包含的配置信息是非常多的,包括wifi、蓝牙、电量、cpu等等。

接下来进行实际操作,演示如何检测模拟器。

在模拟器中打开“设置”选项,来到最后一项“关于平板电脑”,如下图所示。

在这里插入图片描述

一:析代码

在获取基本信息之后,分析其中的代码,具体操作流程如下。
1.定义一个数组,检测两个通道,然后循环,判断输出,如下图所示。

在这里插入图片描述

2.检测驱动文件内容,读取文件信息,检查已知QEmu驱动程序的列表,如下图所示。

在这里插入图片描述

3.检测模拟器上特有的几个文件,如下图所示。

在这里插入图片描述

4.寻找模拟器默认的电话号码,如下图所示。

在这里插入图片描述

5.检测设备IDS 是不是 “000000000000000”,如下图所示。

在这里插入图片描述

6.检测imsi id是不是“310260000000000”,如下图所示。

在这里插入图片描述

7.检测手机上的一些硬件信息,如下图所示。

在这里插入图片描述

8.检测手机运营商家,如下图所示。

在这里插入图片描述

9.基于模拟器cpu信息的检测,如下图所示。

在这里插入图片描述

10.关键路径检测特定模拟器检测,如下图所示。

在这里插入图片描述

11.除上述以外,还有一些模拟器默认的软件,如电游戏中心、终端模拟器以及谷歌安装器。

二:分析样本

安装江湖风云,当出现“应用在模拟器上运行”信息提示时,表示该程序已成功运行,如下图所示。

在这里插入图片描述

对于没有提示信息的,只能分析他的代码,将程序放入androidkiller里进行反编译。还有一种协议检测,他会通过将包发送给服务器,由服务器来判断目前的环境是不是模拟器。首先来查看权限,显示为蓝牙,而模拟器是没有蓝牙的,如下图所示。

在这里插入图片描述

1.分析这些权限,如果将权限删掉就不会调用,但如果使用暴力删掉,有时程序就会崩溃,如下图所示。

在这里插入图片描述

2.在工程搜索栏进行搜索,搜索字符“应用在模拟器”,没有搜索到结果,如下图所示。

在这里插入图片描述

3.转U码,再次搜索,在模拟器上搜到两处,如下图所示。

在这里插入图片描述

4.进入后,找到所在方法,如下图所示。

在这里插入图片描述

5.继续查看本类的其他方法,其中还有一个初始化,如下图所示。

在这里插入图片描述

6.继续查看入口界面application处,如下图所示。

在这里插入图片描述

7.找到入口,如下图所示。

在这里插入图片描述

8.进入后,找到Oncreate,如下图所示。

在这里插入图片描述

9.简单进行分析,发现入口界面丢失,这里cocos2d设计游戏引擎,找到运行在模拟器上的位置,如下图所示。

在这里插入图片描述

10.直接定位过去,看Java代码,if判断,Toast弹出模拟器上运行,然后杀死进程,退出,如下图所示。

在这里插入图片描述

11.把killProcess这个函数nop掉,就可以过掉模拟器检测。

小结

了解模拟器检测的原理以及常见的模拟器检测手段,在这里还析了一个实例,找到模拟器检测的代码

如果你也对安卓逆向感兴趣。可以加入下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程

安卓逆向交流学习 Q群:876526335
vx:yijin_LX

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YJJYXM/article/details/110190216