iOS - 如何避免列出已安装的应用程序?

iOS - How to avert listing of the installed apps?

我有一台安装了 Undecimus 的 iOS 设备。当我尝试启动非越狱专用游戏 Tapsonic TOP 时,它会以某种方式读取我的应用程序列表并显示 "Illegal program detected" 并自行退出。我在越狱和不越狱的情况下都尝试过这个,我确实做了一些调整来隐藏越狱检测,所以这不太可能是越狱问题。

我在 Whosebug 上进行了搜索以了解这是如何实现的。一种方法是读取应用程序文件夹以检索文件列表,另一种方法是保留应用程序白名单并使用 canOpenUrl 检查每个应用程序是否存在。

Is it possible to get installed apps in ios

是否可以修改系统,使其在没有SU权限的情况下读取应用程序文件夹时return只列出系统应用程序目录,而在检查[=11时始终return false =]?

经过一段时间的研究,我弄清楚了幕后发生的事情。

真相:

游戏通过越狱检测检测到 "illegal" 用户,而不是通过检索已安装的应用列表。

详情:

我把游戏的可执行文件从iPhone拉到IDA里,在函数window里搜索关键词'jail',结果发现有一个方法叫做 +[PmangPlus 设备越狱]。基本上该方法检查了几个文件(包括 /Applications/Cydia.app,/Applications/RockApp.app,/Applications/Icy.app 等),如果这些文件中的任何一个存在,该方法将 return @"Y",否则@"N".

然后我写了一个 substrate tweak 来绕过这个检测,它 worked.This 通过挂钩方法和 returns @"N".

来工作

希望对您有所帮助。