mirror of
https://github.com/palera1n/palera1n.git
synced 2026-10-21 09:47:01 +02:00
a9 fix and a10 devicetree fix
This commit is contained in:
4 files changed
+29
-53
No files matched your search
@@ -5,3 +5,4 @@ binaries/Darwin/gaster
|
||||
work
|
||||
boot
|
||||
.irecovery
|
||||
BuildManifest.plist
|
||||
@@ -4,11 +4,11 @@ iOS 15.0-15.4.1 semi-tethered checkm8 "jailbreak"
|
||||
# What does this do?
|
||||
It boots the device with AMFI patches. Eventually, I want it to automatically install Pogo by Amy. For now, it has to be installed with TrollStore. You can get an IPA [here](https://nightly.link/elihwyma/Pogo/workflows/build/main/Pogo.zip).
|
||||
|
||||
**NOTE**: Linux and libimobiledevice don't play well together, and macOS is recommended for this script. If you only have access to a Linux machine, give it a try as it might still work.
|
||||
|
||||
**WARNING**: As of now, this is pretty unstable (atleast just on A11). On my A11 device, it has the deep sleep bug while booted with palera1n, and will kernel panic, or just not wake up until force rebooted, about a minute after being in sleep mode.
|
||||
|
||||
**WARNING 2**: ~~Some Linux users have their device freeze when it patches and converts the kernelcache. Since the file is so big, it seems like something with Linux isn't able to handle it. This shouldn't seem to be a fault with the script, but a fault with Linux/the patching tools.~~ This should be fixed.
|
||||
|
||||
**WARNING 3**: I am NOT responsible for any data loss. While nothing should happen, jailbreaking has risks in itself. If your device is stuck in recovery, please run `futurerestore --exit-recovery`, or use irecovery.
|
||||
**WARNING 2**: I am NOT responsible for any data loss. While nothing should happen, jailbreaking has risks in itself. If your device is stuck in recovery, please run `futurerestore --exit-recovery`, or use irecovery.
|
||||
|
||||
# How to use
|
||||
1. Install libimobiledevice
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = sys.argv
|
||||
if len(args) < 4:
|
||||
print("Usage: kernelcache_raw kernelcache_patched kc.bpatch")
|
||||
sys.exit(0)
|
||||
|
||||
patched = args[2]
|
||||
original = args[1]
|
||||
sizeP = os.path.getsize(patched)
|
||||
sizeO = os.path.getsize(original)
|
||||
|
||||
if sizeP != sizeO:
|
||||
print("size does not match, can't compare files! exiting...")
|
||||
sys.exit(1)
|
||||
|
||||
p = open(patched, "rb").read()
|
||||
o = open(original, "rb").read()
|
||||
|
||||
a = 0
|
||||
diff = []
|
||||
diffFile = open(args[3], 'w+')
|
||||
diffFile.write('#AMFI\n\n')
|
||||
for i in range(sizeO):
|
||||
originalByte = o[i]
|
||||
patchedByte = p[i]
|
||||
if originalByte != patchedByte:
|
||||
if a == 1e6:
|
||||
for d in diff:
|
||||
data = str(d[0]) + " " + (str(d[1])) + " " + (str(d[2]))
|
||||
diffFile.write(data + '\n')
|
||||
diff = []
|
||||
a = 0
|
||||
diff.append([hex(i), hex(originalByte), hex(patchedByte)])
|
||||
a += 1
|
||||
|
||||
for d in diff:
|
||||
data = str(d[0]) + " " + (str(d[1])) + " " + (str(d[2]))
|
||||
diffFile.write(data + '\n')
|
||||
+25
-7
@@ -44,6 +44,13 @@ if [ ! -e $dir/gaster ]; then
|
||||
rm -rf gaster gaster-$os.zip
|
||||
fi
|
||||
|
||||
# Check for pyimg4
|
||||
if ! python3 -c 'import pkgutil; exit(not pkgutil.find_loader("pyimg4"))'; then
|
||||
echo '[-] pyimg4 not installed. Press any key to install it, or press ctrl + c to cancel'
|
||||
read -n 1 -s
|
||||
python3 -m pip install pyimg4 > /dev/null
|
||||
fi
|
||||
|
||||
# Re-create work dir if it exists, else, make it
|
||||
if [ -e work ]; then
|
||||
rm -rf work
|
||||
@@ -59,7 +66,6 @@ echo "Written by Nebula | Some code by Nathan | Patching commands and ramdisk by
|
||||
echo ""
|
||||
|
||||
# Get device's iOS version from ideviceinfo if in normal mode
|
||||
echo "[*] Getting device version..."
|
||||
if [ "$2" = '--dfu' ]; then
|
||||
if [ -z "$3" ]; then
|
||||
echo "[-] When using --dfu, please pass the version you're device is on"
|
||||
@@ -90,6 +96,12 @@ else
|
||||
done
|
||||
fi
|
||||
version=$(ideviceinfo | grep "ProductVersion: " | sed 's/ProductVersion: //')
|
||||
arch=$(ideviceinfo | grep "CPUArchitecture: " | sed 's/CPUArchitecture: //')
|
||||
if [ ! "$arch" = "arm64" ]; then
|
||||
echo "[-] palera1n doesn't, and never will, work on non-checkm8 devices"
|
||||
exit
|
||||
fi
|
||||
echo "Hello, $(ideviceinfo | grep "ProductType: " | sed 's/ProductType: //') on $version!"
|
||||
fi
|
||||
|
||||
# Put device into recovery mode, and set auto-boot to true
|
||||
@@ -154,6 +166,7 @@ if [ ! "$2" = '--dfu' ]; then
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
echo "[*] Pwning device"
|
||||
$dir/gaster pwn > /dev/null
|
||||
sleep 1
|
||||
|
||||
@@ -175,13 +188,14 @@ if [ ! -e boot ]; then
|
||||
$dir/gaster decrypt "$(awk "/""$cpid""/{x=1}x&&/iBEC[.]/{print;exit}" BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1 | sed 's/Firmware[/]dfu[/]//')" iBEC.dec > /dev/null
|
||||
|
||||
echo "[*] Downloading DeviceTree"
|
||||
$dir/pzb -g "$(awk "/""$cpid""/{x=1}x&&/DeviceTree[.]/{print;exit}" BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" $ipswurl > /dev/null
|
||||
#$dir/pzb -g "$(awk "/""$cpid""/{x=1}x&&/DeviceTree[.]/{print;exit}" BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" $ipswurl > /dev/null
|
||||
$dir/pzb -g Firmware/all_flash/DeviceTree.$model.im4p $ipswurl > /dev/null
|
||||
|
||||
echo "[*] Downloading trustcache"
|
||||
if [ "$os" = 'Darwin' ]; then
|
||||
$dir/pzb -g "$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."StaticTrustCache"."Info"."Path" xml1 -o - BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1 | head -1)" $ipswurl > /dev/null
|
||||
$dir/pzb -g "$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."StaticTrustCache"."Info"."Path" xml1 -o - BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1 | head -1)" $ipswurl > /dev/null
|
||||
else
|
||||
$dir/pzb -g "$($dir/PlistBuddy BuildManifest.plist -c "Print BuildIdentities:0:Manifest:StaticTrustCache:Info:Path" | sed 's/"//g')" $ipswurl > /dev/null
|
||||
$dir/pzb -g "$($dir/PlistBuddy BuildManifest.plist -c "Print BuildIdentities:0:Manifest:StaticTrustCache:Info:Path" | sed 's/"//g')" $ipswurl > /dev/null
|
||||
fi
|
||||
|
||||
#if [[ "$@" == *"install"* ]]; then
|
||||
@@ -210,10 +224,14 @@ if [ ! -e boot ]; then
|
||||
#fi
|
||||
|
||||
echo "[*] Patching and converting kernelcache"
|
||||
$dir/img4 -i work/"$(awk "/""$model""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" -o work/kcache.raw > /dev/null
|
||||
#$dir/img4 -i work/"$(awk "/""$model""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" -o work/kcache.raw > /dev/null
|
||||
#$dir/Kernel64Patcher work/kcache.raw work/kcache.patched -a -o > /dev/null
|
||||
#python3 kerneldiff.py work/kcache.raw work/kcache.patched work/kc.bpatch > /dev/null
|
||||
#$dir/img4 -i work/"$(awk "/""$model""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" -o boot/kernelcache.img4 -M work/IM4M -T rkrn -P work/kc.bpatch `if [ "$os" = 'Linux' ]; then echo "-J"; fi` > /dev/null
|
||||
python3 -m pyimg4 im4p extract -i work/"$(awk "/""$model""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" -o work/kcache.raw `if [ "$deviceid" == *'iPhone8'* ]; then echo "--extra kpp.bin"; fi` > /dev/null
|
||||
$dir/Kernel64Patcher work/kcache.raw work/kcache.patched -a -o > /dev/null
|
||||
python3 kerneldiff.py work/kcache.raw work/kcache.patched work/kc.bpatch > /dev/null
|
||||
$dir/img4 -i work/"$(awk "/""$model""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1)" -o boot/kernelcache.img4 -M work/IM4M -T rkrn -P work/kc.bpatch `if [ "$os" = 'Linux' ]; then echo "-J"; fi` > /dev/null
|
||||
python3 -m pyimg4 im4p create -i work/kcache.patched -o work/krnlboot.im4p `if [ "$deviceid" == *'iPhone8'* ]; then echo "--extra kpp.bin"; fi` -f rkrn --lzss > /dev/null
|
||||
python3 -m pyimg4 img4 create -p work/krnlboot.im4p -o boot/kernelcache.img4 -m work/IM4M > /dev/null
|
||||
|
||||
echo "[*] Converting DeviceTree"
|
||||
$dir/img4 -i work/"$(awk "/""$model""/{x=1}x&&/DeviceTree[.]/{print;exit}" work/BuildManifest.plist | grep '<string>' | cut -d\> -f2 | cut -d\< -f1 | sed 's/Firmware[/]all_flash[/]//')" -o boot/devicetree.img4 -M work/IM4M -T rdtr > /dev/null
|
||||
|
||||
Reference in new issue
Block a user