Aceasta este o colectie informala de sfaturi; nu ezitati sa adaugati la acesta si sa rearanjati. Multe dintre acestea provin din #theos pe irc.saurik.com – daca lucrati la actualizarea modificarilor si utilizati Theos, alaturati-va si distribuiti ceea ce ati invatat (consultati IRC).
Cum sa compilati pentru ARM64
Binarele Tweak trebuie sa contina o felie ARM64 pentru a putea fi incarcate in procese pe 64 de biti. Daca nu aveti nevoie sa suportati iOS 4.2.1 sau mai vechi, asigurati-va ca Xcode 5 este instalat si setati ARCHS in Makefile:
De asemenea, veti avea nevoie de versiuni actualizate ale oricarei biblioteci pe care le conectati, care contin o felie arm64. Pentru a obtine dylib-ul actualizat al Substratului, consultati instructiunile saurik de mai jos, pornind de la wget-ul Debstrate de substrat.
Cum sa compilati pentru ARMv6 si ARM64
Compilarea pentru ARMv6 si ARM64 este utila doar intr-un subset de situatii normale. Daca ati ajuns pana acum si nu aveti un motiv anume pentru a pastra suportul ARMv6, consultati sectiunea de mai sus. Aceasta tehnica nu pare sa mai functioneze cu Xcode 6 – banuiesc ca compilatorul are vina. Metoda alternativa descrisa mai jos folosind furculeta theos a rpetrich si SDK-urile separate functioneaza in continuare. -joedj
Aceste instructiuni folosesc numai componente de prima parte din Apple, DHowett si saurik (si au fost scrise de saurik).
Ideea este ca vom folosi anumite parti ale Xcode 4 (pe care nu trebuie sa le instalati: este posibil sa il aveti asezat in / Volume) pentru a „repara” partile din Xcode 5, astfel incat sa poata viza armv6 (nevoie de Xcode 4.4.1).
Apoi, il descarcam pe Theos direct din depozitul de cod DHowett si adaugam piesele de care are nevoie din diversele pachete furnizate de saurik.
In cele din urma, in Theos Makefile, specificam ca dorim sa vizam iOS 2.0 folosind SDK 7.0 si ca dorim atat felii ARMv6 cat si ARM64.
Metoda alternativa
Acest lucru este putin mai complicat. Trebuie sa compilati o felie armv6 folosind SDK 5.1 si o alta felie arm64 folosind SDK 7.0. Apoi ii coaseti amandoi impreuna cu lipo. Aceasta postare pe blog descrie cum sa faci asta manual, dar rpetrich a creat o forcheta theos, care face asta automat pentru tine.
Configurare teos rpetrich:
(nota de la rpetrich: theos ar trebui sa fie ca un submodule pentru furca mea, nu este instalat pe o cale de sistem. Caile de sistem sunt periculoase)
Instalati anteturile:
Configurarea Makefile
Theos rpetrich utilizeaza metoda de agatare a objc in loc de MobileSubstrate, prin urmare nu se conecteaza implicit la MS. Acest lucru este in regula daca conectati doar mesaje obj, dar daca trebuie sa utilizati MSHookFunction, trebuie sa spuneti theos sa se conecteze la substratul lib:
(nota de la saurik: dezacordeaza foarte mult faptul ca nu folosesc implementarea MSHookMessage de la Substrate; nu am inteles niciodata de ce rpetrich nu o foloseste, dar in mai multe randuri, modul in care conectam mesajele a trebuit sa se schimbe, iar centralizarea acestuia in Substrat inseamna ca o pot repara. odata pentru extensiile compilate pentru toata lumea … acest lucru s-a intamplat recent ca iOS 5 si toate extensiile rpetrich au trebuit sa fie recompilate si redistribuite, ceea ce este rezonabil de bun pentru el, deoarece este nebunesc productiv si in jur constant, dar pentru majoritatea oamenilor ar trebui sa va rog. folositi doar implementarea centralizata.)
Pentru a utiliza Substrat pentru conectare, fie adaugati acest lucru adaugati partea de sus a fisierului dvs. sursa Logos (de exemplu, Tweak.xm)
Sau adaugati-o la steagurile Logos ale tintei dvs.:
Exemple de proiecte: Aruncati o privire la Makefiles-urile acestor proiecte:
- https://dl.dropboxusercontent.com/u/15373/Other/iPhone/ilogit-tweak-ios7-example.tar
- https://github.com/joedj/ExchangePolicyCleaner/blob/master/Makefile#L3
- https://github.com/a3tweaks/Flipswitch
ARM64 pe Linux
Folosind Darling, cablul de instrumente oficial Apple poate fi folosit pe Linux. Odata instalat Darling, furculita Theos a lui Eswick poate fi folosita pentru a construi pentru ARM64.
XcodeDefault.xctoolchain (obtineti de pe un Mac sau descarcati Xcode de pe site-ul Apple) trebuie sa fie plasate in $ THEOS / toolchain, iar $ THEOS / sdk trebuie sa indice catre SDK-ul iOS 7, astfel:
Vedeti postarea completa a blogului aici pentru instructiuni pas cu pas.
Actualizarea codului pentru ARM64
Cititi documentatia Apple despre ARM64: „Conversia aplicatiei dvs. intr-un binar pe 64 de biti”
Daca aveti nevoie sa testati in mod specific pe 64 de biti:
Detectarea iOS 7
Detectarea daca codul este compilat pentru iOS 7.0 sau o versiune ulterioara:
Retineti ca aceasta este o verificare a timpului de compilare. Pentru a cauta iOS 7 in timpul rularii, comparati cu versiunea CoreFoundation:
Apple uita adesea sa adauge constante de numar de versiune noua in anteturile lor, asa ca este posibil sa fie nevoie sa definiti singur numerele de versiune:
Consultati CoreFoundation.framework pentru o lista completa.
Actualizarea Depresiilor Cydia
Cel mai bine este sa faci fundalul transparent pentru a-l face sa se potriveasca cu fundalul Cydia. Adauga doar urmatoarele in antetul reprezentarii tale:
porno cu negri cu pula mare http://acas-reit.net/__media__/js/netsoltrademark.php?d=adult66.net/
gal gadot porno http://tokyo3.net/__media__/js/netsoltrademark.php?d=adult66.net/
cosmina pasarin porno http://thecannabusatx.com/__media__/js/netsoltrademark.php?d=adult66.net/
porno hd mature http://universdiscount.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/amatori
xxx porno romanesc http://millsgmbrainerd.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/anal
porno salieri http://nationstarhomeloan.org/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/asiatice
porno cu transexuali http://paulapetrik.net/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/beeg
filme porno noi gratis http://pianet.info/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/blonde
filme porno gra http://dogwhisperer.com.au/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/brazzers
old gay porno http://f1rstpay.org/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/brunete
fuilme porno http://federacioninternacionaldediabetes.net/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/chaturbate
porno intre cupluri http://romance-diamonds.com/__media__/js/netsoltrademark.php?d=adult66.net/adolescenta-fututa-cu-forta-si-filmata-de-doi-colegi-mai-mari
film porno cu animale http://lfapoint.org/__media__/js/netsoltrademark.php?d=adult66.net/o-fata-superba-cu-sani-mari-se-masturbeaza-cu-un-vibrator
filme porno cu stuardeze http://buergenstock-conference.com/__media__/js/netsoltrademark.php?d=adult66.net/super-partida-de-sex-cu-o-negresa-cu-fundul-mare
porno daughter http://medicineavenue.com/__media__/js/netsoltrademark.php?d=adult66.net/sex-fierbinte-in-cabinetul-medicului-ginecolog-cu-o-pacienta-sexy
petite porno http://landlouper.net/__media__/js/netsoltrademark.php?d=adult66.net/pustoaica-singura-acasa-fortata-sa-fac-sex-oral-vecinului
porno cur mare hd http://johnsonslegacylandscapes.com/__media__/js/netsoltrademark.php?d=adult66.net/partida-se-sex-hardcore-cu-un-cuplu-de-amatori-romani
penis porno http://trustedmobilepayment.net/__media__/js/netsoltrademark.php?d=adult66.net/sex-oral-anal-cu-un-cuplu-de-amatori-draguti-ramasi-singuri-acasa
filme porno salbatice http://ebenezerestatesales.com/__media__/js/netsoltrademark.php?d=adult66.net/pustoaica-de-17-ani-fututa-dupa-scoala-de-vecinul-mai-mare
porno sport http://toyotafjcruiseraccessories.com/__media__/js/netsoltrademark.php?d=adult66.net/bruneta-surprinsa-in-timp-ce-se-masturbeaza-in-baie-cu-un-vibrator
body.classList.add (“cydia”); } </script>
Si in CSS:
In prezent, stilul de celule de masa Cydia nu a fost modificat pentru a reflecta iOS 7 UI, deci niciun alt CSS nu are nevoie de actualizare.
Theos bootstrap.sh patch pentru ARM64
01:03:36 <therpgitbot> [theos] rpetrich a impins 1 angajament nou la master: http://git.io/ankV8g 01:03:36 <therpgitbot> theos / master f6ebd79 Ryan Petrich: Probleme de pornire de pe Xcode 5. x (solutie temporara deocamdata)
Se ocupa cu 32 de biti si 64 de biti
12:38:15 <% joedj> sbingner: am gasit interesanta aceasta intrebare (si raspunsul cu 2 postari), nu sunt sigur despre ce vorbesc: https://www.mikeash.com/pyblog/ vineri-qa-2013-09-27-arm64-and-you.html # comment-7436311d02c5a55738d1baefa03b0d34 09:55:43 <@rpetrich> joedj: este un bug cu componentele care comunica cu App Store
Eroare Theos si Ldid
19:02:14 <yoshbu> Acum am plecat de la trenul jailbreak. Incercand sa reinstalati teos, obtinand unele erori de construire atunci cand incercati sa instalati ldid, cineva stie daca exista o solutie rapida? 19:02:52 <yoshbu> like, eroare: nume de tip necunoscut ‘__darwin_intptr_t’ 19:02:59 <yoshbu> si, eroare: nume de tip necunoscut ‘__uint32_t’; ai vrut sa spui „uint32_t”? 19:05:27 <Alcatraz> incerci sa compilezi ldid pe mac? 19:05:55 <yoshbu> urmatorul pas 4 din http://iphonedevwiki.net/index.php/Theos/Getting_Started 19:06:10 <Alcatraz> da, compilarea a fost sparta de ceva timp 19:06:27 < Alcatraz> are legatura cu xcode 5 19:06:32 <Alcatraz> destul de sigur oricum 19:06:50 <yoshbu> ldid este totusi o dependenta a acestora? 19:07:01 <Alcatraz> da.
Accesarea UDID-ului dispozitivului
Accesul UDID este blocat in mod implicit pe iOS7, iar iOS va inlocui un ID generat in proprietatea unicaIdentificator a UIDevice. Utilizati MGCopyAnswer (CFSTR (“UniqueDeviceID”)) si faceti legatura impotriva libMobileGestalt.dylib (ProjectName_LIBRARIES = MobileGestalt) pentru a obtine acces la ID-ul dispozitivului din procesele de sistem sau aplicatiile instalate in / Aplicatii. ID-ul dispozitivului este complet inaccesibil din procesele de magazin de aplicatii si de la unii demoni.
Pentru aplicatiile din App Store, se pare ca puteti recupera in continuare UDID de la MobileGestalt cu un drept privat:
Probleme in curs
Diverse
- Imprimarea unei urme de stiva nu arata simboluri.
- Clasa principala a aplicatiilor Wee (widget Center Notification Center) trebuie sa fie acum o subclasa a controlorului de vizualizare in loc sa implementeze un protocol.
Icoane lipsa
- Dupa copierea unei aplicatii in / Aplicatii si respring, uneori pictograma nu apare. De asemenea, daca mai era acolo, uneori poate sa dispara.
- Aplicatiile instalate in / Aplicatii nu se mai lanseaza dupa un timp cu aceasta eroare:
backboardd [12261] <Warning>: Serviciile de lansare: Inregistrarea identificatorului de aplicatie necunoscut libactivator nu a reusit backboardd [12261] <Warning>: Serviciile de lansare: Nu se poate gasi identificatorul de aplicatie libactivator backboardd [12261] <Warning>: Nu se poate crea aplicatia “libactivator” fara o cale de pachet
Sau pictogramele lor dispar dupa ce se intampla acest lucru:
lsd [11724] <Warning>: LaunchServices: Actualizarea magazinului identificatorului / usr / libexec / lsd [11724] <Error>: Trebuie sa se sincronizeze cu MobileInstallation / usr / libexec / lsd [11724] <Notice>: LaunchServices: Adaugarea com.malcolmhall .PhoneNumberTest pentru a anula lista / usr / libexec / lsd [11724] <Notice>: LaunchServices: Adaugarea com.malcolmhall.AppUnde se anuleaza lista / usr / libexec / lsd [11724] <Notice>: LaunchServices: Adaugarea libaerctivator [11724] <Warning>: LaunchServies: Nici un pachet de locatie de eliminat pentru com.malcolmhall.AppWhere.
ARM64 specifice
- Agatarea unei metode care utilizeaza o struct ofera o dispunere gresita a campurilor de pe arm64. Este posibil sa aveti nevoie de #pragma pack (push, 4) inainte si apoi #pragma pack (pop) dupa struct, insa chiar trebuie sa utilizati debuggerul si sa vizualizati memoria pentru a intelege cu siguranta ce se intampla.
- Folosirea MSHookMessage arm64 necesita indicatorul functiei initiale sa declare parametrii sau sa se defecteze la runtime.
Comunicarea intraprocesuala
- CPDistributedMessagingCenter, XPC si alte metode IPC construite pe baza serviciilor de machiaj inregistrate de bootstrap nu functioneaza; veti refuza cautarea in consola Xcode.
solutie:
rpetrich a construit o solutie numita RocketBootstrap.
Instalati acest lucru de la Cydia sau adaugati o depinde de deb-ul dvs. com.rpetrich.rocketbootstrap. Descarcati bootstrap.h si rocketbootstrap.h de la https://github.com/rpetrich/RocketBootstrap/tree/master Va trebui, de asemenea, sa copiati `librocketbootstrap.dylib` de la` / usr / lib` pe iDevice la `$ THEOS / lib` si legatura impotriva ei in Makefile dvs.:
Exemplu de utilizare (server in interiorul unei modificari SpringBoard):
Exemplu de utilizare (client din aplicatia sandboxed):
Daca doriti sa rulati un server in interiorul unui demon, atunci aveti nevoie in continuare de o simpla modificare SpringBoard, care trebuie doar sa apelati bootstrap_unlock cu numele serviciului (luati codul din antetul rachetului bootstrap si includeti bootstrap.h). Apoi puteti rula un server cu acelasi nume in interiorul daemonului. rocketbootstrap_distributedmessagingcenter_apply trebuie totusi apelat atat pe server, cat si pe clienti. Functioneaza chiar si pentru sendMessageAndReceiveReplyName.
Note de utilizare:
Nu ar trebui sa inregistrati serviciile Mach in aplicatiile pentru sandbox; RocketBootstrap permite expunerea serviciilor la aplicatiile sandboxed, dar nu poate permite expunerea serviciilor din aplicatiile sandboxed fara a expune un defect de securitate foarte mare.
Presupunand ca nu exista probleme de securitate, apeland de fapt la un serviciu care ruleaza in interiorul unei aplicatii de la SpringBoard (care este de obicei ceea ce oamenii doresc sa faca) este problematic. Aplicatiile de fundal le determina sa intre intr-o stare „SIGSTOP” inghetata, ceea ce inseamna ca orice apeluri catre serviciul care ruleaza in interiorul aplicatiei se vor bloca la nesfarsit.
Chiar daca aceasta este suprimata, s-ar putea intampla ca partea SpringBoard sa incerce sa apeleze serviciul care ruleaza in aplicatie in acelasi timp in care aplicatia incearca sa apeleze la oricare dintre serviciile obisnuite SpringBoard. Cand se intampla acest lucru, se impun. Acest lucru s-ar putea intampla rar, dar este un caz de esec cu adevarat rau, deoarece sistemul doar se blocheaza. Utilizatorii reali il vor intalni, daca este prezent.
Puteti apela dintr-un thread de fundal (nu este bun, ar putea ramane in viata mult timp) sau puteti folosi termene de timp (nu este bine, acum trebuie sa il reglati si sa obtineti accesorii UI) sau sa folositi cod asincron (nu este rau, dar este mai multa munca decat s-ar putea sa fii dispus sa treci).
Proiecte asociate:
- libobjcipc by a1anyip: “O solutie de comunicare inter-proces (intre aplicatie si SpringBoard) pentru iOS jailbroken. In mod specific scris pentru iOS 7 (nu este testat in versiunile anterioare). Gestioneaza conexiunile de priza intre SpringBoard si procesele de aplicatii, configurarea automata a afirmatiile procesului si deconectarea automata dupa expirare sau procesul se incheie. Trebuie doar sa apelati la metodele statice din clasa principala OBJCIPC. Mesajele si raspunsurile pot fi trimise sincron (blocare) sau asincron. “








