mirror of
https://github.com/palera1n/palera1n.git
synced 2026-10-21 09:47:01 +02:00
Compare commits
33
Commits
nickchan/test
...
v2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71240fb719 | ||
|
|
006518db3d | ||
|
|
3d2d380820 | ||
|
|
a099e321c0 | ||
|
|
34bc646439 | ||
|
|
147134b495 | ||
|
|
7ddf02e0b9 | ||
|
|
aa91582aba | ||
|
|
39a5ad981c | ||
|
|
59aabaad08 | ||
|
|
106e2214b5 | ||
|
|
3022c6a447 | ||
|
|
a4eacb75c0 | ||
|
|
05ca13d925 | ||
|
|
c01b426a87 | ||
|
|
3a2ff433ed | ||
|
|
0122e6c603 | ||
|
|
cc151e727e | ||
|
|
76b2695e9d | ||
|
|
1e72458985 | ||
|
|
ba2a4dee25 | ||
|
|
f8319e44f1 | ||
|
|
ff581a41e9 | ||
|
|
b4bd41de60 | ||
|
|
0b5b54521f | ||
|
|
17f28f3f0a | ||
|
|
8ef0035dc0 | ||
|
|
34edfd649b | ||
|
|
671e2346ae | ||
|
|
464c832883 | ||
|
|
0e9cd5e1f6 | ||
|
|
08fbb60538 | ||
|
|
8787616ae0 |
No files matched your search
@@ -2,8 +2,11 @@ name: Create Issue
|
||||
description: Ask help for palera1n regarding support or generally how it works!
|
||||
labels: [palera1n]
|
||||
assignees:
|
||||
- ssalggnikool
|
||||
- khcrysalis
|
||||
- asdfugil
|
||||
- elliessurviving
|
||||
- hg13bs
|
||||
- afastaudir8
|
||||
body:
|
||||
- type: input
|
||||
id: device
|
||||
|
||||
+143
-142
@@ -76,9 +76,11 @@ jobs:
|
||||
env:
|
||||
MBEDTLS_VERSION: 3.5.2
|
||||
READLINE_VERSION: 8.2
|
||||
SLANG_VERSION: 2.3.3
|
||||
NEWT_VERSION: 0.52.23
|
||||
POPT_VERSION: 1.19
|
||||
LIBIMOBILEDEVICE_COMMIT: ed0d66d0341562731bb19928dfe48155509fa7a7
|
||||
LIBIRECOVERY_COMMIT: 7ce02c347b7c26e59498e6af31c9da51018d0fa1
|
||||
LIBIMOBILEDEVICE_GLUE_COMMIT: 362f7848ac89b74d9dd113b38b51ecb601f76094
|
||||
LIBPLIST_COMMIT: 2117b8fdb6b4096455bd2041a63e59a028120136
|
||||
LIBUSBMUXD_COMMIT: a7f0543fb1ecb20ac7121c0fd77297200e0e43fc
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -98,26 +100,6 @@ jobs:
|
||||
run: |
|
||||
echo "SDK=$(xcrun -sdk ${{ matrix.os }} --show-sdk-path)" >> $GITHUB_ENV
|
||||
|
||||
- name: Download dependencies (source code)
|
||||
run: |
|
||||
curl -LOOOOOO \
|
||||
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
||||
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz \
|
||||
https://www.jedsoft.org/releases/slang/slang-${{ env.SLANG_VERSION }}.tar.bz2 \
|
||||
https://releases.pagure.org/newt/newt-${{ env.NEWT_VERSION }}.tar.gz \
|
||||
https://github.com/rpm-software-management/popt/archive/refs/tags/popt-${{ env.POPT_VERSION }}-release.tar.gz
|
||||
|
||||
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
||||
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||
tar -xjf slang-${{ env.SLANG_VERSION }}.tar.bz2
|
||||
tar -xf newt-${{ env.NEWT_VERSION }}.tar.gz
|
||||
tar -xf popt-${{ env.POPT_VERSION }}-release.tar.gz
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
||||
|
||||
- name: Select correct Xcode
|
||||
run: |
|
||||
sudo xcode-select -s /Applications/Xcode_14.2.app
|
||||
@@ -132,16 +114,14 @@ jobs:
|
||||
echo "CC=$(xcrun --find cc)" >> $GITHUB_ENV
|
||||
echo "CXX=$(xcrun --find c++)" >> $GITHUB_ENV
|
||||
echo "CPP=$(xcrun --find cc) -E" >> $GITHUB_ENV
|
||||
echo "CFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Os -g -flto=full -Wl,-object_path_lto,lto.o" >> $GITHUB_ENV
|
||||
echo "CPPFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Wno-error-implicit-function-declaration -Os" >> $GITHUB_ENV
|
||||
echo "CXXFLAGS=-stdlib=libc++ -g -Os -isysroot ${{ env.SDK }} -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isystem $(pwd)/sysroot/usr/local/include -Os" >> $GITHUB_ENV
|
||||
echo "CFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Os -g -flto=full -Wl,-object_path_lto,lto.o -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||
echo "CPPFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Wno-error-implicit-function-declaration -Os -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||
echo "CXXFLAGS=-stdlib=libc++ -g -Os -isysroot ${{ env.SDK }} -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isystem $(pwd)/sysroot/usr/local/include -Os -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||
echo "LDFLAGS=-g -Wl,-dead_strip -arch ${{ matrix.arch }} -isysroot ${{ env.SDK }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
||||
echo "CFLAGS_FOR_BUILD=-arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Os" >> $GITHUB_ENV
|
||||
echo "CXXFLAGS_FOR_BUILD=-stdlib=libc++ -arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Os" >> $GITHUB_ENV
|
||||
echo "CPPFLAGS_FOR_BUILD=-arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Wno-error-implicit-function-declaration -Os" >> $GITHUB_ENV
|
||||
echo "LDFLAGS_FOR_BUILD=-Wl,-dead_strip" >> $GITHUB_ENV
|
||||
mkdir -p $(pwd)/sysroot/usr/local/lib
|
||||
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
||||
|
||||
- name: Prepare iPhoneOS environment
|
||||
if: matrix.os == 'iphoneos'
|
||||
@@ -182,7 +162,59 @@ jobs:
|
||||
gsed -E /'__API_UNAVAILABLE'/d < ${TARGET_SYSROOT}/usr/include/pthread.h > sysroot/usr/local/include/pthread.h
|
||||
gsed -i -E s/'__API_UNAVAILABLE\(.*\)'// sysroot/usr/local/include/IOKit/IOKitLib.h
|
||||
|
||||
- name: Check dependencies cache
|
||||
run: |
|
||||
echo "target: ${{ matrix.os }}-${{ matrix.arch }}" > cache.txt
|
||||
echo "mbedtls ${{ env.MBEDTLS_VERSION }}" >> cache.txt
|
||||
echo "readline: ${{ env.READLINE_VERSION }}" >> cache.txt
|
||||
echo "libimobiledevice: ${{ env.LIBIMOBILEDEVICE_COMMIT }}" >> cache.txt
|
||||
echo "libirecovery: ${{ env.LIBIRECOVERY_COMMIT }}" >> cache.txt
|
||||
echo "libimobiledevice-glue: ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }}" >> cache.txt
|
||||
echo "libplist: ${{ env.LIBPLIST_COMMIT }}" >> cache.txt
|
||||
echo "libusbmuxd: ${{ env.LIBUSBMUXD_COMMIT }}" >> cache.txt
|
||||
echo "cc: $($(xcrun --find cc) --version)" >> cache.txt
|
||||
echo "CACHE_TXT_CHECKSUM=sysroot-$(shasum -a 512 cache.txt | cut -d' ' -f1)" >> $GITHUB_ENV
|
||||
|
||||
- name: Download cached sysroot
|
||||
id: sysroot_cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||
key: sysroot-${{ env.CACHE_TXT_CHECKSUM }}
|
||||
|
||||
- name: Extract cached sysroot
|
||||
if: steps.sysroot_cache.outputs.cache-hit == 'true'
|
||||
run: |
|
||||
xz -dcT0 sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz | tar -x
|
||||
|
||||
- name: Setup sysroot
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
mkdir -p $(pwd)/sysroot/usr/local/lib
|
||||
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
||||
|
||||
- name: Download dependencies (source code)
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
curl -LOOOOOO \
|
||||
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
||||
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||
|
||||
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
||||
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
||||
cd libplist && git fetch origin ${{ env.LIBPLIST_COMMIT }} && git reset --hard ${{ env.LIBPLIST_COMMIT }} && cd ..
|
||||
cd libirecovery && git fetch origin ${{ env.LIBIRECOVERY_COMMIT }} && git reset --hard ${{ env.LIBIRECOVERY_COMMIT }} && cd ..
|
||||
cd libimobiledevice-glue && git fetch origin ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && cd ..
|
||||
cd libimobiledevice && git fetch origin ${{ env.LIBIMOBILEDEVICE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_COMMIT }} && cd ..
|
||||
cd libusbmuxd && git fetch origin ${{ env.LIBUSBMUXD_COMMIT }} && git reset --hard ${{ env.LIBUSBMUXD_COMMIT }} && cd ..
|
||||
|
||||
- name: Build Mbed TLS
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
||||
cat ../patches/mbedtls/0001-Allow-empty-x509-cert-issuer.patch | patch -sN -d . -p1
|
||||
@@ -207,6 +239,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build readline
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd readline-${{ env.READLINE_VERSION }}
|
||||
CC=clang CXX=clang++ ./configure ${{ env.CONFIGURE_ARGS }} ac_cv_type_sig_atomic_t=no
|
||||
@@ -214,52 +247,8 @@ jobs:
|
||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build S-Lang
|
||||
run: |
|
||||
cd slang-${{ env.SLANG_VERSION }}
|
||||
./configure \
|
||||
${{ env.CONFIGURE_ARGS }} \
|
||||
--without-x \
|
||||
--without-pcre \
|
||||
--without-onig \
|
||||
--without-z \
|
||||
--without-png \
|
||||
--without-iconv
|
||||
gmake -j$(sysctl -n hw.ncpu) static
|
||||
gmake -j$(sysctl -n hw.ncpu) install-static DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build popt
|
||||
run: |
|
||||
cd popt-popt-${{ env.POPT_VERSION }}-release
|
||||
autoreconf -fiv
|
||||
./configure \
|
||||
${{ env.CONFIGURE_ARGS }} \
|
||||
--without-libiconv-prefix \
|
||||
--without-libintl-prefix \
|
||||
--disable-nls \
|
||||
--disable-werror
|
||||
gmake -j$(sysctl -n hw.ncpu)
|
||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build newt
|
||||
run: |
|
||||
cd newt-${{ env.NEWT_VERSION }}
|
||||
./configure \
|
||||
${{ env.CONFIGURE_ARGS }} \
|
||||
--with-readline=gnu \
|
||||
--without-python \
|
||||
--without-tcl \
|
||||
--disable-nls
|
||||
gmake -j$(sysctl -n hw.ncpu) libnewt.a
|
||||
mkdir -p ${{ env.DESTDIR }}/usr/local/{lib/pkgconfig,include}
|
||||
install -m644 libnewt.pc ${{ env.DESTDIR }}/usr/local/lib/pkgconfig
|
||||
install -m644 libnewt.a ${{ env.DESTDIR }}/usr/local/lib
|
||||
install -m644 newt.h ${{ env.DESTDIR }}/usr/local/include
|
||||
cd ..
|
||||
|
||||
- name: Build libplist
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libplist
|
||||
autoreconf -fiv
|
||||
@@ -269,6 +258,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libimobiledevice-glue
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libimobiledevice-glue
|
||||
autoreconf -fiv
|
||||
@@ -278,6 +268,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libirecovery
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
sudo cp -a sysroot/usr/local/* /usr/local
|
||||
cd libirecovery
|
||||
@@ -293,6 +284,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libusbmuxd
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libusbmuxd
|
||||
autoreconf -fiv
|
||||
@@ -302,10 +294,11 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libimobiledevice
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libimobiledevice
|
||||
autoreconf -fiv
|
||||
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --enable-debug
|
||||
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --disable-debug --disable-wireless-pairing
|
||||
echo -e 'all:\ninstall:' > tools/Makefile
|
||||
gmake -j$(sysctl -n hw.ncpu)
|
||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||
@@ -316,15 +309,15 @@ jobs:
|
||||
cp -a sysroot/${{ env.PREFIX }}/{include,lib} dep_root
|
||||
find dep_root -name '*.dylib' -delete
|
||||
find dep_root -name '*.la' -delete
|
||||
gmake -j$(sysctl -n hw.ncpu) TUI=1
|
||||
gmake -j$(sysctl -n hw.ncpu) ROOTFUL=1
|
||||
cp src/palera1n palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
||||
dsymutil palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
||||
strip palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
||||
|
||||
- name: Build palera1n (Development)
|
||||
run: |
|
||||
CC="${{ matrix.triple }}-gcc" gmake -j$(sysctl -n hw.ncpu) clean
|
||||
CC="${{ matrix.triple }}-gcc" gmake -j$(sysctl -n hw.ncpu) DEV_BUILD=1 TUI=1 ROOTFUL=1
|
||||
gmake -j$(sysctl -n hw.ncpu) clean
|
||||
gmake -j$(sysctl -n hw.ncpu) DEV_BUILD=1 TUI=1 ROOTFUL=1
|
||||
cp src/palera1n palera1n-${{ matrix.os }}-${{ matrix.arch }}.development
|
||||
|
||||
- name: Prepare artifact
|
||||
@@ -378,7 +371,12 @@ jobs:
|
||||
name: palera1n-${{ matrix.os }}-${{ matrix.arch }}.dSYM
|
||||
path: palera1n-${{ matrix.os }}-${{ matrix.arch }}.dSYM
|
||||
retention-days: 1
|
||||
|
||||
|
||||
- name: Generate cached sysroot archive
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
tar -c sysroot | xz -zce9T 0 > sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||
|
||||
darwin-dist:
|
||||
if: ${{ github.event_name != 'pull_request' }}
|
||||
runs-on: macos-latest
|
||||
@@ -532,12 +530,15 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
MBEDTLS_VERSION: 3.5.2
|
||||
LIBUSB_VERSION: 1.0.26
|
||||
LIBUSB_VERSION: 1.0.27
|
||||
READLINE_VERSION: 8.2
|
||||
SLANG_VERSION: 2.3.3
|
||||
NEWT_VERSION: 0.52.23
|
||||
GPM_VERSION: 1.20.7
|
||||
POPT_VERSION: 1.19
|
||||
LIBIMOBILEDEVICE_COMMIT: ed0d66d0341562731bb19928dfe48155509fa7a7
|
||||
LIBIRECOVERY_COMMIT: 7ce02c347b7c26e59498e6af31c9da51018d0fa1
|
||||
LIBIMOBILEDEVICE_GLUE_COMMIT: 362f7848ac89b74d9dd113b38b51ecb601f76094
|
||||
USBMUXD_COMMIT: bc0b91ca856811f4393318dc83db6dc3c1ac326d
|
||||
LIBPLIST_COMMIT: 2117b8fdb6b4096455bd2041a63e59a028120136
|
||||
LIBUSBMUXD_COMMIT: a7f0543fb1ecb20ac7121c0fd77297200e0e43fc
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -592,43 +593,75 @@ jobs:
|
||||
;;
|
||||
esac
|
||||
echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV
|
||||
echo "CFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
||||
echo "CXXFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
||||
echo "CFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||
echo "CXXFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||
echo "LDFLAGS=-g -Wl,--gc-sections -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
||||
echo "INSTALL=$(command -v install) --strip-program=${{ matrix.triple }}-strip" >> $GITHUB_ENV
|
||||
echo "DESTDIR=$(pwd)/sysroot" >> $GITHUB_ENV
|
||||
echo "PREFIX=/usr/local" >> $GITHUB_ENV
|
||||
echo "CONFIGURE_ARGS=--build=x86_64-linux-gnu --host=${{ matrix.triple }} --prefix=/usr/local --disable-shared --enable-static" >> $GITHUB_ENV
|
||||
echo "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
|
||||
|
||||
- name: Check dependencies cache
|
||||
run: |
|
||||
echo "target: ${{ matrix.triple }}" > cache.txt
|
||||
echo "mbedtls ${{ env.MBEDTLS_VERSION }}" >> cache.txt
|
||||
echo "readline: ${{ env.READLINE_VERSION }}" >> cache.txt
|
||||
echo "libimobiledevice: ${{ env.LIBIMOBILEDEVICE_COMMIT }}" >> cache.txt
|
||||
echo "libirecovery: ${{ env.LIBIRECOVERY_COMMIT }}" >> cache.txt
|
||||
echo "libimobiledevice-glue: ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }}" >> cache.txt
|
||||
echo "libplist: ${{ env.LIBPLIST_COMMIT }}" >> cache.txt
|
||||
echo "libusbmuxd: ${{ env.LIBUSBMUXD_COMMIT }}" >> cache.txt
|
||||
echo "usbmuxd: ${{ env.USBMUXD_COMMIT }}" >> cache.txt
|
||||
echo "cc: $(${{ env.CROSS_COMPILE }}gcc --version)" >> cache.txt
|
||||
echo "CACHE_TXT_CHECKSUM=sysroot-$(sha512sum cache.txt | cut -d' ' -f1)" >> $GITHUB_ENV
|
||||
|
||||
- name: Download cached sysroot
|
||||
id: sysroot_cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||
key: sysroot-${{ env.CACHE_TXT_CHECKSUM }}
|
||||
|
||||
- name: Extract cached sysroot
|
||||
if: steps.sysroot_cache.outputs.cache-hit == 'true'
|
||||
run: |
|
||||
xz -dcT0 sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz | tar -x
|
||||
|
||||
- name: Setup sysroot
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
mkdir -p $(pwd)/sysroot/usr/local/lib
|
||||
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
||||
|
||||
- name: Download dependencies (source code)
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
curl -LOOOOOOO \
|
||||
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
||||
https://github.com/libusb/libusb/releases/download/v${{ env.LIBUSB_VERSION }}/libusb-${{ env.LIBUSB_VERSION }}.tar.bz2 \
|
||||
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz \
|
||||
https://www.jedsoft.org/releases/slang/slang-${{ env.SLANG_VERSION }}.tar.bz2 \
|
||||
https://releases.pagure.org/newt/newt-${{ env.NEWT_VERSION }}.tar.gz \
|
||||
https://github.com/telmich/gpm/archive/refs/tags/${{ env.GPM_VERSION }}.tar.gz \
|
||||
https://github.com/rpm-software-management/popt/archive/refs/tags/popt-${{ env.POPT_VERSION }}-release.tar.gz
|
||||
https://github.com/telmich/gpm/archive/refs/tags/${{ env.GPM_VERSION }}.tar.gz
|
||||
|
||||
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
||||
tar -xjf libusb-${{ env.LIBUSB_VERSION }}.tar.bz2
|
||||
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||
tar -xjf slang-${{ env.SLANG_VERSION }}.tar.bz2
|
||||
tar -xf newt-${{ env.NEWT_VERSION }}.tar.gz
|
||||
tar -xf ${{ env.GPM_VERSION }}.tar.gz
|
||||
tar -xf popt-${{ env.POPT_VERSION }}-release.tar.gz
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
||||
git clone --depth=1 https://github.com/libimobiledevice/usbmuxd
|
||||
cd libplist && git fetch origin ${{ env.LIBPLIST_COMMIT }} && git reset --hard ${{ env.LIBPLIST_COMMIT }} && cd ..
|
||||
cd libirecovery && git fetch origin ${{ env.LIBIRECOVERY_COMMIT }} && git reset --hard ${{ env.LIBIRECOVERY_COMMIT }} && cd ..
|
||||
cd libimobiledevice-glue && git fetch origin ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && cd ..
|
||||
cd usbmuxd && git fetch origin ${{ env.USBMUXD_COMMIT }} && git reset --hard ${{ env.USBMUXD_COMMIT }} && cd ..
|
||||
cd libimobiledevice && git fetch origin ${{ env.LIBIMOBILEDEVICE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_COMMIT }} && cd ..
|
||||
cd libusbmuxd && git fetch origin ${{ env.LIBUSBMUXD_COMMIT }} && git reset --hard ${{ env.LIBUSBMUXD_COMMIT }} && cd ..
|
||||
|
||||
- name: Build Mbed TLS
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
||||
cat ../patches/mbedtls/0001-Allow-empty-x509-cert-issuer.patch | patch -sN -d . -p1
|
||||
@@ -653,6 +686,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libusb
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libusb-${{ env.LIBUSB_VERSION }}
|
||||
./configure ${{ env.CONFIGURE_ARGS }} --disable-udev
|
||||
@@ -661,6 +695,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build readline
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd readline-${{ env.READLINE_VERSION }}
|
||||
./configure ${{ env.CONFIGURE_ARGS }}
|
||||
@@ -668,22 +703,8 @@ jobs:
|
||||
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build S-Lang
|
||||
run: |
|
||||
cd slang-${{ env.SLANG_VERSION }}
|
||||
./configure \
|
||||
${{ env.CONFIGURE_ARGS }} \
|
||||
--without-x \
|
||||
--without-pcre \
|
||||
--without-onig \
|
||||
--without-z \
|
||||
--without-png \
|
||||
--without-iconv
|
||||
gmake -j$(sysctl -n hw.ncpu) static
|
||||
gmake -j$(sysctl -n hw.ncpu) install-static DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build GPM
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd gpm-${{ env.GPM_VERSION }}
|
||||
cat ../patches/gpm/*.patch | patch -sN -d . -p1
|
||||
@@ -694,38 +715,8 @@ jobs:
|
||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build popt
|
||||
run: |
|
||||
cd popt-popt-${{ env.POPT_VERSION }}-release
|
||||
autoreconf -fiv
|
||||
./configure \
|
||||
${{ env.CONFIGURE_ARGS }} \
|
||||
--without-libiconv-prefix \
|
||||
--without-libintl-prefix \
|
||||
--disable-nls \
|
||||
--disable-werror
|
||||
gmake -j$(sysctl -n hw.ncpu)
|
||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||
cd ..
|
||||
|
||||
- name: Build newt
|
||||
run: |
|
||||
cd newt-${{ env.NEWT_VERSION }}
|
||||
./configure \
|
||||
${{ env.CONFIGURE_ARGS }} \
|
||||
--with-readline=gnu \
|
||||
--without-python \
|
||||
--without-tcl \
|
||||
--disable-nls \
|
||||
--with-gpm-support
|
||||
gmake -j$(sysctl -n hw.ncpu) libnewt.a
|
||||
mkdir -p ${{ env.DESTDIR }}/usr/local/{lib/pkgconfig,include}
|
||||
install -m644 libnewt.pc ${{ env.DESTDIR }}/usr/local/lib/pkgconfig
|
||||
install -m644 libnewt.a ${{ env.DESTDIR }}/usr/local/lib
|
||||
install -m644 newt.h ${{ env.DESTDIR }}/usr/local/include
|
||||
cd ..
|
||||
|
||||
- name: Build libplist
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libplist
|
||||
autoreconf -fiv
|
||||
@@ -735,6 +726,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libimobiledevice-glue
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libimobiledevice-glue
|
||||
autoreconf -fiv
|
||||
@@ -744,6 +736,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libirecovery (sorta)
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
sudo mv /usr/local /usr/local.bak
|
||||
sudo ln -s ${{ env.DESTDIR }}${{ env.PREFIX }} /usr/local
|
||||
@@ -757,6 +750,7 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libusbmuxd
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libusbmuxd
|
||||
autoreconf -fiv
|
||||
@@ -766,10 +760,11 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build libimobiledevice
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd libimobiledevice
|
||||
autoreconf -fiv
|
||||
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --enable-debug
|
||||
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --disable-debug --disable-wireless-pairing
|
||||
echo -e 'all:\ninstall:' > tools/Makefile
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
||||
@@ -778,6 +773,7 @@ jobs:
|
||||
sudo mv /usr/local.bak /usr/local
|
||||
|
||||
- name: Build usbmuxd
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd usbmuxd
|
||||
autoreconf -fiv
|
||||
@@ -798,7 +794,7 @@ jobs:
|
||||
cp -a ${{ env.DESTDIR }}/${{ env.PREFIX }}/{include,lib} dep_root
|
||||
find dep_root -name '*.so' -delete
|
||||
find dep_root -name '*.la' -delete
|
||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) TUI=1
|
||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) ROOTFUL=1
|
||||
cp src/palera1n palera1n.release
|
||||
|
||||
- name: Seperate debug symbols
|
||||
@@ -807,11 +803,11 @@ jobs:
|
||||
${{ matrix.triple }}-strip --strip-debug --strip-unneeded palera1n.release
|
||||
${{ matrix.triple }}-objcopy --add-gnu-debuglink=palera1n.debug palera1n.release
|
||||
chmod -x palera1n.debug
|
||||
|
||||
|
||||
- name: Build palera1n (Development)
|
||||
run: |
|
||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) clean
|
||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) DEV_BUILD=1 TUI=1 ROOTFUL=1
|
||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) DEV_BUILD=1 ROOTFUL=1
|
||||
cp src/palera1n palera1n.development
|
||||
|
||||
- name: Prepare artifact
|
||||
@@ -836,7 +832,7 @@ jobs:
|
||||
|
||||
sed 's|@DEB_ARCH@|${{ env.ARCH_NAME }}|g' -i stage/DEBIAN/control
|
||||
sed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||
|
||||
|
||||
install -Dm644 ready/binaries/palera1n-${{ env.CHECKRA1N_NAME }} stage/usr/bin/palera1n
|
||||
gzip -c9 docs/palera1n.1 > stage/usr/share/man/man1/palera1n.1.gz
|
||||
chmod 755 stage/usr/bin/palera1n
|
||||
@@ -876,6 +872,11 @@ jobs:
|
||||
localDir: 'usbmuxd-static/'
|
||||
remoteDir: "/palera1n/artifacts/usbmuxd-static"
|
||||
|
||||
- name: Generate cached sysroot archive
|
||||
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
tar -c sysroot | xz -zce9T 0 > sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||
|
||||
finish-build:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
@@ -4,6 +4,7 @@ dep_root/**
|
||||
!contrib/.keep
|
||||
contrib/
|
||||
*.o
|
||||
dep_root*.tgz
|
||||
.vscode
|
||||
checkra1n*
|
||||
payload.c
|
||||
|
||||
@@ -27,11 +27,11 @@ endif
|
||||
LIBS += $(DEP)/lib/libmbedtls.a $(DEP)/lib/libmbedcrypto.a $(DEP)/lib/libmbedx509.a $(DEP)/lib/libreadline.a
|
||||
|
||||
ifeq ($(TUI),1)
|
||||
LIBS += $(DEP)/lib/libnewt.a $(DEP)/lib/libpopt.a $(DEP)/lib/libslang.a
|
||||
ifeq ($(TARGET_OS),Linux)
|
||||
LIBS += $(DEP)/lib/libgpm.a
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(DEV_BUILD),1)
|
||||
CFLAGS += -O0 -g -DDEV_BUILD -fno-omit-frame-pointer
|
||||
ifeq ($(ASAN),1)
|
||||
|
||||
@@ -30,6 +30,8 @@ Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0
|
||||
| iPhone 8 | iPad Pro (12.9") (1st generation) | | |
|
||||
| iPhone 8 Plus | iPad Pro (10.5") | | |
|
||||
| iPhone X | iPad Pro (12.9") (2nd generation) | | |
|
||||
| | iPad Air 2 | | |
|
||||
|
||||
|
||||
> Note that on `A11` (iPhone X, 8, 8 Plus), **you must disable your passcode while in the jailbroken state** (on iOS 16, you need to **reset your device** before proceeding with palera1n).
|
||||
|
||||
@@ -87,10 +89,16 @@ We are **NOT** responsible for any data loss, or the result of a device being br
|
||||
|
||||
## Troubleshooting
|
||||
Make sure you're following the guides provided [here](https://palera.in), also when asking for support make sure you provide full details on your device, such as:
|
||||
- iPhone/iPad/iPod
|
||||
- iPhone/iPad/iPod/Apple TV
|
||||
- iOS Version
|
||||
- Passcode enabled?
|
||||
- Verbose from palera1n (specifying `-Vv` within palera1n)
|
||||
- Panic logs, if panicked then send latest `panic-full` log from your device.
|
||||
|
||||
Create an issue here: https://github.com/palera1n/palera1n/issues/new/choose
|
||||
|
||||
## Credits
|
||||
|
||||
[All credits for palera1n can be found here](https://palera.in/)
|
||||
|
||||
If proper credit isn't shown please message us or create an issue.
|
||||
+3
-4
@@ -6,7 +6,7 @@
|
||||
.Dt palera1n 1
|
||||
.Sh NAME
|
||||
.Nm palera1n
|
||||
.Nd arm64 iOS/iPadOS/tvOS 15.0-17.5, bridgeOS 5.0-8.3 jailbreaking tool
|
||||
.Nd arm64 iOS/iPadOS/tvOS 15.0-18.0, bridgeOS 5.0-9.0 jailbreaking tool
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl cCdDEfhIlLnpRsSTvV
|
||||
@@ -20,7 +20,7 @@
|
||||
.Op Fl -force-revert
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
jailbreaks an iOS/iPadOS/tvOS 15.0-17.5, bridgeOS 6.0-8.3 device with an arm64 (arm64e excluded) on iOS 15.0-17.5,
|
||||
jailbreaks an arm64 (arm64e excluded) iOS/iPadOS/tvOS 15.0-18.0, bridgeOS 5.0-9.0 device,
|
||||
utilizing the
|
||||
.Em checkm8
|
||||
bootROM exploit.
|
||||
@@ -57,7 +57,7 @@ In the remainder of this document, the term "iOS" and "iPadOS" will be used inte
|
||||
as the difference is negligible as far as the jailbreak is concerened.
|
||||
.Pp
|
||||
.Sh SUPPORTED DEVICES
|
||||
As described above, arm64 iOS 15.0-17.5 devices are supported, here is an explicit
|
||||
As described above, arm64 iOS 15.0-18.0 devices are supported, here is an explicit
|
||||
list of supported devicecs:
|
||||
|
||||
.Bl -tag -compact
|
||||
@@ -166,7 +166,6 @@ argument is used during fakefs setup.
|
||||
Exit after entering recovery mode.
|
||||
.It Fl f , -fakefs
|
||||
Proceed in rootful mode. This applies to both full, partial fakefs, as well as realfs.
|
||||
This option is not supported on iOS/iPadOS 17.
|
||||
.It Fl h , -help
|
||||
Prints help text.
|
||||
.It Fl i , -checkra1n-file Ar checkra1n file
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
#define U stderr,
|
||||
#define B "#\n# palera1n: " BUILD_TAG " \n#\n"
|
||||
#define L "# ======== Made by =======\n"
|
||||
#define E "# Made by: Nick Chan, " THE_PLUSH ", Samara, Mineek, staturnz, " BAKERAIN_DEVELOPE_R ", " NEKO_DEVELOPE_R " \n"
|
||||
#define E "# Made by: Nick Chan, " THE_PLUSH ", Khcrysalis, Mineek, staturnz, " BAKERAIN_DEVELOPE_R ", " NEKO_DEVELOPE_R " \n"
|
||||
#define M "# ======== Thanks to =======\n"
|
||||
#define A "# Thanks to: llsc12, Nebula, Lrdsnow, nikias (libimobiledevice),\n"
|
||||
#define K "# checkra1n team (Siguza, axi0mx, littlelailo et al.),\n"
|
||||
|
||||
+40
-49
@@ -40,10 +40,6 @@ int exec_checkra1n(void) {
|
||||
LOG(LOG_INFO, "About to execute checkra1n");
|
||||
int fd_checkra1n, fd_pongo, ret;
|
||||
char* checkra1n_path = NULL;
|
||||
if (ext_checkra1n != NULL) {
|
||||
checkra1n_path = ext_checkra1n;
|
||||
goto checkra1n_exec;
|
||||
}
|
||||
#ifndef NO_CUSTOM_PONGO
|
||||
if (pongo_path == NULL) {
|
||||
pongo_path = malloc(strlen(tmpdir) + 20);
|
||||
@@ -69,36 +65,40 @@ int exec_checkra1n(void) {
|
||||
}
|
||||
} else external_pongo = true;
|
||||
#endif
|
||||
checkra1n_path = malloc(strlen(tmpdir) + 20);
|
||||
if (checkra1n_path == NULL) {
|
||||
LOG(LOG_FATAL, "memory allocation failed\n");
|
||||
return -1;
|
||||
}
|
||||
snprintf(checkra1n_path, strlen(tmpdir) + 20, "%s/checkra1n.XXXXXX", tmpdir);
|
||||
fd_checkra1n = mkstemp(checkra1n_path);
|
||||
if (fd_checkra1n == -1) {
|
||||
LOG(LOG_FATAL, "Cannot open temporary file %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||
free(checkra1n_path);
|
||||
checkra1n_path = NULL;
|
||||
return -1;
|
||||
}
|
||||
ssize_t didWrite_checkra1n = write(fd_checkra1n, checkra1n, checkra1n_len);
|
||||
if (didWrite_checkra1n != (ssize_t)checkra1n_len) {
|
||||
LOG(LOG_FATAL, "Size written to %s does not match expected: %zd != %" PRIu32 ": %d (%s)", checkra1n_path, didWrite_checkra1n, checkra1n_len, errno, strerror(errno));
|
||||
if (ext_checkra1n != NULL) {
|
||||
checkra1n_path = ext_checkra1n;
|
||||
} else {
|
||||
checkra1n_path = malloc(strlen(tmpdir) + 20);
|
||||
if (checkra1n_path == NULL) {
|
||||
LOG(LOG_FATAL, "memory allocation failed\n");
|
||||
return -1;
|
||||
}
|
||||
snprintf(checkra1n_path, strlen(tmpdir) + 20, "%s/checkra1n.XXXXXX", tmpdir);
|
||||
fd_checkra1n = mkstemp(checkra1n_path);
|
||||
if (fd_checkra1n == -1) {
|
||||
LOG(LOG_FATAL, "Cannot open temporary file %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||
free(checkra1n_path);
|
||||
checkra1n_path = NULL;
|
||||
return -1;
|
||||
}
|
||||
ssize_t didWrite_checkra1n = write(fd_checkra1n, checkra1n, checkra1n_len);
|
||||
if (didWrite_checkra1n != (ssize_t)checkra1n_len) {
|
||||
LOG(LOG_FATAL, "Size written to %s does not match expected: %zd != %" PRIu32 ": %d (%s)", checkra1n_path, didWrite_checkra1n, checkra1n_len, errno, strerror(errno));
|
||||
close(fd_checkra1n);
|
||||
unlink(checkra1n_path);
|
||||
free(checkra1n_path);
|
||||
checkra1n_path = NULL;
|
||||
return -1;
|
||||
}
|
||||
close(fd_checkra1n);
|
||||
unlink(checkra1n_path);
|
||||
free(checkra1n_path);
|
||||
checkra1n_path = NULL;
|
||||
return -1;
|
||||
}
|
||||
close(fd_checkra1n);
|
||||
ret = chmod(checkra1n_path, 0700);
|
||||
if (ret) {
|
||||
LOG(LOG_FATAL, "Cannot chmod %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||
unlink(checkra1n_path);
|
||||
free(checkra1n_path);
|
||||
checkra1n_path = NULL;
|
||||
return -1;
|
||||
ret = chmod(checkra1n_path, 0700);
|
||||
if (ret) {
|
||||
LOG(LOG_FATAL, "Cannot chmod %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||
unlink(checkra1n_path);
|
||||
free(checkra1n_path);
|
||||
checkra1n_path = NULL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#if defined(__APPLE__) && defined(__arm64__) && (TARGET_OS_IPHONE || defined(FORCE_HELPER))
|
||||
char* libcheckra1nhelper_dylib_path = NULL;
|
||||
@@ -146,7 +146,6 @@ setenv_ra1n:
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
checkra1n_exec: {};
|
||||
char args[0x10] = "-E";
|
||||
if ((palerain_flags & palerain_option_demote)) strncat(args, "d", 0xf);
|
||||
if (!(palerain_flags & palerain_option_checkrain_is_clone)) {
|
||||
@@ -168,21 +167,13 @@ checkra1n_exec: {};
|
||||
posix_spawn_file_actions_addopen(&action, 2, "/dev/null", O_WRONLY, 0);
|
||||
}
|
||||
#endif
|
||||
if (pongo_path != NULL) {
|
||||
ret = posix_spawn(&pid, checkra1n_path, &action, NULL, (char* []){
|
||||
checkra1n_path,
|
||||
args,
|
||||
"-k",
|
||||
pongo_path,
|
||||
NULL
|
||||
}, environ);
|
||||
} else {
|
||||
ret = posix_spawn(&pid, checkra1n_path, &action, NULL, (char* []){
|
||||
checkra1n_path,
|
||||
args,
|
||||
NULL
|
||||
}, environ);
|
||||
}
|
||||
ret = posix_spawn(&pid, checkra1n_path, &action, NULL, (char* []){
|
||||
checkra1n_path,
|
||||
args,
|
||||
"-k",
|
||||
pongo_path,
|
||||
NULL
|
||||
}, environ);
|
||||
posix_spawn_file_actions_destroy(&action);
|
||||
if (ret) {
|
||||
LOG(LOG_FATAL, "Cannot posix spawn %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||
|
||||
+2
-2
@@ -57,8 +57,8 @@ static struct option longopts[] = {
|
||||
#endif
|
||||
#ifdef TUI
|
||||
{"tui", no_argument, NULL, 't'},
|
||||
{"cli", no_argument, NULL, palerain_option_case_cli},
|
||||
#endif
|
||||
{"cli", no_argument, NULL, palerain_option_case_cli},
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
@@ -313,10 +313,10 @@ int optparse(int argc, char* argv[]) {
|
||||
case 't':
|
||||
palerain_flags |= palerain_option_tui;
|
||||
break;
|
||||
#endif
|
||||
case palerain_option_case_cli:
|
||||
palerain_flags |= palerain_option_cli;
|
||||
break;
|
||||
#endif
|
||||
#ifdef DEV_BUILD
|
||||
case '1':
|
||||
palerain_flags |= palerain_option_test1;
|
||||
|
||||
+2
-2
@@ -114,10 +114,10 @@ void *pongo_usb_callback(stuff_t *arg) {
|
||||
#ifdef ROOTFUL
|
||||
if ((palerain_flags & palerain_option_setup_partial_root)) {
|
||||
LOG(LOG_INFO, "Please wait up to 5 minutes for the bindfs to be created.");
|
||||
LOG(LOG_INFO, "Once the device boots up to iOS, run again without the -B (Create BindFS) option to jailbreak.");
|
||||
LOG(LOG_INFO, "Once the device reboots into recovery mode, run again without the -B (Create BindFS) option to jailbreak.");
|
||||
} else if ((palerain_flags & palerain_option_setup_rootful)) {
|
||||
LOG(LOG_INFO, "Please wait up to 10 minutes for the fakefs to be created.");
|
||||
LOG(LOG_INFO, "Once the device boots up to iOS, run again without the -c (Create FakeFS) option to jailbreak.");
|
||||
LOG(LOG_INFO, "Once the device reboots into recovery mode, run again without the -c (Create FakeFS) option to jailbreak.");
|
||||
}
|
||||
#endif
|
||||
if (dfuhelper_thr_running) {
|
||||
|
||||
+12
-4
@@ -86,7 +86,7 @@ void tui_screen_main_redraw(void) {
|
||||
PRINTATT(3, 2, "Welcome to palera1n!");
|
||||
|
||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||
PRINTATT(3, 9, "Made by: Nick Chan, Ploosh, Samara, Mineek");
|
||||
PRINTATT(3, 9, "Made by: Nick Chan, Ploosh, Khcrysalis, Mineek");
|
||||
PRINTATT(3, 10, "staturnz, kok3shidoll, ");
|
||||
if ((tui_mouse_y == tui_y_offset + 9 && tui_mouse_x >= tui_x_offset + 25 && tui_mouse_x <= tui_x_offset + 25 + 8) || easter_egg) {
|
||||
SETCOLORA(FG_BRIGHT_WHITE, BG_BLACK, BOLD);
|
||||
@@ -136,11 +136,19 @@ void tui_screen_main_redraw(void) {
|
||||
printf("Sorry, %s (iOS %s) is not supported.", tui_connected_devices->display_name, tui_connected_devices->version);
|
||||
ecid_y = 6;
|
||||
tui_can_start = false;
|
||||
} else if (tui_compare_versions(tui_connected_devices->version, "15.0") < 0 || tui_compare_versions(tui_connected_devices->version, "17.3.1") > 0) {
|
||||
} else if (tui_compare_versions(tui_connected_devices->version, "15.0") < 0) {
|
||||
printf("Sorry, %s is supported, but iOS", tui_connected_devices->display_name);
|
||||
MOVETOT(3, 6);
|
||||
printf("%s is not.", tui_connected_devices->version);
|
||||
PRINTATT(3, 7, "Supported versions are 15.0 - 17.3.1.");
|
||||
PRINTATT(3, 7, "Supported versions are 15.0+");
|
||||
ecid_y = 8;
|
||||
tui_can_start = false;
|
||||
} else if (tui_connected_devices->requires_passcode_disabled) {
|
||||
printf("Sorry, this devices passcode must be disabled on %s.", tui_connected_devices->version);
|
||||
MOVETOT(3, 6);
|
||||
printf("On 16.0+, you must reset the phone to factory settings");
|
||||
MOVETOT(3, 7);
|
||||
printf("and not have a passcode enabled ever since last restore.");
|
||||
ecid_y = 8;
|
||||
tui_can_start = false;
|
||||
} else {
|
||||
@@ -163,7 +171,7 @@ void tui_screen_main_redraw(void) {
|
||||
} else {
|
||||
PRINTATT(3, 6, "Press (E) to show ECID.");
|
||||
}
|
||||
PRINTATT(3, 7, "NOTE: Ensure installed iOS is in range 15.0 - 17.3.1!");
|
||||
PRINTATT(3, 7, "NOTE: Ensure installed iOS is in range 15.0+");
|
||||
tui_can_start = true;
|
||||
} else if (tui_connected_devices->mode == TUI_DEVICE_MODE_DFU) {
|
||||
MOVETOT(3, 5);
|
||||
|
||||
+39
-44
@@ -47,37 +47,34 @@ void tui_screen_options_nav(void) {
|
||||
extern bool easter_egg;
|
||||
|
||||
void tui_screen_options_options(void) {
|
||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||
SETCOLOR( FG_BRIGHT_BLACK, BG_BLACK);
|
||||
MOVETOT(3, 8);
|
||||
printf("[%c] %sAllow untested iOS/iPadOS versions" COLOR(FG_WHITE, BG_BLACK),
|
||||
tui_options_allow_untested ? 'x' : ' ',
|
||||
tui_options_nav_selection == 1 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
(
|
||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
||||
) && (tui_mouse_y == tui_y_offset + 7) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||
));
|
||||
tui_options_allow_untested ? ' ' : ' ',
|
||||
COLOR(FG_BLACK, FG_BRIGHT_BLACK));
|
||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||
MOVETOT(3, 9);
|
||||
printf("[%c] %sSafe Mode " COLOR(FG_WHITE, BG_BLACK),
|
||||
tui_options_safe_mode ? 'x' : ' ',
|
||||
tui_options_nav_selection == 2 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
tui_options_nav_selection == 1 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
(
|
||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
||||
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||
) && (tui_mouse_y == tui_y_offset + 8) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||
));
|
||||
MOVETOT(3, 10);
|
||||
printf("[%c] %sVerbose Boot " COLOR(FG_WHITE, BG_BLACK),
|
||||
tui_options_verbose_boot ? 'x' : ' ',
|
||||
tui_options_nav_selection == 3 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
tui_options_nav_selection == 2 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
(
|
||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
||||
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||
) && (tui_mouse_y == tui_y_offset + 9) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||
));
|
||||
MOVETOT(3, 11);
|
||||
printf("[%c] %sForce Revert " COLOR(FG_WHITE, BG_BLACK),
|
||||
tui_options_force_revert ? 'x' : ' ',
|
||||
tui_options_nav_selection == 4 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
tui_options_nav_selection == 3 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
(
|
||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
||||
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||
) && (tui_mouse_y == tui_y_offset + 10) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||
));
|
||||
if (supports_bright_colors) {
|
||||
@@ -89,9 +86,9 @@ void tui_screen_options_options(void) {
|
||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||
MOVETOT(7, 15);
|
||||
printf("%sBoot Arguments: " COLOR(FG_WHITE, BG_BLACK),
|
||||
tui_options_nav_selection == 5 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
tui_options_nav_selection == 4 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
(
|
||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
||||
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||
) && (
|
||||
tui_mouse_y == tui_y_offset + 14 || tui_mouse_y == tui_y_offset + 15
|
||||
) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||
@@ -102,9 +99,9 @@ void tui_screen_options_options(void) {
|
||||
MOVETOT(3, 17);
|
||||
printf("[%c] %s%s " COLOR(FG_WHITE, BG_BLACK),
|
||||
tui_options_flower_chain ? 'x' : ' ',
|
||||
tui_options_nav_selection == 6 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
tui_options_nav_selection == 5 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||
(
|
||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
||||
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||
) && (tui_mouse_y == tui_y_offset + 16) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||
), easter_egg ? "Neko Chain " : "Flower Chain");
|
||||
|
||||
@@ -174,7 +171,7 @@ tui_screen_t tui_screen_options(void) {
|
||||
case TUI_INPUT_DOWN:
|
||||
case TUI_INPUT_TAB:
|
||||
if (tui_options_is_editing_boot_args) break;
|
||||
if (++tui_options_nav_selection > 6) tui_options_nav_selection = 0;
|
||||
if (++tui_options_nav_selection > 5) tui_options_nav_selection = 0;
|
||||
tui_screen_options_nav();
|
||||
tui_screen_options_options();
|
||||
fflush(stdout);
|
||||
@@ -182,7 +179,7 @@ tui_screen_t tui_screen_options(void) {
|
||||
case TUI_INPUT_UP:
|
||||
case TUI_INPUT_TAB_BACK:
|
||||
if (tui_options_is_editing_boot_args) break;
|
||||
if (--tui_options_nav_selection < 0) tui_options_nav_selection = 6;
|
||||
if (--tui_options_nav_selection < 0) tui_options_nav_selection = 5;
|
||||
tui_screen_options_nav();
|
||||
tui_screen_options_options();
|
||||
fflush(stdout);
|
||||
@@ -200,23 +197,23 @@ tui_screen_t tui_screen_options(void) {
|
||||
switch(tui_options_nav_selection) {
|
||||
case 0:
|
||||
return MAIN_SCREEN;
|
||||
// case 1:
|
||||
// tui_options_allow_untested = !tui_options_allow_untested;
|
||||
// break;
|
||||
case 1:
|
||||
tui_options_allow_untested = !tui_options_allow_untested;
|
||||
break;
|
||||
case 2:
|
||||
tui_options_safe_mode = !tui_options_safe_mode;
|
||||
break;
|
||||
case 3:
|
||||
case 2:
|
||||
tui_options_verbose_boot = !tui_options_verbose_boot;
|
||||
break;
|
||||
case 4:
|
||||
case 3:
|
||||
tui_options_force_revert = !tui_options_force_revert;
|
||||
break;
|
||||
case 5:
|
||||
case 4:
|
||||
tui_options_is_editing_boot_args = !tui_options_is_editing_boot_args;
|
||||
tui_options_boot_args_cursor = tui_options_is_editing_boot_args ? strlen(tui_options_boot_args) : 0;
|
||||
break;
|
||||
case 6:
|
||||
case 5:
|
||||
tui_options_flower_chain = !tui_options_flower_chain;
|
||||
break;
|
||||
}
|
||||
@@ -240,8 +237,8 @@ tui_screen_t tui_screen_options(void) {
|
||||
|
||||
#define MOUSEDOWN_HANDLER(y, val) \
|
||||
if (tui_mouse_y == tui_y_offset + y && \
|
||||
tui_mouse_x >= tui_x_offset + 6 - 4 && \
|
||||
tui_mouse_x <= tui_x_offset + 6 + 34) { \
|
||||
tui_mouse_x >= tui_x_offset + 5 - 4 && \
|
||||
tui_mouse_x <= tui_x_offset + 5 + 34) { \
|
||||
tui_options_nav_selection = val; \
|
||||
tui_options_nav_mouse_select = val; \
|
||||
tui_screen_options_nav(); \
|
||||
@@ -250,15 +247,14 @@ tui_screen_t tui_screen_options(void) {
|
||||
}
|
||||
|
||||
if (!tui_options_is_editing_boot_args) {
|
||||
MOUSEDOWN_HANDLER(7, 1);
|
||||
MOUSEDOWN_HANDLER(8, 2);
|
||||
MOUSEDOWN_HANDLER(9, 3);
|
||||
MOUSEDOWN_HANDLER(10, 4);
|
||||
MOUSEDOWN_HANDLER(16, 6);
|
||||
MOUSEDOWN_HANDLER(8, 1);
|
||||
MOUSEDOWN_HANDLER(9, 2);
|
||||
MOUSEDOWN_HANDLER(10, 3);
|
||||
MOUSEDOWN_HANDLER(16, 5);
|
||||
}
|
||||
|
||||
MOUSEDOWN_HANDLER(14, 5);
|
||||
MOUSEDOWN_HANDLER(15, 5);
|
||||
MOUSEDOWN_HANDLER(14, 4);
|
||||
MOUSEDOWN_HANDLER(15, 4);
|
||||
|
||||
#undef MOUSEDOWN_HANDLER
|
||||
break;
|
||||
@@ -272,8 +268,8 @@ tui_screen_t tui_screen_options(void) {
|
||||
|
||||
#define MOUSEUP_HANDLER(y, val, option, e) \
|
||||
if (tui_mouse_y == tui_y_offset + y && \
|
||||
tui_mouse_x >= tui_x_offset + 6 - 4 && \
|
||||
tui_mouse_x <= tui_x_offset + 6 + 34 && \
|
||||
tui_mouse_x >= tui_x_offset + 5 - 4 && \
|
||||
tui_mouse_x <= tui_x_offset + 5 + 34 && \
|
||||
tui_options_nav_mouse_select == val) { \
|
||||
tui_options_##option = !tui_options_##option; \
|
||||
e \
|
||||
@@ -283,18 +279,17 @@ tui_screen_t tui_screen_options(void) {
|
||||
}
|
||||
|
||||
if (!tui_options_is_editing_boot_args) {
|
||||
MOUSEUP_HANDLER(7, 1, allow_untested, );
|
||||
MOUSEUP_HANDLER(8, 2, safe_mode, );
|
||||
MOUSEUP_HANDLER(9, 3, verbose_boot, );
|
||||
MOUSEUP_HANDLER(10, 4, force_revert, );
|
||||
MOUSEUP_HANDLER(16, 6, flower_chain, );
|
||||
MOUSEUP_HANDLER(8, 1, safe_mode, );
|
||||
MOUSEUP_HANDLER(9, 2, verbose_boot, );
|
||||
MOUSEUP_HANDLER(10, 3, force_revert, );
|
||||
MOUSEUP_HANDLER(16, 5, flower_chain, );
|
||||
}
|
||||
|
||||
#define BOOTARGS_HANDLER \
|
||||
tui_options_boot_args_cursor = tui_options_is_editing_boot_args ? strlen(tui_options_boot_args) : 0;
|
||||
|
||||
MOUSEUP_HANDLER(14, 5, is_editing_boot_args, BOOTARGS_HANDLER);
|
||||
MOUSEUP_HANDLER(15, 5, is_editing_boot_args, BOOTARGS_HANDLER);
|
||||
MOUSEUP_HANDLER(14, 4, is_editing_boot_args, BOOTARGS_HANDLER);
|
||||
MOUSEUP_HANDLER(15, 4, is_editing_boot_args, BOOTARGS_HANDLER);
|
||||
#undef MOUSEUP_HANDLER
|
||||
tui_options_nav_mouse_select = -1;
|
||||
break;
|
||||
|
||||
Reference in new issue
Block a user