pyzule is now deprecated. use cyan.
an azule "clone" written in python3. pyzule
aims to be faster, have more features, have better support for manually modified dylibs, and overall have less issues than azule. officially supports linux, macos, and wsl. tested on arch linux and macos mojave w/ intel cpu.
not many right now, but will probably add some in the future if i need them.
open an issue for any feature requests!
generate and use shareable .pyzule
files to configure IPAs!
inject deb, dylib, framework, bundle, and appex files and automatically fix dependencies when possible
automatically fix dependencies on CydiaSubstrate, Cephei*, Orion, librocketbootstrap, libmryipc, and libhdev
copy any unknown file/folder types to app root
use a custom compression level
change app name, version, and bundle id
add custom url schemes
change app icon
enable documents support
customize MinimumOSVersion
remove UISupportedDevices
remove watch app
remove all app extensions (or only encrypted ones)
fakesign the output ipa/app
use custom entitlements for the app
merge a plist into the app's existing Info.plist
inject into @executable_path instead of @rpath
use substitute (open source) instead of CydiaSubstrate
you can get usage info with pyzule -h
.
$ pyzule -h usage: pyzule [-h] [-i input] [-o output] [-z .pyzule] [-n name] [-v version] [-b bundle id] [-m minimum] [-c [level]] [-k icon] [-x entitlements] [-l plist] [-r url [url ...]] [-f files [files ...]] [-u] [-w] [-d] [-s] [-e] [-g] [-p] [-t] [-q] [--update] an azule "clone" written in python3. options: -h, --help show this help message and exit -i input the .ipa/.app to patch -o output the name of the patched .ipa/.app that will be created -z .pyzule the .pyzule file to get info from -n name modify the app's name -v version modify the app's version -b bundle id modify the app's bundle id -m minimum change MinimumOSVersion -c [level] the compression level of the output ipa (default is 6, 0-9) -k icon an image file to use as the app icon -x entitlements a file containing entitlements to sign the app with -l plist a plist to merge with the existing Info.plist -r url [url ...] url schemes to add -f files [files ...] tweak files to inject into the ipa -u remove UISupportedDevices -w remove watch app -d enable files access -s fakesigns the ipa (for use with appsync) -e remove app extensions -g remove encrypted extensions -p inject into @executable_path -t use substitute instead of substrate -q thin all binaries to arm64 --update check for updates
open Terminal. this is where you'll be running every command.
install Xcode from the app store (if not already installed)
Install the Xcode cli tools (if not already installed or if pyzule
suddenly stopped working) by running:
xcode-select --install
sudo xcodebuild -license
install pyzule
:
bash -c "$(curl https://raw.githubusercontent.com/asdfzxcvbn/pyzule/main/install-pyzule.sh)"
on debian-based systems (like ubuntu), run the following:
sudo apt update ; sudo apt install unzip curl python3 python3-venv
on arch based systems, use:
sudo pacman -Syu unzip curl python
install pyzule
:
bash -c "$(curl https://raw.githubusercontent.com/asdfzxcvbn/pyzule/main/install-pyzule.sh)"
iirc you only need some packages like python, ldid, and odcctools and probably not anything else but please open an issue if u need help
install pyzule
:
bash -c "$(curl https://raw.githubusercontent.com/asdfzxcvbn/pyzule/main/install-pyzule.sh)"
if you'd like to improve pyzule
, then fork this repo and open a PR to the dev
branch. thank you!
pyzule
wouldn't be possible if it wasn't for the work of some marvelous people. HUGE thanks to:
Al4ise for Azule
lief-project for LIEF
binnichtaktiv for inspiring me to actually start this project
formerly used:
tyilo's insert_dylib
LeanVel's insert_dylib for linux