iOS 越狱检测
标签:越狱检测、反越狱检测插件、反外挂、iOS游戏加密
时间:2021-05-08

     在 iOS 越狱设备上,游戏外挂开发人员可以对游戏程序砸壳用于逆向分析,也可以利用 substrate 对游戏逻辑进行 hook 从而制作出各种游戏外挂。这些游戏外挂程序可以被其他越狱玩家直接安装,也可以通过 cydia 商店进行分发。鉴于用户使用越狱设备可能带来不良影响,所以很多 app 都会检测设备是否越狱。

     我们可以在网络上找到许多越狱检测代码,像[1] [2] [3],但这些代码存在一些问题。

     1. 误报/漏报。这些代码都会检测一些文件是否存在,比如 /Application/Cydia.app。如果一台越狱设备未使用 cydia 商店,就会造成漏报;如果一台设备使用了不完美越狱并使用了 cydia 商店,机器重启后其实已经是未越狱状态,但 /Application/Cydia.app 依然存在,这种情况下就会造成误报。

0.jpeg

     2. 在反越狱检测插件下失效。市面上存在许多免费的反越狱检测插件,常见的就有 hidejb / abapass / flyjb 等。这些插件对系统接口层做了许多 hook, 过滤所有与越狱相关的字符串,从而使得应用层无法正常检测。下文将分析反越狱插件的一些常见套路。

1.jpeg

     我们收集并分析了大量反越狱检测插件,这里展示一些它们绕过越狱检测的常用手段。

     1. Hook NSFileManager 的 fileExistsAtPath,过滤越狱相关字符串。

2.png

     2. 伪造进程模块列表,防止越狱相关模块被检测。

3.png

     3. Hook stat / access / lstat 等 c 层 api, 过滤越狱相关文件。

     4. 对 app 代码中的 svc 汇编代码进行 patch hook, 隐藏越狱相关文件。


     我们在分析了大量反越狱插件的基础上,针对性地开发了越狱检测模块,该模块具有以下特点:

     1. 不使用网上已有的越狱检测代码&思路,避免上文分析到的问题,不误报。

     2. 针对反越狱插件做处理,不漏报。

     3. 根据多种运行时信息综合判断,对未知反越狱插件/越狱方式做检测。


结语:

      FairGuard专注于游戏加固与反外挂,对 Unity 引擎,尤其是Unity加密有深入研究,为 Unity 应用提供深度一体化加密保护方案。 

     目前产品已经被FunPlus、三七互娱、游族等多家头部公司采用。TapTap排行榜以及买量排行榜上亦有多个游戏使用。

有兴趣的加QQ号:2079128588 或者 微信 fairguard001 咨询


技术交流可加QQ群:1105310296