Results 1 to 11 of 11

Your favorite Apple, iPhone, iPad, iOS, Jailbreak, and Cydia site.


Thread: Editing com.apple.springboard.plist without reloading springboard SCPreferences

  1. #1
    Developer
    Join Date
    Mar 2008
    Posts
    10
    Thanks
    0
    Thanked 2 Times in 1 Post
    Default Editing com.apple.springboard.plist without reloading springboard SCPreferences
    'm currently building a tool - daemon that will dynamically edit springboard settings depending on what you have loaded on your phone.For that reason im using plutil from Erica's ported utilities to edit ~/Library/Preferences/com.apple.springboard.plist.The main problem lies that no matter what modification I do in that file in order for it to work it needs a springboard restart.

    To test it try altering any value with SSH and you will see that even though it shows it changed it will still do what the initial value does till the time you respring.Use autolock time or dim time for easy testing.

    Since the prefferences.app manages to load any change on the fly without the need for restart im currenlty in dire need on any idea of how can this be achieved

    I do suspect that all I need to do is call SCPreferences or CFPreferences to apply the changes but i have no idea how to do that on the iphone

    Any idea is greatly appreciated....

  2. #2
    theres a tool out there currently that will allow the phone to respring without restarting...

  3. #3
    I am also looking to build this functionality in my app. I started looking at MakeItMine by Erica Sadun which can apply SBFakeTime SBFakeTimeString and SBFakeCarrier without restarting. I did a little bit of reverse engineering and found this.
    iPhone:/Applications/MakeItMine.app root# strings MakeItMine
    .......
    /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices
    GSSendAppPreferencesChanged
    com.apple.springboard
    .......
    /private/var/mobile/Library/Preferences/com.apple.springboard.plist
    SBFakeTime
    SBFakeTimeString
    SBFakeCarrier
    Banner
    Carrier
    .......
    And a hex dump shows this
    3470 66756e63 73000000 2f537973 74656d2f funcs.../System/
    3480 4c696272 6172792f 50726976 61746546 Library/PrivateF
    3490 72616d65 776f726b 732f4772 61706869 rameworks/Graphi
    34a0 63735365 72766963 65732e66 72616d65 csServices.frame
    34b0 776f726b 2f477261 70686963 73536572 work/GraphicsSer
    34c0 76696365 73000000 00000000 47535365 vices.......GSSe
    34d0 6e644170 70507265 66657265 6e636573 ndAppPreferences
    34e0 4368616e 67656400 636f6d2e 6170706c Changed.com.appl
    34f0 652e7370 72696e67 626f6172 64000000 e.springboard...
    But when i try to do a class dump of GraphicsServices i get an error.
    iPhone:/System/Library/Frameworks/GraphicsServices.framework root# class-dump -H GraphicsServices
    2008-07-29 16:10:39.190 class-dump[1309:10b] Warning: This file does not contain any Objective-C runtime information.
    As I am fairly new to Objective-C it would be great if someone could post some sample code or figure out how to get a class dump or something to point me in the right direction!

  4. #4
    GS is GraphicsServices, so what if you do a strings dump on the GraphicsServices.framework? Can you find a reference to GSSendAppPreferencesChanges?

    Based on what else we see, I'd be tempted to try a
    extern void GSSendAppPreferencesChanged(CFString*);
    Starlight Computer Wizardry
    Pocket-sized Development
    Follow me on twitter: @NetMage

  5. #5
    a quick srings and grep with MobileTerminal shows nothing. But we all know that MakeItMine works and that is the only likely result so it's likely that apple obfuscated it as it is a private function. The CFString you are refering to would be com.apple.springboard bundle identifier right?

    Sent from my iPhone 3G!

  6. #6
    Yes, looking at my strings and disassembly from GraphicsServices that appears to be one of the parameters.

    Unfortunately it also looks like it takes another parameter NamedPurplePort? Not sure on this one...
    Starlight Computer Wizardry
    Pocket-sized Development
    Follow me on twitter: @NetMage

  7. #7
    What tool are you using to disassemble the framework? I've tried otool otx and a few others I don't remember but they all gave me an error like no objective c header or something.

    Perhaps we could try looking at something that uses CGSendAppPreferencesChanged? I think preferences.app uses it. What about activation? It sets the carrier logo and settings without a restart (I think) maybe that could help.

  8. #8
    I use otool -tv to disassemble files
    Starlight Computer Wizardry
    Pocket-sized Development
    Follow me on twitter: @NetMage

  9. #9
    Default Changing settings without respring
    I found a way, in hurry to post it. if you need send me mail at neha two zero zero six (in digits two times) at hotmail

    or post it here, i will get notification.
    Last edited by beyondhorizon; 05-09-2009 at 01:17 PM. Reason: Automerged Doublepost

  10. #10
    Hi beyondhorizon, I'm trying to do this as well... How did you find the way? Could you post it?

  11. #11
    Me too, please post

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •