我想限制对越狱调整获得的资源访问量。网络/钥匙串/位置访问之类的东西......是否可以根据调整手动添加权利plist?
非常感谢。
答案 0 :(得分:2)
Tweak是一个dylib - 它将在一个进程中加载。该流程可能具有权利,这些权利将用于调整。而已。 Tweak没有它自己的权利。
至于你的问题。由于我之前所说的不能仅限于调整 - 您的限制将适用于正在调整的整个过程。你无能为力。这就是调整的工作原理 - 它们是动态加载到进程地址空间的dylib。之后,调整成为流程的一部分。因此,任何限制都将应用于整个过程,包括调整,应用程序代码和任何其他dylib /框架应用程序链接。
因此,如果你想开发一个可以帮助用户限制调整的应用程序,我认为你不能做这样的事情。您可以做的是分析正在调整的应用程序,它们具有哪些权利,调整使用了哪些框架和dylib(主要是私有的)。从该用户可以启用或禁用该调整。您甚至可以分析调整的导入部分和字符串文字,以确切地确定它使用哪些API。
<强>更新强>
你能解释一下原生进程如何与a进行通信 在进程空间中加载之前调整?
没有。在注入tweak之前是一个单独的dylib,它没有链接到任何二进制文件。 CydiaSubstrate完成所有注射。 CydiaSubstrate的主要部分是一个特殊的加载器dylib。它与设备启动时的launchd
进程动态链接到进程,该进程是iOS中启动所有其他进程的第一个进程。当一个新的进程产生时,CydiaSubstrate加载器dylib会检查所有的tweak过滤器,看看它需要注入哪些过程并注入它们。在将调整加载到进程地址空间(成为进程的一部分)之后,调用tweak的构造函数,通常所有挂钩都被设置。
你能解释一下这是如何实现的吗?
假设您有一个objc类名称,C / C ++函数,框架和dylib的数组作为您想要检测的字符串用法。有简单的解决方案。您可以打开tweak的文件,只搜索任何匹配项。由于调整通常不是很大,所以不应该花费太多时间。还有更困难的解决方案。使用dyld或任何其他API来解析mach-o部分以查找导入的符号和字符串文字,然后在其中搜索任何匹配项。
答案 1 :(得分:0)
我不确定这是否会从用户端回答您的问题,但如果您进行了调整,则可以将XXX_CODESIGN_FLAGS = -Sentitlements.xml
添加到Makefile中,以添加entitlements.xml
中描述的权利