Πέμπτη 19 Μαΐου 2011

iPhone Code Sign - Cydia & AppStore Deployment

Σας παραθέτω παλιό μου άρθρο από τον Φλεβάρη του 2010 περί iPhone Code Sign, ξέρω έπρεπε από νωρίς να βρίσκεται εδώ στο HellasProject, αυτό συνέβει γιατί αγόρασα δική μου άδεια και απλά άφησα το θέμα "Fake" code sign στην άκρη. Χαρείτε το, ξέρετε εσείς!


Ανοίγω το παρόν θέμα γιατί απ'ότι βλέπω υπάρχει μεγάλος ντόρος σε αρκετές σελίδες στο internet περί Code Signing, μια διαδηκασία ψηφιακής υπογραφής και πιστοποίησης των εφαρμογών που περνάνε στο AppStore ή και αν θέλετε στο Cydia!

Τώρα, εάν έχετε πάρει την άδεια του Προγραμματιστή (Developers License) από την μαμά Apple, θα σας έχει δώσει ένα ψηφιακό αντίγραφο του πιστοποιητικού που χρησιμοποιείτε μέσα στο Xcode και στo Keychain σας για την ψηφιακή σφραγίδα των εφαρμογών σας.

Τώρα, για το Fake Code Signing που κάνουν αυτοί που θέλουν απλά να δοκιμάσουν την εφαρμογή που αναπτύσουν στο iPhone τους χωρίς να θέλουν να το κάνουν deploy στο AppStore αντιθέτως μπορεί να θέλουν μόνο στο Cydia για συσκευές που πρέπει να έχουν γίνει πρώτα Jailbrake!

  • Πως δημιουργούμε Fake Code Sign από το Keychain Access,

  • πως αλλάζουμε το Xcode να πιστεύει ότι έχει την υπογραφή με απλές εισαγωγές στο Project Settings,

  • και πως ξεπερνάμε τα προβλήματα του build.

  • Πως μπορούμε να κάνουμε με το Link Identiny του Saurik να κάνουμε τα codesign hashes (ldid) να παίζουν αυτές οι εφαρμογές κατευθείαν σε Jailbroken συσκευές

  • και άλλα πολλά..


Θα βρείτε σιγά σιγά σε αυτό το post όλα τα προαναφερθέν όπως και θα ήταν ευπρόσδεκτα τα σχόλια, προτάσεις όπως και δικοί σας τρόποι για να γίνει η "δουλειά" σωστά!

Πάμε..

Στον παρακάτω σύνδεσμο θα βρείτε πως μπορείτε να κάνετε Bypass το Code Signature και να πακετάρετε την εφαρμογή σας για το Cydia
http://adeem.me/blog/2009/03/29/bypass-code-signature-published-your-application-on-cydia/

όπως και βίντεο στο youtube που περίπου δίχνουν ότι χρειάζεται..

.

Creating Certificate from keychain access (Part 1)

httpv://www.youtube.com/watch?v=BzhLIqf0BFY

.

Creating Xcode Template Project, changing in info.plist and adding few attributes inside Xcode info screen (Part 2).
[Note: I got some error because of wrong certificate and then i create it again using Part 1 video and it start working)

httpv://www.youtube.com/watch?v=ywYo6P8HDb8

.

Select the right certificate and build your application. After build analysis the results and verify that everything was ok (Part 3).

httpv://www.youtube.com/watch?v=39DMXesLO6c

.

Τώρα.. για να κάνετε σωστά build για το iPhone για να βγάλετε εφαρμογή στο Cydia (ΚΑΙ ΟΧΙ ΣΤΟ AppStore) και να το μεταφέρετε χρειάζεται να έχετε συγκεκριμένη έκδοση Xcode kαι ιPhone SDK..

δηλαδή για να είμαι πιο συγκεκριμένος.. χρειάζεστε το XCode 3.1.3 και το iPhone SDK 3.0 (τουλάχιστον, μπορείτε και τα νεότερα, αλλά επιτυχία υπάρχει σίγουρη με αυτά). Θα χρειαστεί να τα κατεβάσετε ξεχωριστά και να εγκαταστήσετε πρώτα το Xcode στο /Developer kαι μετά το iPhone SDK πάλι στο /Developer

μετά θα χρειαστεί να προστεθούν σε ένα Info.plist μερικές γραμμές κώδικα για να παίζει το provisioning (ΠΡΟΣΟΧΗ ΑΝ ΕΧΕΤΕ ΑΔΕΙΑ ΑΠΟ ΤΗΝ APPLE πρέπει να αντιστρέψετε τις αλλαγές για να γίνουν σωστά τα build..)

πάμε στο
/Developer/Platforms/iPhoneOS.platform/Info.plist

και αλλάζουμε να γίνει σαν το παρακάτω προσθέτοντας αυτά που είναι σε κόκκινο χρώμα..
<key>OverrideProperties</key>
<dict>
<key>CODE_SIGN_CONTEXT_CLASS</key>
<string>XCiPhoneOSCodeSignContext</string>
<key>DEBUG_INFORMATION_FORMAT</key>
<string>dwarf-with-dsym</string>
<key>EMBEDDED_PROFILE_NAME</key>
<string>embedded.mobileprovision</string>
<key>SDKROOT</key>
<string>iphoneos2.2.1</string>
<key>PROVISIONING_PROFILE_ALLOWED</key>
<string>NO</string>
<key>PROVISIONING_PROFILE_REQUIRED</key>
<string>NO</string>

</dict>

Μετά πρέπει να φτιάξετε ένα Certificate όπως λέει ο Οδηγός της Apple ονομάζοντας το π.χ. "iPhone Pwned Developer"

να θυμηθείτε να επανεκκινήσετε το Xcode μετά από αυτά έτσι..

μετά στο Project σας πρέπει να επεξεργαστείτε το Info.plist ως κείμενο και προσθέτετε κάτω από τις τελευταίες τιμές το
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>

Μετά πάτε στο Project Settings και του λέτε να κάνει Code Sign και στο Other και του γράφετε το όνομα του Certificate που φτιάξατε πριν π.χ. "iPhone Pwned Developer" kαι στο debug και στο release..
πριν κάνετε όμως το τελευταίο βήμα για build (όχι build & go μόνο build)
κλείστε το Xcode ανοίξτε το Terminal και δώστε το παρακάτω ως root π.χ. με το sudo για να βγάλει ότι δεν χρειάζεται από το Xcode

bash script εδώ
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "\x8f\x2a\x00\x00" >> working
dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support

Αν ακολουθήσατε τα βήματα αυτά θα μπορέσετε να κάνετε build για iPhone Device 3.0 (που παίζει και σε 3.1, 3.1.2 κλπ.) και θα βρείτε το αρχείο σας μέσα στον φάκελο του project στο build, μετά iphoneos release, σαν onoma.app αυτό το μεταφέρετε στο iPhone σας μέσω SSH ή κάποιου άλλο SFTP προγράμματος και το τοποθετείτε στο /Applications ως /Applications/onoma.app.

Θα πρέπει από το Cydia να εγκαταστήσετε το ldid (ψάξτε το link identity θα το βρείτε και ως ldid) και πρέπει μέσω MobileTerminal είτε μέσω SSH να μπείτε στο τερματικό της συσκευής και να πλοηγηθείτε στο /Applications/onoma.app/ και το αρχείο onoma που είναι η εφαρμογή σας να του δώσετε
ldid -S onoma

(με κεφαλαίο το -S) πρόγραμμα του saurik για να patchάρει το app να μην ψάχνει για ψηφιακή υπογραφή και του δίνει την δυνατότητα να είναι εκτελέσιμο..

Μετά κάντε ένα respring (π.χ. κillall SpringBoard από το shell)

Τώρα.. θα μου πείτε..

"φιλε ολα καλα μεχρι εδω παω να κανω compile το project μου το κανει compile και μολις παω να το στειλω στο iphone μου βγαζει μήνυμα, έχω SDK 3.1.3 Snow Leopard, το εχω σε No-Codesign"



Αναφέρω πιο πάνω λόγο provisioning προβλημάτων, μόνο BUILD για το iphone και copy με ssh ή winscp στο iphone και από εκεί και πέρα fake code sign ξανά με το ldid κλπ κλπ..

Έτσι ΔΕΝ πρόκειται να πάει στο iPhone.. κι αν πάει δεν θα τρέξει..

.

Αυτά φίλες και φίλοι, καλή τύχη και επιτυχείς δημιουργίες!

.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου