看到this question保护您的应用不被破解,我看到顶级回答者提到了能够看到设备是否因内核中的某些内部不平衡而被越狱的事情。仔细研究了一下,我发现了Kernel Architecture Overview指南,并且知道了与Mach-BSD内核交互的方法。我需要知道的是:我在寻找什么?当设备在内核的上下文中被越狱时,是否存在某种键或内部状态会发生变化?
要清楚,我不是在寻找代码(我知道如何自己做这些事情),我正在寻找寻找的东西......听起来很奇怪。我已经看到了链接问题中的答案,我知道它们有效,但我想知道所有内核路由,这似乎是一种通用且有效的方法来检查而不是搜索可能更改或删除可能具有不同名称的键的目录。
我也不打算因为盗版而禁用应用程序的任何功能(只是根据条件显示消息或其他内容)。
答案 0 :(得分:23)
所有"现代"内核补丁基于comex's patches。
正在修补的主要内容是:
security.mac.proc_enforce
cs_enforcement_disable (kernel and AMFI)
PE_i_can_has_debugger
vm_map_enter
vm_map_protect
哦,还有沙盒补丁。如果您想了解有关所有这些补丁的更多信息,我建议您查看iOS Hacker's Handbook。
编辑: 我想出了一个简单的想法来检查设备是否已越狱,但我不确定Apple是否允许使用这些功能:
使用mach_vm_allocate()
通过mach_vm_protect()将该页面的保护更改为VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY
由于iOS不允许在您的应用程序内部使用VM_PROT_EXECUTE,因此会失败,检查mach_vm_protect()的返回值,如果没有越狱,但如果设备被越狱则检查成功。
答案 1 :(得分:1)
大约一年前,saurik写了comment on Hacker News with a list of the "'best practice' patches that jailbreaks install by default"。我建议阅读所有细节的评论,但这里是他所说的预览(有很多解释我已经剪掉了):
AFC2:允许您通过USB访问所有/作为root用户而不仅仅是/ var / mobile / Media作为移动设备。
fstab / rw:make / bemount read-write。
fstab / var suid dev:允许用户数据分区上的setuid可执行文件和设备节点。
codesign:允许任何人都没有签名的代码执行。
codehash:允许执行“损坏”代码页的进程。
rw-> rx:支持将内存页面从可写更改为可执行文件。
rwx:允许将内存标记为写入并同时执行。
sandbox:允许进程根据Unix权限而不是普通的沙箱访问沙箱外部的文件 规则。
- 醇>
crazeles:一个非常复杂的黑客攻击行星,FairPlay DRM检查导致iBooks拒绝操作 正确地使用越狱设备。