如何更改iOS应用程序的权利?

zzz*_*zzz 14 xcode objective-c jailbreak entitlements ios

我需要运行以下代码来关闭我的iPhone屏幕.

在iOS6上:

void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");
Run Code Online (Sandbox Code Playgroud)

然后使用:

BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim
Run Code Online (Sandbox Code Playgroud)

它不起作用.有人告诉我,我需要com.apple.backboard.client权利才能在我的iphone上运行.我不知道如何设置这些权利.我已经看到了几种设置权利的方法,但它们对我来说非常困惑,就像这一样.

是的,您需要对权利进行编码签名.但是,不,它不必与越狱手机上的Apple证书.您可以通过下载ldid可执行文件伪造代码签名,然后执行

cd MyAppName.app 
ldid -Sentitlements.xml MyAppName
Run Code Online (Sandbox Code Playgroud)

假设您的应用程序名为MyAppName,并且您创建了权利文件entitlements.xml.我相信这个权利文件对你有用,如果你伪造用ldid代码签名的话.

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
   <dict>
     <key>com.apple.backboard.client</key>
     <true/>
   </dict> 
</plist>
Run Code Online (Sandbox Code Playgroud)

即使使用上述方法,我在哪里放置上述权利文件?

Nat*_*ate 18

对于越狱应用程序/权利,您需要执行类似的操作.首先,创建一个名为entitlements.xml(或任何你喜欢的)的文件:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.backboard.client</key>
    <true/>
  </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以添加更多权利.此示例文件仅授予应用程序com.apple.backboard.client权利.

放置此文件的位置并不重要.关键是:

  1. 您需要修改Xcode的SDKSettings.plist文件,如下所示. CODE_SIGNING_REQUIRED应该设置为NO.
  2. 不要在Xcode中对您的应用进行代码签名.在" 构建设置"中,确保将代码签名标识设置为"不代码签名".
  3. 然后,为iOS设备构建应用程序(而不是模拟器!),然后转到Mac上输出文件所在的目录.对于名为的应用,您正在寻找该文件夹.它可能因您的配置而异,因此我不会费心去告诉您它的位置.如有疑问,请使用命令行命令.HelloWorldHelloWorld.appfind
  4. ldid从此位置预先下载,或从此处下载.
  5. 将entitlements.xml文件复制到where所在的目录中HelloWorld.app.(注意:您不具备在这里拥有它......如果你把它放在别的地方,只是调整的命令行我告诉你下面).
  6. 将目录更改为entitlements.xml文件所在的目录.
  7. 使用此命令进行伪代码签名:
$ldid -Sentitlements.xml HelloWorld.app/HelloWorld
Run Code Online (Sandbox Code Playgroud)

在此之后,您需要传输整个HelloWorld.app文件夹以在您的设备上安装该应用程序.有很多方法可以做到这一点,听起来你已经有办法了.

我有一个脚本的整个过程设置,以使其更容易.

注意:我没有说明此权利是否是用于BKSDisplayServicesSetScreenBlanked()iOS 6上的呼叫的正确权利.我没有测试过.我知道此权利可以让您SBDimScreen()在较低的iOS版本上使用.但是,这个答案只是描述如何为越狱应用程序添加此类权利.