SpringBoard Hooking

Piuttosto che salvarmi questo link tra i preferiti ho preferito postarlo qui :slight_smile:
Magari a qualche smanettone incallito farà piacere

[Tutorial] Hooking SpringBoard - iPod touch Fans forum

(E giusto per contraddire qualche “sapientone” convinto che winterboard “duplichi gli indirizzi di memoria” (frase senza senso tra l’altro)… e sempre pronto a cancellare i commenti fatti che contraddicono il suo immenso sapere :D)

Vi riporto anche uno spezzone di una mail di saurik

Mobile Substrate is pretty much mach_inject (although people who have used
both claim that my interface is better/simpler) for the iPhone. You make a
.dylib, configure what processes you want it injected into (you can also
just say “all processes”), and drop it (and the trivial .plist configuration
for it) into /Library/MobileSubstrate/DynamicLibraries. It has been used for
everything from letting you put five icons on your dock to rewriting half of
the voicemail application to placing little thumbnails of peoples’ contacts
to the left of their names in the Phone application. Pretty much all of the
sponsoring applications are using it for something. In essence, it is the
(very small, very simple) cornerstone of jailbreak software technology.

ecco perchè usare la toolchain e non l’sdk :smiley:
http://www.iphoneitalia.com/creare-applicazioni-per-iphone-senza-avere-os-x-17521.html

scusa la domanda da ignorante, ma che significa “winterboard duplica gli indirizzi di memoria”?

per quella frase mi riferisco a questo:
Daemons e Background: Come ottimizzare la durata della batteria ed evitare rallentamenti con un utilizzo eccessivo di memoria | iSpazio - Il Blog sull’iPhone più letto in Italia e nel Mondo - iphone, iphone 3g, ipod, ipod touch, ipod touch 2g, apple
e del fatto che mi vengono cancellati i commenti quando faccio notare che le spiegazioni tecniche fornite agli utenti sono delle emerite stronzate :smiley:

(chissà se ora dal trackback modificherà quello scempio)

quindi winterboard “ciuccia” meno memoria di quanto dicano loro?
in effetti anche a me sembrava strano…con free memory ed altri tool, non ho visto molta differenza tra il tema di default ed uno messo con winterboard (non un tema leggerissimo…icone, wallpaper, dock, lockscreen e sliders)…giusto 1 o 2 mb in più di utilizzo

siamo ot…questo è un topic in dev center sull’hooking, non sul risparmio della memoria :smiley:

Ad ogni modo una volta per tutte:
SpringBoard: -> servizio com.apple.SpringBoard (/System/Library/CoreServices/SpringBoard.app/SpringBoard) (pensiamolo come explorer.exe su win) occupa memoria, nessuno ci può fare nulla.

Mobilesubstrate: è una libreria che permette l’hooking di variabili e metodi -> occupa memoria (pochi kb, impercettibile)

Winterboard: Hooka alcune funzioni relative alla spring modificandole (utilizzando mobilesubstrate) e le funzioni che sono modificate vengono riscritte -> nuovo codice in memoria.
Ad esempio

MSHook(UIImage *, UIImage$defaultDesktopImage, UIImage *self, SEL sel) {
if (Debug_)
NSLog(@“WB:Debug:DefaultDesktopImage”);
if (NSString *path = $getTheme$([NSArray arrayWithObjects:@“LockBackground.png”, @“LockBackground.jpg”, nil]))
return [UIImage imageWithContentsOfFile:path];
return _UIImage$defaultDesktopImage(self, sel);
}

[fonte]
Codice in blu: Simbolo della funzione originale, chiamerà la vecchia funzione nativa -> stesso spazio di prima
Codice in rosso: codice aggiunto -> occuperà NUOVO spazio in memoria (pochi kb, impercettibile)

Se poi il nuovo codice fa in modo che vengano visualizzate nuove immagini (o diverse dalla precedenti) come in questo caso per forze di cose di occupa altro spazio in memoria…
E se il backgound nero pesa 5kb e uno ne carica uno elaborato da 200kb per forza la memoria libera è meno di quella originale, oppure se vengono caricate pagine html con effetti in javascript… certo pesano più di uno sfondo nero

Ma winterboard non duplica niente

Facciamo un gioco.
decomprimente lo zip e trasferite i due file “countdown.dylib” e “countdown.plist” sotto “/Library/MobileSubstrate/DynamicLibraries/” e poi respringate.

Cosa fa questa libreria?

Ho scoperto cosa fa la tua libreria :slight_smile: (stamattina, quando ho provato a connettermi alla rete di facoltà per navigare durante una lezione inutile…)

L’unico problema è che tolti i 2 files dalla dynamicLibraries mi resta il “No” rosso sopra l’icona di safari, come posso eliminarlo?

ehhe ci ho pensato dopo averla pubblicata :smiley:

per pulire il badge di safari basta un respring, comunque in generale ho fatto questa lib badgeclear.

metti i due file .dylib e .plist sempre sotto /Library/MobileSubstrate/DynamicLibraries/ e respringa.
Ad ogni avvio di qualsiasi app verrà pulito il badge (quindi serve anche per pulire tipo l’Appstore, cydia etc…). Quando non ti serve piu cancellala

Grazie :slight_smile:
Stasera lo provo.

Edit:
Perfetto, è tornato tutto come prima :slight_smile:

scusate l’ignoranza (voglio apprendere…) cosa fa in sostanza questo .zip
“velocizza” safari o “snellisce” la memoria?

grazie!

Nessuna di queste due cose :stuck_out_tongue:

come ha detto tool è un gioco…:smiley: e dopo che hai scoperto casa fa sei costretto a eliminare i file se vuoi continuare a usare normalmente safari :smiley: