Skip to content

8. Usage Guide: AppMon IPA Installer

Nishant Das Patnaik edited this page Dec 3, 2018 · 25 revisions

Requirements

Setup

sh build.sh

Video Tutorial

Watch on YouTube

Usage

  • Open a Terminal and change type cd appmon/ipa_installer and next when you type python ipa_installer.py, you shall see the following help message

     ___      .______   .______   .___  ___.   ______   .__   __. 
    /   \     |   _  \  |   _  \  |   \/   |  /  __  \  |  \ |  | 
   /  ^  \    |  |_)  | |  |_)  | |  \  /  | |  |  |  | |   \|  | 
  /  /_\  \   |   ___/  |   ___/  |  |\/|  | |  |  |  | |  . `  | 
 /  _____  \  |  |      |  |      |  |  |  | |  `--'  | |  |\   | 
/__/     \__\ | _|      | _|      |__|  |__|  \______/  |__| \__| 
                        github.com/dpnishant
                                                                  

usage: ipa_installer.py [-h] [-ipa IPA_PATH]
                        [-mobileprovision MOBILEPROVISION_PATH]
                        [-identity DEV_IDENTITY] [-uuid UUID] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -ipa IPA_PATH         (Absolute) Path to IPA
  -mobileprovision MOBILEPROVISION_PATH
                        (Absolute) Path to embedded.mobileprovision (OPTIONAL)
  -identity DEV_IDENTITY
                        Developer Identity Hash (OPTIONAL)
  -uuid UUID            Device UUID (OPTIONAL)
  -v                    show program's version number and exit

  • If you have created the developer profile (exactly as mentioned here and on the same Mac on which you shall be running the AppMon IPA Installer, then all you need to provide the script is the IPA's absolute path
  • Open a Terminal and just type python ipa_installer.py -ipa <path of IPA>, the script takes care of the rest of the things by itself
  • If still not sure, watch this Tutorial Video

NOTE: It is observed that sometimes the "Frida: Listening on TCP port 27042" is not printed on the debugger console even after enough wait. It is a known issue on newer versions of Frida (>= 9.0)

This should not be an issue as long as you did not face any other error during the IPA installation/launch process then you may just try to attach frida to the process called Gadget as a quick smoke test.

If the attach was successful, you can use appmon as you normally would or as guided in Usage Guide: AppMon Sniffer or Usage Guide: AppMon Intruder etc.

Troubleshooting

Error: Unable to mount developer disk image. (e8000033)

[  0%] Looking up developer disk image
2016-09-23 01:08:54.379 ios-deploy[7691:41691] [ !! ] Unable to mount developer disk image. (e8000033)

Explanation: It probably means your Xcode version isn't compatible with the iOS version.

  1. You can upgrade you Xcode to the latest version. You can download your desired version of Xcode from https://developer.apple.com/download/more/
  2. Unplug, reboot and re-connect your device to you Mac
  3. Follow the 4.b.i Creating a iOS Developer Profile guide.
    • Note: If you have, already, followed the above guide and have the HelloWorld project, then open that project and repeat Step #4 and #5 i.e. run the project on your device.
  4. Once the app successfully runs on your device (via Xcode), you may quit Xcode and re-try installing the IPA.

Error: Assertion failed: (app_dict != NULL)

Assertion failed: (app_dict != NULL), function copy_device_app_url, file /usr/local/lib/node_modules/.staging/ios-deploy-298c9491/src/ios-deploy/ios-deploy.m, line 668.

Explanation: It probably means your Apple Developer (iOS) certificate has either expired or has been revoked

  1. Open Keychain App > Select Certificates > Select all iPhone Developer certificates > right click > Delete
  2. Unplug, reboot and re-connect device
  3. Open Xcode > Product (in menu) > Clean (Shift + Command + K)
  4. Follow the 4.b.i Creating a iOS Developer Profile guide.
    • Note: If you have, already, followed the above guide and have the HelloWorld project, then open that project and repeat Step #4 and #5 i.e. run the project on your device.

"[ !! ] Unable to locate DeviceSupport directory. This probably means you don't have Xcode installed, you will need to launch the app manually and logging output will not be shown!"

  1. Make sure you are using the latest version of the required toolchain using the following shell command ios-deploy -V && xcodebuild -version && xcode-select --print-path && gcc --version && lldb --version

  2. Then run the following shell command, while you are still in the /Applications/Xcode.app/Contents/Developer/platforms/iPhoneOS.platform/DeviceSupport directory:

ls -la

If your device is running a version of iOS that is newer (e.g. beta release versions) than the most recent OS version available within XCode, then running the following command with the right placeholder values should solve the issue.

sudo ln -s <most_recent_version> <actual_version_on_device>

Example:
sudo ln -s 10.3.1\ \(14E8301\) 10.3.3 (where 10.3.3 is the OS running on the iOS device)