草庐IT

ios - 我可以在越狱调整中添加 entitlements.plist 吗?

coder 2024-01-19 原文

我想限制越狱调整获得的资源访问量。诸如网络/钥匙串(keychain)/位置访问之类的东西......是否可以在每次调整时手动添加权利 plist?

非常感谢。

最佳答案

Tweak 是一个 dylib - 它将在一个进程中加载​​。该过程可能有权利,这些权利将用于调整。而已。 Tweak 没有自己的权利。

关于你的问题。因为我之前说过你不能只限制一个调整 - 你的限制将应用于正在调整的整个过程。你对此无能为力。这就是 tweaks 的工作原理——它们是动态加载到进程地址空间中的动态库。之后,调整成为流程的一部分。因此,任何限制都将应用于整个过程,包括调整、应用程序代码和链接到的任何其他 dylib/框架应用程序。

因此,如果您想开发一个应用程序来帮助用户限制调整,我认为您做不到这样的事情。您可以做的是分析哪个应用程序正在被调整,它们有什么权利,调整使用了哪些框架和动态库(主要是私有(private)的)。该用户可以启用或禁用该调整。您甚至可以分析调整的导入部分和字符串文字,以确定它使用了哪些 API。

更新

Could you explain to me how a native process communicates with a tweak, before being loaded within the process space?

事实并非如此。在注入(inject) tweak 之前是一个单独的 dylib,它没有链接到任何二进制文件。 CydiaSubstrate 负责所有的注入(inject)。 CydiaSubstrate 的主要部分是一个特殊的加载器 dylib。它动态链接到设备启动时的 launchd 进程,该进程是 iOS 中启动所有其他进程的第一个进程。当一个新进程被生成时,CydiaSubstrate 加载器 dylib 检查所有调整过滤器以查看它需要将哪些过滤器注入(inject)到进程中并注入(inject)它们。将 tweak 加载到进程地址空间(成为进程的一部分)后,调用 tweak 的构造函数,通常所有 Hook 都已设置。

Could you explain to me as to how this is accomplished?

假设您有一组 objc 类名、C/C++ 函数、框架和 dylib 作为您想要检测的字符串用法。有简单的解决方案。您可以打开 tweak 的文件并在其中搜索任何匹配项。由于调整通常不是很大,因此不会花费太多时间。还有更困难的解决方案。使用 dyld 或任何其他 API 解析 mach-o 部分以查找导入的符号和字符串文字,然后在它们中搜索任何匹配项。

关于ios - 我可以在越狱调整中添加 entitlements.plist 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664169/

有关ios - 我可以在越狱调整中添加 entitlements.plist 吗?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  3. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  4. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  5. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  6. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  7. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  8. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  9. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  10. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

随机推荐