Updating extensions for iOS 8: Difference between revisions

From iPhone Development Wiki
No edit summary
No edit summary
Line 15: Line 15:
</source>
</source>


* installd can no longer be controlled via launchctl, it would appear. At least, I (Karen/angelXwind) haven't gotten it to - this happens: <code>/System/Library/LaunchDaemons/com.apple.mobile.installd.plist: The specified service path was not in the service cache</code>
* launchctl appears to be slightly broken. launchctl start and stop work perfectly, but launchctl load and unload break with the cryptic error message <code>/System/Library/LaunchDaemons/com.apple.mobile.installd.plist: The specified service path was not in the service cache</code>


* After doing some digging into iOS 8's installd binary, I (Karen/angelXwind) have found that MISValidateSignatureAndCopyInfo performs additional code-signing checks during app installation now, which is one of the reasons why AppSync Unified no longer works in iOS 8. The second reason is that installd can't be reloaded via launchctl anymore, which is what the ASU postinst script does in order for ASU to inject into installd.
* After doing some digging into iOS 8's installd binary, I (Karen/angelXwind) have found that MISValidateSignatureAndCopyInfo performs additional code-signing checks during app installation now, which is one of the reasons why AppSync Unified no longer works in iOS 8. The second reason is that installd can't be reloaded via launchctl anymore, which is what the ASU postinst script does in order for ASU to inject into installd.

Revision as of 15:20, 25 October 2014

Let's collect knowledge like we did with Updating extensions for iOS 7 - paste in your notes and share what you've learned, and somebody else will organize it later. :) If you want to collaborate over IRC, see IRC for how to connect to #theos and #iphonedev.

Hey developer, you can add your knowledge here! Yes, you! Make an account and edit this page!

What has changed in iOS 8? (Classes, frameworks, etc.)

  • The term 'Display Identifier' has been removed from SpringBoard. Methods that used the term usually have a 'Bundle Identifier' equivalent; e.g. -[SBApplicationController applicationWithDisplayIdentifier:] and -[SBApplication displayIdentifier] are now -[SBApplicationController applicationWithBundleIdentifier] and -[SBApplication bundleIdentifier]
  • "Has anyone looked into granting entitlements in iOS 8? It would appear the popular method of hooking "_XPCConnectionHasEntitlement" no longer works." "I haven't had a whole lot of time to do testing or look for better methods but I found "_BSAuditTokenTaskHasEntitlement" which appears to have a similar function to "_XPCConnectionHasEntitlement", its part of the "assertiond" process which must be hooked in order to access it, so far it's worked. More specifically, part of the "BaseBoard" private framework within "assertiond"."
  • PLBatteryPropertiesEntry no longer seems to exist for getting current battery info such as: [PLBatteryPropertiesEntry batteryPropertiesEntry].currentCapacity. You can still use:
io_service_t powerSource = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPMPowerSource"));
CFNumberRef currentCapacityNum = (CFNumberRef)IORegistryEntryCreateCFProperty(powerSource, CFSTR(kIOPMPSCurrentCapacityKey), kCFAllocatorDefault, 0);
  • launchctl appears to be slightly broken. launchctl start and stop work perfectly, but launchctl load and unload break with the cryptic error message /System/Library/LaunchDaemons/com.apple.mobile.installd.plist: The specified service path was not in the service cache
  • After doing some digging into iOS 8's installd binary, I (Karen/angelXwind) have found that MISValidateSignatureAndCopyInfo performs additional code-signing checks during app installation now, which is one of the reasons why AppSync Unified no longer works in iOS 8. The second reason is that installd can't be reloaded via launchctl anymore, which is what the ASU postinst script does in order for ASU to inject into installd.
  • NO PLS RECOVERY (which basically hot-patches EnterRecovery out of lockdownd using Substrate) still works in iOS 8.
  • Mobile application containers are at /var/mobile/Containers/Application
  • Looks like certain apps dont have privileges for IORegistryEntryCreateCFProperty anymore (Safari, Mail)
  • xTM3x has been doing some research into preference saving (log, file atomicity takes long enough to see the auxiliary files)

What is new in iOS 8, and how does it work?

  • "would anyone happen to know what the view Reachability invokes is?" "Yes, in the new framework FrontBoard, you can hook it. It is a FBWindowContextHostView."
  • FrontBoard is a new thing
  • Apple seems to call the iOS side Octavia and the OS X side Nero


Which tools and other preexisting things are still working on iOS 8? Which ones don't work?

  • While the syslogd package above doesn't work, installing socat and running socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock still works on iOS 8. You can pipe it to a file if you want.
  • libsymbolicate doesn't work on 8... (VMUHeader is gone from Symbolication.framework)
  • RocketBootstrap seems to work

Random assorted other notes

  • In things like SBStarkBanner* classes, Stark is the codename for the blur-heavy UI since iOS 7