绕过BlueStacks内核的反模拟器检测
本帖最后由 qtfreet00 于 2020-3-27 15:11 编辑Github: https://github.com/qtfreet00/Anti-BlueStacks
BlueStacks新版本的模拟器在特征文件和路径上做了屏蔽,在分析后发现具体的反检测逻辑位于内核层中
内核文件路径`BluestacksCN\Engine\ProgramData\Engine\Android\fastboot.vdi`,提取其中的fastboot即可进行Ida分析
搜索字符串可以看到大量的模拟器特征
##### 这是一个绕过bst模拟器内核屏蔽模拟器特征路径和特征文件的一个绕过方式,主要展示的是一个绕过手段,具体技术完善和规则完善需要自己去补充
##### 反模拟器检测目前主要有两种手段,一种是定制libc,对open,stat,access函数入口进行判断,常用C函数将无法进行判断,可使用svc进行绕过,第二种更直接的可以定制内核,通常情况下,应用层完全无法直接进行检测,此Demo主要针对他规则方面的缺陷进行的绕过手段
bst模拟器在内核层对常用的io函数针对路径和特征文件绝对路径进行了强匹配,并且去除了/../绕过,使得常规的这种方式无法检测到特征文件,
如下代码全部使用标准函数实现,未使用svc,核心代码:
```
static int is_file_v2_exists(const char *path) {
char *dir = dirname(path);
int cd = chdir(dir);
if (cd != 0) {
return 0;
}
char *base = basename(path);
if (access(base, R_OK) == 0) {
E("find v2 %s success", path);
return 1;
} else {
E("find v2 %s error,error is %s", path, strerror(errno));
}
chdir("/");
return 0;
}
static int is_file_v1_exists(const char *path) {
if (access(path, R_OK) == 0) {
E("find v1 %s success", path);
return 1;
} else {
E("find v1 %s error,error is %s", path, strerror(errno));
}
return 0;
}
```
测试:下载工程中的app-debug.apk安装到bluestacks模拟器中,logcat过滤qtfreet00即可
```
E/qtfreet00: find v1 /data/.bluestacks.prop error,error is No such file or directory
E/qtfreet00: find v2 /data/.bluestacks.prop success
E/qtfreet00: this is bst emulator
```
##### 检测的均为同一文件 `/data/.bluestacks.prop`,通过cd命令绕过它的强规则匹配,此方法同样可以作用于IOS的越狱屏蔽检测以及其他的反模拟器检测,也有很好的效果 意思是新版本的蓝蝶模拟器可以屏蔽模拟器特征,让app无法检测到这是模拟器,楼主提供了一个可以检测到这是模拟器的方式?小白,不知道这样理解的对不 大牛 我这边看到你的教程反模拟器检查总是闪退可以请教一些不 1K起我的口扣 7616122 赞一个,很不错的内容。 可以可以,从音乐助手之后,这个项目等了好久了。不过最近github联通正常访问上不去,还听说被攻击了。 谢谢哥哥的教程 哈哈哈 厉害厉害 学习了 感谢分享 厉害 学习了 看不懂下载那个文件,求教 好东西,值得学习。 {:301_999:}小白求问,这可以玩和平精英吗