反模拟器检测目前主要有两种手段,一种是定制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即可