Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resigning an application outside xcode [closed]

I have some apps i wanna resign with a different apple developer license,

Problem is, i dont have source code, only the ipa file, the app and the archiveinfo.plist is it possible for me to resign the app if i dont have the source code?

Thanks! Ompah

like image 289
Ompah Avatar asked Jul 04 '11 08:07

Ompah


People also ask

How do you manually resign the iOS app?

Each iPhone or iPod Touch has a Unique Device Identifier (UDID), which is a sequence of 40 letters and numbers that is specific to your device. You can copy the UDID and paste it in your Apple Developer account to resign manually.

How do you force quit an app?

On a PC: Press Ctrl+Alt+Delete to open task manager (or Ctrl+Shift+Esc to force quit).

How do you change Code Signing Identity in Xcode?

Under the signing identities locate the iOS Development and iOS Distribution profiles. If you have not created them you will see a Create button next to them. Simply select it and Xcode will issue and download your code signing identities for you.

Who has access to your enterprise app distribution certificates?

Only team admins can create or install a distribution certificate. Each team can have only one active distribution certificate.


2 Answers

The ability to replace the signature on an already-signed binary is built into the codesign utility. That way, if your developer certificate expires (as they do annoyingly often), you don't have to rebuild your app.

This can be important, especially if you need to support an old app version, and you've made code alterations since you archived your IPA.

I usually use this script. It comes in handy when trading debug build IPAs with people who have their own developer accounts and who I don't want to burn a UDID slot for, and who don't want to have to load my provisioning profiles on their devices.

#!/bin/sh

TEMPDIR=/tmp/$RANDOM-$RANDOM-$RANDOM
RESOURCERULES=/tmp/ResourceRules-$RANDOM$RANDOM.plist
CURRENTDIR=`pwd`

mkdir -p "$TEMPDIR"

cat - > "$RESOURCERULES" <<ResourceRulesPlistDelimiter
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>rules</key>
    <dict>
        <key>.*</key>
        <true/>
        <key>Info.plist</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>10</real>
        </dict>
        <key>ResourceRules.plist</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>100</real>
        </dict>
    </dict>
</dict>
</plist>
ResourceRulesPlistDelimiter

unzip -q "$1" -d "$TEMPDIR" || exit 1
xattr -d -r com.apple.quarantine "$TEMPDIR"

for APPBUNDLE in "`find "$TEMPDIR" -name "*.app"`"; do
    codesign --resource-rules="$RESOURCERULES" -f -s "iPhone Developer" "$APPBUNDLE"
    codesign -dvvvv -r- "$APPBUNDLE"
done

cd "$TEMPDIR"
zip -qr "$TEMPDIR.zip" "Payload" && cd "$CURRENTDIR" && mv "$1" "$1.bak" && mv "$TEMPDIR.zip" "$1"
cd "$CURRENTDIR"
rm -rf "$TEMPDIR.zip"
rm -rf "$TEMPDIR"
rm -rf "$RESOURCERULES"
like image 57
Reid Rankin Avatar answered Oct 13 '22 15:10

Reid Rankin


This is the most effective and efficient solution I have come up with so far.

  1. Make sure you are using a Mac. This process requires an application for Mac OSX.

  2. Take the .ipa file, rename it to a .zip file.

  3. Extract the zip file, you will see a folder called “Payload” containing a .app file.

  4. Download the Mac OSX app AppResigner here: http://www.gorbster.net/misc/AppResigner.app.zip

  5. Unzip the app. Inside the unzipped folder you will see the Mac App “AppResigner”

  6. Open this app. It will ask you to choose a file. Choose the .app we unzipped from the .ipa file.

  7. It will ask you for a signing identity. Open the Mac App “Keychain Access”. The steps that you will take here may vary slightly. Open the keychain “login” and choose category “Certificates”

  8. Here you need to find the certificate with which you want to resign the app. For example it could be: “iPhone Distribution: Your Company Name”, you will need to have access to your company’s Distribution profile to use a distribution certificate. I have not tried doing this with a development certificate, I don't know if that will work.

  9. Type in this certificate name exactly as it is shown here into the AppResigner prompt; copy / paste was not working correctly for me.

  10. AppResigner should tell you that the app has been resigned.

  11. Find the .app file that you resigned (it is the same one as before) and zip it up. I use the Mac OSX program Keka, but many are available.

  12. Rename the zip file to a .ipa file.

  13. Done!

like image 28
Joel Fischer Avatar answered Oct 13 '22 14:10

Joel Fischer