RSS

Build ipa file using XCode without provisioning profile

December 26

To develop an application for iOS devices one should first obtain a provisioning profile by joining the iPhone Developer Program (which costs $99). However, some simple tricks can be used to build self signed applications using Xcode, that can be installed on Jailbroken devices. The steps provided below explains the detailed procedure to build ipa files without developer certificate for Jailbroken devices. This is tested on Mountain Lion 10.8, Xcode 4.5 and iOS 6 SDK.

Steps to build ipa file using Xcode:
1. Create a self signed code signing certificate.

On Mac OS X, go to Keychain Access -> Certificate Assistant -> Create a Certificate. It opens the certificate assistant window. Enter name (in my case it is securitylearn.net) and select certificate type as Code signing. Check let me override defaults option. Hit continue until it creates the certificate.

OS X self signed certificate

After creation of the certificate, the keychain looks as shown in the image below.

Certificate in keychain1

2. Copy /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist to desktop. Edit the plist file and replace all occurrences of XCiPhoneOSCodeSignContext by XCCodeSignContext (3 places – defaultproperties, runtimerequirements, overrideproperties).

Before modification:

xcode info plist before modification

After modification:

xcode info plist after modification

3. Copy the modified Info.plist file to /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/ directory and replace the existing file.
4. Close and Restart the XCode.
5. Create your project in the XCode and in the project target settings choose the certificate created in step 1 as the code signing identity. Project target settings are shown below.

xcode project code signing settings

6. Build the project for iOS device (Project->Build).
7. Build creates the .app file in the build/Debug-iphoneos folder.

Xcode build app

Default location for .app file is –
/Users/[user name]/Library/Developer/Xcode/DerivedData/[your app]/Build/Products/Debug-iphoneos/

xcode build directory

8. Create a folder named Payload and copy the .app file into it.

Payload folder

9. Archive the Payload folder. It creates Payload.zip.
10. Rename the Payload.zip to [app name].ipa. We have successfully created the ipa file without developer certificate and this can be installed on a jailbroken device using iPhone configuration utility.

This comes handy for pentesters as well, if they want to create vulnerable demo apps.

Update on 16-Feb-2013: To install self signed ipa on iOS 6 devices, (Thanks to Leo for sharing this info) 
1. Go to Cydia->Manage and add http://gdeluxe.com/repo as a source.

appsync cydia

2. Download and install AppSync for iOS 6.x from Cydia.
3. Now you can install the ipa file using the iPhone configuration utility.

 

Posted by on December 26, 2012 in iPhone

53 Comments

Tags: , , , , , , , ,

53 responses to “Build ipa file using XCode without provisioning profile

  1. eliprodigy

    January 15, 2013 at 2:06 pm

    this not work i’m getting this error all time when i try to compily
    No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination.

     
    • satishb3

      January 15, 2013 at 2:52 pm

      Did you hit build & run menu or just build menu?

       
      • eliprodigy

        January 15, 2013 at 3:10 pm

        You beat me i come to edit my commant because it’s worked
        many thanks !!

        p.s
        do you know why i’m getting this msg when i’m trying to start the build from the button in the left corner
        (emulator works but ios device give me this error above)

         
  2. Moto

    January 22, 2013 at 8:20 pm

    Thanks for the guide I have been looking for a way for a day or two now. For some reason your images are not loading in FireFox… will try in another browser.

     
    • Moto

      January 22, 2013 at 8:21 pm

      N/M after I hit submit the images loaded… strange.

       
      • satishb3

        January 22, 2013 at 9:37 pm

        It might be an issue with caching plugin. I will look into it. Thanks.

         
  3. Jesús

    February 6, 2013 at 10:23 pm

    Hello¡ I’ve followed the steps and, when i’ve builded the project i don’t have the folder Debug-iphoneos. I’ve only Debug-iphonesimulator and Release-iphonesimulator.
    Is necessary to make a build for achieving?
    Thank you in advance

     
    • satishb3

      February 7, 2013 at 6:52 am

      Build the app for device not for the simulator. Then you will see iPhoneos folder.

       
      • vince

        February 9, 2013 at 3:50 am

        I did all the steps but when i go to iphone config tool to add/install the app it wont install. it gives me a signing error

        i have iphone 4 xcode 4.6 ios 6.1

         
        • satishb3

          February 9, 2013 at 6:57 am

          Is ur phone jailbroken?

           
          • vince

            February 9, 2013 at 3:02 pm

            Yes it is

             
          • satishb3

            February 10, 2013 at 5:38 am

            strange. Try this, from terminal run the below code sign command to sign the binary with the self created cert.

            codesign -fs “your Cert’ binaryfile

            After signing, convert the binary file to ipa file.

             
          • vince

            February 10, 2013 at 7:00 am

            so i would just open Terminal and type the code

            codesign -fs “myCerttitle” binaryfile

            and after doing that i click build in xocde to make it a .app then do the payload zip and rename thing?

             
          • satishb3

            February 10, 2013 at 8:01 am

            Thats wrong.
            Build .app file (ex:abc.app)
            Now copy the .app folder to desktop
            Inside .app file there is executable file (ex:abc) . We need to sign this executable binary.
            From terminal move to desktop, type
            codesign -fs “securitylearn” abc.app\abc

            (if ur cert name is not securitylearn change it accordingly).
            Then copy the .app into payload folder and create ipa.

             
          • vince

            February 10, 2013 at 7:35 am

            So i retried this tutorial again and the exact error it get from iphone config utility is “The identity used to sign the executeable is no longer valid”

             
          • vince

            February 11, 2013 at 2:00 pm

            So it seems i can install apps on my old ipad1 running iOS 5.0. but when i try to add apps to my iphone 4 with ios 6.1 untethered jailbreak with evasion they wont sign. Ive tried the way in this tutorial, ive tried with ifunbox, and ive tried using installipa from cydia

             
          • satishb3

            February 14, 2013 at 5:21 pm

            I will check out and update you if I find anything.

             
        • Leo

          February 15, 2013 at 12:43 pm

          I got the same error
          “The identity used to sign the executable is no longer valid”

          iPhone5 with iOS 6.1 evasion jailbreak.

          hope u could figure out the solution for this….. waiting for your good news.

           
          • Leo

            February 15, 2013 at 10:23 pm

            just found the solution.

            we need to install app sync for ios 6.x

            then should be able to install self developed app.

             
          • satishb3

            February 16, 2013 at 5:05 am

            you are awesome. Thank you. I will update the post.

             
  4. Jasmin

    February 19, 2013 at 6:22 pm

    Thank you so much, worked like a charm ! :-)

     
  5. Daniel Avram

    February 19, 2013 at 9:16 pm

    You my friend are a life saver. A billion thanks! :)

     
  6. Jasmin

    February 20, 2013 at 11:49 am

    I am not getting what to do with that iOS6 device..please tell me step by step.

    Thank you ! :-)

     
    • satishb3

      February 21, 2013 at 10:08 pm

      Updated steps for ios 6. Checkout

       
  7. Jonathan

    February 21, 2013 at 10:27 am

    I followed your steps from start to finish twice, and both times I am unable to install the IPA using iPhone Configuration Utility, or other methods such as AppCake. I get the following error: is not a valid mobile application. http://puu.sh/25YnA Any idea?

     
  8. Sun Vul

    March 5, 2013 at 6:47 am

    I am trying to install my app on JB iPhone 3gs ios6.1.2 and I keep getting this error “This application does not support this device’s CPU type.”. I did setup the supporting architecture to armv6 as mentioned in other posts on StackOverflow – No luck. What could I be doing wrong.

     
    • satishb3

      March 5, 2013 at 9:07 am

      May be edit the info.plist file and change the default build options. That might help.

       
  9. Fred

    April 10, 2013 at 1:46 am

    GOD I LOVE YOU GUYS…TOOK AGES BUT I DID IT…

     
  10. Felix

    May 5, 2013 at 12:31 am

    I follow the steps to the letter and worked perfectly to the first try.
    Thankssss.
    Ipad4/Mini, iOS 6.1.2 jailbroken.
    gdeluxe repo looks that it is dead, but AppSync for 5+ in Cydia woks OK.

     
  11. Temi

    June 23, 2013 at 7:34 pm

    Hi

    I followed these steps but i got this error:
    ‘Code Sign error: The identity ‘keyName’ doesn’t match any valid,non-expired certificate/private key pair in your keychains.’

    hope u could figure out the solution for this….. waiting for your good news

     
    • satishb3

      June 24, 2013 at 11:00 am

      Seems like a problem with the certificate. Try creating a new codesign certificate with a new name and use that name in xcode build settings.

       
  12. Binary

    July 30, 2013 at 2:28 pm

    to archive I use izip.
    to install myapp.ipa into my iPad, I gave invalid app.

    What archiver I use?

     
    • satishb3

      July 30, 2013 at 9:08 pm

      Right click on the folder and click compress. It creates the zip file.

       
  13. richard

    September 5, 2013 at 7:49 am

    hi,
    I got everything right except in the final stage when I sync the app with iphone. I got a massage of failed to install on the iphone screen. I have installed appsync for ios 6.x

     
  14. Kendall

    September 17, 2013 at 3:57 am

    can this be done on a PC?

     
  15. Aaron Potter

    November 15, 2013 at 12:06 am

    I installed xcode 5, does this works in it? I don’t have internet at home, or developer account. Imagine me as a completly unconnected person, can I build IPA using this method on xcode 5?
    provisioning profile isn’t included in the picture of step 5, that’s why i’m worried too.
    please, help!!

     
  16. Özgür

    February 18, 2014 at 7:07 pm

    Hello.
    This isn’t work for me. When I open Xcode, application closing.
    How can I build ipa file?

    I’m using Xcode 5.0.2

     
  17. Özgür

    February 18, 2014 at 7:12 pm

    Hello.
    I wanna build ipa files for my projects but this isn’t work.
    How can I hack Xcode?

    Xcode version: 5.0.2

     
    • satishb3

      February 19, 2014 at 10:06 pm

      I haven’t tested it on Xcode 5.0.2. The process might have changed.

       
  18. Ozgur

    February 19, 2014 at 9:09 am

    I can’t synchronize ipa files pc to iphone. I get an error like this “incorrect architecture”

     
  19. yury

    February 25, 2014 at 11:24 pm

    How I can do step 2? I have to put that code from terminal? sorry, I struck up me in that step :/

     
    • satishb3

      February 26, 2014 at 6:28 am

      Navigate to /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform from Finder and copy info.plist, paste it on desktop

       
  20. Caetano

    July 23, 2014 at 12:05 am

    Thanks for the awesome tutorial! I’m having a problem, the first try it worked perfect, but on the second try it didn’t work. And the project its almost the same, the changes I did was made outside xcode. Luckily I saved the project that works, I did a rebuild and still works, but my other project don’t. Can I send it to you both projects so you could figure out whats going on?
    I’m working on a AR project, Mavericks, Xcode 5.0.2, iTools, Ipad 2, IOS 7.1.2 (Pangu Jailbreaked)….
    Thanks!

     
  21. Ric

    August 25, 2014 at 8:15 pm

    Hi, does this work with xcode 5.1? Once created the .ipa, can it be installed on non jailbreaked devices using iTools? Thanx

     
    • satishb3

      August 25, 2014 at 8:30 pm

      I haven’t tested on latest Xcode. Give a try, it might work.

       
      • Ric

        August 26, 2014 at 12:33 am

        thanx mate, just dwnloading xcode and check. cheers

         
  22. maxxelliot

    September 20, 2014 at 5:07 pm

    hello,

    works fine on Xcode 5.1, what about xamarin studio can we do this ?

     
    • satishb3

      September 20, 2014 at 5:30 pm

      I’ve never used xamarin studio.

       

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>