Skip to content
[WIP] Crappy iOS app analyzer
Vue JavaScript HTML
Branch: master
Clone or download
Latest commit a06a5af Jul 3, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
agent checksec: use csops Jul 3, 2019
bin now you can display syslog Aug 7, 2018
gui change a button Jun 16, 2019
images roll back to @2x logo Mar 22, 2018
lib fix #51 Jul 3, 2019
scripts fix #51 Jul 3, 2019
.eslintrc.js bugfix: missing icon in app list Aug 7, 2018
.gitignore do not track package lock Oct 21, 2018
.jsbeautifyrc completely move remove modules handler code from parent view Sep 10, 2017
LICENSE Initial commit Mar 11, 2017 Update Jun 21, 2019
app.js new url launcher Aug 8, 2018
package.json 0.5.3 Jul 3, 2019
passionfruit.xd add logo source file May 26, 2018


npm version License: MIT

Contact me on Discord

Simple iOS app blackbox assessment tool. Powered by and vuejs.


npm install -g passionfruit


  • Cross plarform web GUI!
  • Also supports non-jailbroken device (see Non-jailbroken device).
  • List all url schemes.
  • Check signature entitlements.
  • List human readable app meta info (Info.plist).
  • Capture screenshot.
  • Checksec: see if target app is encrypted, and has enabled PIE, ARC and stack canary.
  • App sandbox file browser. Directly preview images, SQLite databases and plist files on device. You can always download the file for further investigation.
  • Check the loaded frameworks. Hook exported native functions from these dylib to print the arguments and stack trace.
  • Log SQLite operations.
  • Log and try to bypass jailbreak detection.
  • List Objective-C classes from app, hook the methods and inspect the arguments and stack trace.
  • Dump KeyChain, BinaryCookies and UserDefaults.


Please check out Wiki for more information.


Desktop requirements:

  • Latest node.js (>=7.10.1) and npm to run the api server and web gui
  • Any modern desktop browser you like

Passionfruit is now avaliable on npm, so just type following command to install:

npm install -g passionfruit

Then launch it:


Note that if the port 31337 is in use, set environment variable PORT to use an alternative port. Also, setting HOST can force to listen on an alternative interface, but be careful because it has no authentication yet:

HOST= PORT=12345 passionfruit

Security Warning

Passionfruit does not support authentication now, so any one that have access to the web page may control your connected devices!

Device setup:

Jailbroken Device


Start Cydia and add Frida’s repository by going to Manage -> Sources -> Edit -> Add and enter You should now be able to find and install the Frida package which lets Frida inject JavaScript into apps running on your iOS device. This happens over USB, so you will need to have your USB cable handy, though there’s no need to plug it in just yet.

Non-jailbroken Device

Official documentation of (linked above) also introduces how to inject FridaGadget.dylib to the ipa, requires repack and resign.

Here are some articles about how to do so:

Development setup

Clone this project and install requirements:

git clone
npm install

For those who wants to contribute, you may probably need to restart the api server and reload webpage each time you make a change. The following steps enable livereload.

npm run dev

Browser will be open (http://localhost:8080)



You can’t perform that action at this time.