github

khcrysalis / Feather

  • среда, 28 августа 2024 г. в 00:00:03
https://github.com/khcrysalis/Feather

Feather is a free on-device iOS application manager/installer built with UIKit for quality.



Feather

Feather is a free on-device iOS application manager/installer built with UIKit for quality.

README In Other Languages

Features

  • Altstore repo support. Supporting Legacy and 2.0 repo structures

  • Import your own .ipa's.

  • Inject tweaks when signing apps.

  • Install applications straight to your device seamlessly over the air.

  • Allows multiple certificate imports for easy switching.

  • Configurable signing options. (name, bundleid, version, other plist options)

  • Meant to be used with Apple Accounts that are apart of ADP (Apple Developer Program). however other certificates can also work!

  • Easy resigning! If you have another certificate you would like to use on an app you may resign and reinstall that same app!

  • No tracking, analytics, or any of the sort. Your information such as udid and certificates will never leave the device.

Important

Tweak support is in beta, make sure your tweaks work on the Ellekit hooking platform, and built with the latest version of theos.

Some tweaks, not all, should work with Feather. However, don't expect tweaks to work out of the box. As we will not change any dylib load command that isn't CydiaSubstrate.

Roadmap

Visit the roadmap here!

Screenshots

Pointercrate-pocket.

Pointercrate-pocket.

Pointercrate-pocket.

Pointercrate-pocket.

Sources Store Library Signing

Tip: Go into lightmode to see lightmode screenshots!

How it Works

Feather allows you to import a .p12 and a .mobileprovision pair to sign the application with (you will need a correct password to the p12 before importing). Zsign is used for the signing aspect, feather feeds it the certificates you have selected in its certificates tab and will sign the app on your device - after its finished it will now be added to your signed applications tab. When selected, it will take awhile as its compressing and will prompt you to install it.

FAQ

What does feather use for its server?

It uses the localhost.direct certificate and Vapor to self host an HTTPS server on your device - all itms services really needs is a valid certificate and a valid HTTPS server. Which allows iOS to accept the request and install the application.

Why does Feather append a random string on the bundle ID?

New ADP (Apple Developer Program) memberships created after June 6, 2021, require development and ad-hoc signed apps for iOS, iPadOS, and tvOS to check with a PPQ (Provisioning Profile Query Check) service when the app is first launched. The device must be connected to the internet to verify.

PPQCheck checks for a similar bundle identifier on the App Store, if said identifier matches the app you're launching and is happened to be signed with a non-appstore certificate, your Apple ID may be flagged and even banned from using the program for any longer.

This is why we prepend the random string before each identifier, its done as a safety meassure - however you can disable it if you really want to in Feathers settings page.

NOTE: IF YOU WANT TO KEEP APPLICATION DATA THROUGH REINSTALLS, MAKE SURE YOU HAVE THE SAME BUNDLEID.

Building

git clone https://github.com/khcrysalis/feather # Clone
cd feather
make package SCHEME="'feather (Release)'" # Build

Use SCHEME="'feather (Debug)'" for debug build

Acknowledgements

  • localhost.direct - localhost with public CA signed SSL certificate
  • Vapor - A server-side Swift HTTP web framework.
  • Zsign - Allowing to sign on-device, reimplimented to work on other platforms such as iOS.
  • Nuke - Image caching.
  • Asspp - Some code for setting up the http server.

Star History

Star History Chart

Contributions

They are welcome! :)

History

There was a tool called ESign (Easy Sign) that would allow you to sideload applications seamlessly on device, however it was discovered it sadly sends analytics over to some other location. There were stuff that supposedly removed the analytics but it's hard to decipher if it actually removed the problem at hand.

So I decided to make an alternative with similar features so I don't need to use that tool, along with me an others. A lot of research has been done to get this working, and originally got it working a few months ago for the first time! Of course without the help with Dhinakg in discovering you can actually use a local server to deploy an app on your device!

And now we're here! Hopefully this satisfies most people that want to sideload with their developer account or in general!