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

Overview

Discontinued Project

This project has been discontinued. Please use the new Grapefruit

#74

frida@14 compatibility issues

frida@14 introduces lots of breaking changes. After struggling a bit, I was unable to solve them. If you still need passionfruit, please keep the frida on your device to stay at 12.x.


Passionfruit

npm version License: MIT

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

TL;DR

npm install -g passionfruit
passionfruit

Features

  • 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.

General

Please check out Wiki for more information.

Setup

Desktop requirements:

  • node.js LTS 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:

passionfruit

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=192.168.1.100 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

See https://www.frida.re/docs/ios/

Start Cydia and add Frida’s repository by going to Manage -> Sources -> Edit -> Add and enter https://build.frida.re. 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 frida.re (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 https://github.com/chaitin/passionfruit.git
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)

LICENCE

MIT

Comments
  • KeyChain dump not working when TouchID or FaceID is used for authentication

    KeyChain dump not working when TouchID or FaceID is used for authentication

    Is it possible to modify the «https://github.com/chaitin/passionfruit/blob/master/agent/keychain.js» in order to list the keychain items and their attributes when TouchID or FaceID s used for authentication?

    For some reason, when TouchID is active in the application, no data is displayed.

    MWR needle has a great example (I'm using this script currently): https://github.com/mwrlabs/needle/blob/master/needle/modules/storage/data/keychain_dump_frida.py

    bug enhancement 
    opened by ghost 29
  • Issue launching app analysis on 32 bit devices

    Issue launching app analysis on 32 bit devices

    I am having and issue where in, when I launch an app analysis on a 32 bit device. The process begins, spins a bit then restarts the device. I initially thouht it was an issue with frida, when I select the device I see all the apps avalible on it and I believe this a frida process as well. It is when I launch the app that things fail. I am able to run from the same server instace on 64 bit devices no problem. One more difference between 32 and 64 bit devices the 64 bit devices are jailbroken 9.3.3 and the 32 bit devices are 9.3.5 jailbrakes.

    wontfix 
    opened by eric1dat 27
  • install error

    install error

    Hello

    I use npm to install passionfruit but when I run passionfruit, it didn`t work and have so error(as follows)

    ian-Mac:/ root# npm install -g passionfruit npm WARN deprecated [email protected]: 🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update! /usr/local/bin/passionfruit -> /usr/local/lib/node_modules/passionfruit/bin/cli.js

    • [email protected] added 8 packages, removed 109 packages and updated 13 packages in 21.156s ian-Mac:/ root# passionfruit /usr/local/lib/node_modules/passionfruit/node_modules/bindings/bindings.js:96 throw err ^

    Error: Could not locate the bindings file. Tried: → /usr/local/lib/node_modules/passionfruit/node_modules/frida/build/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/build/Debug/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/build/Release/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/out/Debug/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/Debug/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/out/Release/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/Release/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/build/default/frida_binding.node → /usr/local/lib/node_modules/passionfruit/node_modules/frida/compiled/9.3.0/darwin/x64/frida_binding.node at bindings (/usr/local/lib/node_modules/passionfruit/node_modules/bindings/bindings.js:93:9) at Object. (/usr/local/lib/node_modules/passionfruit/node_modules/frida/lib/frida.js:56:34) at Module._compile (module.js:660:30) at Object.Module._extensions..js (module.js:671:10) at Module.load (module.js:573:32) at tryModuleLoad (module.js:513:12) at Function.Module._load (module.js:505:3) at Module.require (module.js:604:17) at require (internal/module.js:11:18) at Object. (/usr/local/lib/node_modules/passionfruit/app.js:7:15)

    how can I fix this situation ? and what information I can give to help you ?

    I have node v9.3.0 python 3.6.4

    opened by ian902125 22
  • cant complete installation for passionfruit

    cant complete installation for passionfruit

    following error is throwing up whenever I tried to install passion fruit

    C:\WINDOWS\system32>npm install -g passionfruit
    C:\Users\sidharth.b\AppData\Roaming\npm\passionfruit -> C:\Users\sidharth.b\AppData\Roaming\npm\node_modules\passionfruit\bin\cli.js
    
    > [email protected] install C:\Users\sidharth.b\AppData\Roaming\npm\node_modules\passionfruit\node_modules\frida
    > prebuild-install || node-gyp rebuild
    
    prebuild-install WARN install No prebuilt binaries found (target=12.2.0 runtime=node arch=x64 libc= platform=win32)
    
    C:\Users\sidharth.b\AppData\Roaming\npm\node_modules\passionfruit\node_modules\frida>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
    gyp: binding.gyp not found (cwd: C:\Users\sidharth.b\AppData\Roaming\npm\node_modules\passionfruit\node_modules\frida) while trying to load binding.gyp
    gyp ERR! configure error
    gyp ERR! stack Error: `gyp` failed with exit code: 1
    gyp ERR! stack     at ChildProcess.onCpExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:345:16)
    gyp ERR! stack     at ChildProcess.emit (events.js:196:13)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:257:12)
    gyp ERR! System Windows_NT 10.0.17763
    gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
    gyp ERR! cwd C:\Users\sidharth.b\AppData\Roaming\npm\node_modules\passionfruit\node_modules\frida
    gyp ERR! node -v v12.2.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\passionfruit\node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! [email protected] install: `prebuild-install || node-gyp rebuild`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the [email protected] install script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\sidharth.b\AppData\Roaming\npm-cache\_logs\2019-05-10T19_25_51_318Z-debug.log
    
    C:\WINDOWS\system32>
    
    opened by sidh104 18
  • Error: GDBus.Error:re.frida.Error.InvalidArgument: Script(line 59): SyntaxError: parse error

    Error: GDBus.Error:re.frida.Error.InvalidArgument: Script(line 59): SyntaxError: parse error

    An unhandledRejection occurred: Rejection: Error: GDBus.Error:re.frida.Error.InvalidArgument: Script(line 59): SyntaxError: parse error Error: GDBus.Error:re.frida.Error.InvalidArgument: Script(line 59): SyntaxError: parse error

    准备进入查看应用时,会出现以上错误。

    npm -v // 5.6.0 node -v // V9.3.0

    bug 
    opened by euanchan 14
  • [ERROR] Not yet supported by the V8 runtime

    [ERROR] Not yet supported by the V8 runtime

    Hi. Today I'm installed passionfruit and tried to use it, and when I'm tried to inspect some app I got an error not yet supported by the V8 runtime. Near is log text:

    <-- GET / --> GET / 200 8ms 338b <-- GET /static/build.js <-- GET /static/0.build.js <-- GET /static/MaterialIcons-Regular.woff2?570eb83859dc23dd0eec423a49e147fe <-- GET /static/logo.svg?abda96cf81a18b28052a52d16b35d4e1 --> GET /static/0.build.js 200 5ms 55.2kb --> GET /static/MaterialIcons-Regular.woff2?570eb83859dc23dd0eec423a49e147fe 200 6ms 43.26kb --> GET /static/logo.svg?abda96cf81a18b28052a52d16b35d4e1 200 6ms 16.33kb --> GET /static/build.js 200 28ms 865.29kb <-- GET /static/logo.svg?abda96cf81a18b28052a52d16b35d4e1 --> GET /static/logo.svg?abda96cf81a18b28052a52d16b35d4e1 200 5ms 16.33kb An unhandledRejection occurred: Rejection: Error: GDBus.Error:re.frida.Error.InvalidArgument: not yet supported by the V8 runtime Error: GDBus.Error:re.frida.Error.InvalidArgument: not yet supported by the V8 runtime

    Can anybody explain to me what's wrong with it, and how to fix?

    opened by ximerus 12
  • run passionfruit with frida 14.0

    run passionfruit with frida 14.0

    hello,when i run passionfruit with frida 14.0,a crash happened.

    (frida:1380): Frida-CRITICAL **: 16:18:39.033: file ../../../frida-core/lib/interfaces/session.vala: line 167: uncaught error: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “re.frida.HostSession12” on object at path /re/frida/HostSession (g-dbus-error-quark, 19) zsh: segmentation fault passionfruit

    opened by wyu0hop 11
  • npm start giving error.

    npm start giving error.

    The following is the error i am getting when i am executing "npm start, even after the "npm run build " is all working fine.

    node_modules$: npm start

    [email protected] start /Users/pragyan.a.paramita/passionfruit cross-env NODE_ENV=production node .

    /Users/pragyan.a.paramita/passionfruit/app.js:31 .get('/devices', async (ctx) => { ^

    SyntaxError: Unexpected token ( at createScript (vm.js:56:10) at Object.runInThisContext (vm.js:97:10) at Module._compile (module.js:542:28) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:383:7) at startup (bootstrap_node.js:149:9)

    npm ERR! Darwin 16.7.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start" npm ERR! node v6.11.5 npm ERR! npm v3.10.10 npm ERR! code ELIFECYCLE npm ERR! [email protected] start: cross-env NODE_ENV=production node . npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] start script 'cross-env NODE_ENV=production node .'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the Passionfruit package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! cross-env NODE_ENV=production node . npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs Passionfruit npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls Passionfruit npm ERR! There is likely additional logging output above.

    npm ERR! Please include the following file with any support request: npm ERR! /Users/pragyan.a.paramita/passionfruit/node_modules/npm-debug.log

    opened by pragyan1994 11
  • Network connection instead of USB?

    Network connection instead of USB?

    Hi,

    I have a special scenario where I would need to connect via network to the frida-server instead via USB.

    Is this on the roadmap also for passionfruit or can I configure this somewhere? For example with objection flags are available for network connections via Frida.

    Thanks

    image

    enhancement 
    opened by sushi2k 8
  • Cannot select phone in Passionfruit

    Cannot select phone in Passionfruit

    Hi,

    I have a rooted iPhone with iOS 10.3.3, Frida server is running (frida-server-12.5.8-ios-arm64) and I can access Frida via USB:

    $ frida-ps -U | grep -i cydia
    455  Cydia
    

    I can also see it in Passionfruit, but when I select the iPhone nothing happens (also in an incognito windows, so cannot be a caching issue in the browser). Any ideas?

    image

    opened by sushi2k 8
  • Internal Server Error with Frida 11.0.0

    Internal Server Error with Frida 11.0.0

    Passionfruit installed via npm displays "Internal Server Error". The device is running frida 11.0.0 and the computer as well. I can use all frida tools to interact with apps and device.

    Please let me know if you can reproduce it.

    opened by hduarte 8
  • Encountring some errors while installing on macOS Big Sur

    Encountring some errors while installing on macOS Big Sur

    I've been trying for two days, Googled a lot, tried to solve everything but it doesn't work You can see the error below:

    Muhammads-MBP:passionfruit an0nym0us$ npm install -g passionfruit
    npm WARN deprecated [email protected]: this library is no longer supported
    npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
    npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
    npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
    npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
    npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
    npm WARN deprecated [email protected]: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future
    npm WARN deprecated [email protected]: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
    npm ERR! code 1
    npm ERR! path /usr/local/lib/node_modules/passionfruit/node_modules/frida
    npm ERR! command failed
    npm ERR! command sh -c prebuild-install || node-gyp rebuild
    npm ERR! prebuild-install WARN install No prebuilt binaries found (target=16.0.0 runtime=node arch=x64 libc= platform=darwin)
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using [email protected]
    npm ERR! gyp info using [email protected] | darwin | x64
    npm ERR! (node:84769) [DEP0150] DeprecationWarning: Setting process.config is deprecated. In the future the property will be read-only.
    npm ERR! (Use `node --trace-deprecation ...` to show where the warning was created)
    npm ERR! gyp info spawn /usr/bin/python2
    npm ERR! gyp info spawn args [
    npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/passionfruit/node_modules/node-gyp/gyp/gyp_main.py',
    npm ERR! gyp info spawn args   'binding.gyp',
    npm ERR! gyp info spawn args   '-f',
    npm ERR! gyp info spawn args   'make',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/passionfruit/node_modules/frida/build/config.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/passionfruit/node_modules/node-gyp/addon.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/Users/an0nym0us/.node-gyp/16.0.0/include/node/common.gypi',
    npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
    npm ERR! gyp info spawn args   '-Dvisibility=default',
    npm ERR! gyp info spawn args   '-Dnode_root_dir=/Users/an0nym0us/.node-gyp/16.0.0',
    npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/passionfruit/node_modules/node-gyp',
    npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/an0nym0us/.node-gyp/16.0.0/<(target_arch)/node.lib',
    npm ERR! gyp info spawn args   '-Dmodule_root_dir=/usr/local/lib/node_modules/passionfruit/node_modules/frida',
    npm ERR! gyp info spawn args   '-Dnode_engine=v8',
    npm ERR! gyp info spawn args   '--depth=.',
    npm ERR! gyp info spawn args   '--no-parallel',
    npm ERR! gyp info spawn args   '--generator-output',
    npm ERR! gyp info spawn args   'build',
    npm ERR! gyp info spawn args   '-Goutput_dir=.'
    npm ERR! gyp info spawn args ]
    npm ERR! gyp: binding.gyp not found (cwd: /usr/local/lib/node_modules/passionfruit/node_modules/frida) while trying to load binding.gyp
    npm ERR! gyp ERR! configure error
    npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
    npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/passionfruit/node_modules/node-gyp/lib/configure.js:345:16)
    npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
    npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
    npm ERR! gyp ERR! System Darwin 20.5.0
    npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/passionfruit/node_modules/.bin/node-gyp" "rebuild"
    npm ERR! gyp ERR! cwd /usr/local/lib/node_modules/passionfruit/node_modules/frida
    npm ERR! gyp ERR! node -v v16.0.0
    npm ERR! gyp ERR! node-gyp -v v3.8.0
    npm ERR! gyp ERR! not ok
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/an0nym0us/.npm/_logs/2021-08-13T08_54_59_211Z-debug.log
    
    opened by Muhammad-Qasim-Munir 1
  • Important Announcement

    Important Announcement

    This repo is going to be archived.

    It's being rebuilt from the ground up, and a new project will be annonced once it's finished. It has a better organized architecture, and it should be much more stable and easier to contribute. There may be rebranding if I come up with something. Therefore, I'll stop accepting bug reports and feature requests here.

    Please join our Discord Channel to track updates.


    The new project is here

    https://github.com/chichou/grapefruit

    announcement 
    opened by ChiChou 1
  • Finding default calls to iOS app

    Finding default calls to iOS app

    First of all, thank you for the creation of passionfruit. What I am looking for is to find the actions Frida takes when opening an iOS app via passionfruit's web GUI.

    I am testing an app and observe a peculiar behavior in authentication whenever the app is opened via passionfruit web GUI. Is there a way to find the calls made to the app when it is opened from passionfruit?

    Thanks very much for your time.

    opened by Cooltest1 0
  • Unable to resolve bundle path to bundle ID when used with Frida Gadget

    Unable to resolve bundle path to bundle ID when used with Frida Gadget

    Packaged up an app with Frida Gadget using the patchipa option in Objection, runs fine and I get the prompt to say I have Gadget available to me

    2020-01-17 09:52:49.748775+0000 BTBCI[621:122386] Frida: Listening on 127.0.0.1 TCP port 27042

    Also have it showing

    PID  Name                               Identifier                                              
    ---  ---------------------------------  --------------------------------------------------------
    519  Calendar                           com.apple.mobilecal                                     
    230  Camera                             com.apple.camera                                        
    621  Gadget                             re.frida.Gadget  
    

    However when Passionfruit attempts to connect to Gadget via the web GUI the terminal spits out an error and kills the connection

    An unhandledRejection occurred: 
    Rejection: Error: Unable to resolve bundle path to bundle ID
    Error: Unable to resolve bundle path to bundle ID```
    
    opened by bensh 1
Owner
Chaitin Tech
长亭科技
Chaitin Tech
iOS tool that helps with profiling iOS Memory usage.

FBMemoryProfiler An iOS library providing developer tools for browsing objects in memory over time, using FBAllocationTracker and FBRetainCycleDetecto

Facebook Archive 3.4k Dec 7, 2022
A tool for Swift code modification intermediating between code generation and formatting.

swift-mod A tool for Swift code modification intermediating between code generation and formatting. Overview swift-mod is a tool for Swift code modifi

Ryo Aoyama 95 Nov 3, 2022
A command-line tool and Xcode Extension for formatting Swift code

Table of Contents What? Why? How? Command-line tool Xcode source editor extension Xcode build phase Via Applescript VSCode plugin Sublime Text plugin

Nick Lockwood 6.3k Jan 8, 2023
A tool to enforce Swift style and conventions.

SwiftLint A tool to enforce Swift style and conventions, loosely based on the now archived GitHub Swift Style Guide. SwiftLint enforces the style guid

Realm 16.9k Jan 9, 2023
A linter tool for Interface Builder

IBLinter A linter tool to normalize .xib and .storyboard files. Inspired by realm/SwiftLint Installation Using Homebrew $ brew install iblinter Using

IBDecodable 945 Nov 11, 2022
Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing projects.

Trackable Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing proj

Vojta Stavik 145 Apr 14, 2022
Aardvark is a library that makes it dead simple to create actionable bug reports.

Aardvark Aardvark makes it dead simple to create actionable bug reports. Aardvark is made up of a collection of frameworks that provide different bug

Square 257 Dec 19, 2022
Skredvarsel app - an iOS, iPadOS, and macOS application that provides daily avalanche warnings from the Norwegian Avalanche Warning Service API

Skredvarsel (Avalanche warning) app is an iOS, iPadOS, and macOS application that provides daily avalanche warnings from the Norwegian Avalanche Warning Service API

Jonas Follesø 8 Dec 15, 2022
Find common xib and storyboard-related problems without running your app or writing unit tests.

IBAnalyzer Find common xib and storyboard-related problems without running your app or writing unit tests. Usage Pass a path to your project to ibanal

Arek Holko 955 Oct 15, 2022
Find memory leaks in your iOS app at develop time.

中文介绍 | FAQ中文 MLeaksFinder MLeaksFinder helps you find memory leaks in your iOS apps at develop time. It can automatically find leaks in UIView and UIV

Tencent 5.3k Dec 22, 2022
Find memory issues & leaks in your iOS app without instruments

HeapInspector Find memory issues & leaks in your iOS app HeapInspector is a debug tool that monitors the memory heap with backtrace recording in your

Christian Menschel 1.8k Nov 24, 2022
In-app memory usage monitoring for iOS

What's Stats Stats displays load statuses such as the memory usage, the CPU load, and the number of subviews in-app, and in realtime. How to use Just

Shuichi Tsutsumi 170 Sep 18, 2022
Manipulates the undocumented interchange format for the Apple Notes app.

NotesArchive A Swift package for reading and writing an undocumented interchange format for the Apple Notes app in macOS 12 Monterey1. Enabling the De

Zachary Waldowski 7 Jul 5, 2022
Measure Swift code metrics and get reports in Xcode, Jenkins and other CI platforms.

Taylor ⚠️ Taylor is DEPRECATED. Use SwiftLint instead. A tool aimed to increase Swift code quality, by checking for conformance to code metrics. Taylo

YOPESO 301 Dec 24, 2022
Makes it easier to support older versions of iOS by fixing things and adding missing methods

PSTModernizer PSTModernizer carefully applies patches to UIKit and related Apple frameworks to fix known radars with the least impact. The current set

PSPDFKit Labs 217 Aug 9, 2022
SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations.

SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations. Objective Build a stan

Andres Canal 542 Sep 17, 2022
Cross-platform static analyzer and linter for Swift.

Wiki • Installation • Usage • Features • Developers • License Tailor is a cross-platform static analysis and lint tool for source code written in Appl

Sleekbyte 1.4k Dec 19, 2022
Type-safe observable values and collections in Swift

GlueKit ⚠️ WARNING ⚠️ This project is in a prerelease state. There is active work going on that will result in API changes that can/will break code wh

null 361 Oct 12, 2022
Exclude files and folders from Alfred’s search results

Ignore in Alfred Alfred Workflow Exclude files and folders from Alfred’s search results ⤓ Download Workflow About The macOS metadata search API only a

Alfred 10 Dec 13, 2022