iOS越狱检测时如何防止调试工具绕过检测?
最近在做App的越狱检测功能,用CSS检查字体路径的方法总是被工具绕过。比如写个字体样式:
@font-face {
font-family: 'test';
src: url('/var/root/fakefont.woff'); /* 越狱设备常见路径 */
}
body::before {
content: '未越狱';
font-family: 'test';
speak: none;
display: none;
}
body::before {
content: '已越狱';
font-family: 'test';
}
但测试时发现,用Cydia的substrate或一些调试工具直接拦截了CSS请求,导致检测结果总是显示未越狱。试过把检测逻辑改成JavaScript动态创建样式表,结果还是被Hook了…
有没有更可靠的检测方案?或者需要结合哪些系统级的特征才能有效识别?
同时建议结合检查是否存在越狱特征文件,比如:
这里给你一个简单的代码示例,结合文件路径和进程检测:
不过也别抱太大希望,高手分分钟连这段都能Hook掉。真要防得死死的,建议服务器端配合做一些校验,光靠客户端总有漏洞可钻。搞安全这活儿,累觉不爱啊...