From 20b96068dcc08731016e2494522b78bd87a059ed Mon Sep 17 00:00:00 2001 From: LukeZGD <26163116+LukeZGD@users.noreply.github.com> Date: Thu, 15 Feb 2024 20:29:49 +0800 Subject: [PATCH] Add SSH ramdisk support for A8, A9, A10 devices --- README.md | 11 +- resources/sshrd/IM4M10 | Bin 0 -> 6592 bytes resources/sshrd/{IM4M => IM4M7} | Bin resources/sshrd/IM4M8 | Bin 0 -> 5792 bytes resources/sshrd/IM4M9 | Bin 0 -> 6123 bytes resources/sshrd/iBEC.d10.RELEASE.im4p.patch | Bin 0 -> 315 bytes resources/sshrd/iBEC.d11.RELEASE.im4p.patch | Bin 0 -> 310 bytes resources/sshrd/iBEC.ipad5.RELEASE.im4p.patch | Bin 0 -> 358 bytes .../sshrd/iBEC.ipad5b.RELEASE.im4p.patch | Bin 0 -> 351 bytes resources/sshrd/iBEC.n102.RELEASE.im4p.patch | Bin 0 -> 323 bytes resources/sshrd/iBEC.n112.RELEASE.im4p.patch | Bin 0 -> 313 bytes resources/sshrd/iBEC.n56.RELEASE.im4p.patch | Bin 0 -> 365 bytes resources/sshrd/iBEC.n61.RELEASE.im4p.patch | Bin 0 -> 367 bytes resources/sshrd/iBEC.n66.RELEASE.im4p.patch | Bin 0 -> 317 bytes resources/sshrd/iBEC.n66m.RELEASE.im4p.patch | Bin 0 -> 310 bytes resources/sshrd/iBEC.n69.RELEASE.im4p.patch | Bin 0 -> 309 bytes resources/sshrd/iBEC.n69u.RELEASE.im4p.patch | Bin 0 -> 313 bytes resources/sshrd/iBEC.n71.RELEASE.im4p.patch | Bin 0 -> 314 bytes resources/sshrd/iBEC.n71m.RELEASE.im4p.patch | Bin 0 -> 312 bytes resources/sshrd/iBSS.d10.RELEASE.im4p.patch | Bin 0 -> 188 bytes resources/sshrd/iBSS.d11.RELEASE.im4p.patch | Bin 0 -> 188 bytes resources/sshrd/iBSS.ipad5.RELEASE.im4p.patch | Bin 0 -> 174 bytes .../sshrd/iBSS.ipad5b.RELEASE.im4p.patch | Bin 0 -> 174 bytes resources/sshrd/iBSS.n102.RELEASE.im4p.patch | Bin 0 -> 183 bytes resources/sshrd/iBSS.n112.RELEASE.im4p.patch | Bin 0 -> 189 bytes resources/sshrd/iBSS.n56.RELEASE.im4p.patch | Bin 0 -> 185 bytes resources/sshrd/iBSS.n61.RELEASE.im4p.patch | Bin 0 -> 185 bytes resources/sshrd/iBSS.n66.RELEASE.im4p.patch | Bin 0 -> 178 bytes resources/sshrd/iBSS.n66m.RELEASE.im4p.patch | Bin 0 -> 176 bytes resources/sshrd/iBSS.n69.RELEASE.im4p.patch | Bin 0 -> 175 bytes resources/sshrd/iBSS.n69u.RELEASE.im4p.patch | Bin 0 -> 173 bytes resources/sshrd/iBSS.n71.RELEASE.im4p.patch | Bin 0 -> 178 bytes resources/sshrd/iBSS.n71m.RELEASE.im4p.patch | Bin 0 -> 176 bytes .../sshrd/ios8/iBEC.j81.RELEASE.im4p.patch | Bin 0 -> 291 bytes .../sshrd/ios8/iBEC.j82.RELEASE.im4p.patch | Bin 0 -> 291 bytes .../sshrd/ios8/iBEC.n102.RELEASE.im4p.patch | Bin 0 -> 290 bytes .../sshrd/ios8/iBEC.n56.RELEASE.im4p.patch | Bin 0 -> 291 bytes .../sshrd/ios8/iBEC.n61.RELEASE.im4p.patch | Bin 0 -> 290 bytes .../sshrd/ios8/iBSS.j81.RELEASE.im4p.patch | Bin 0 -> 171 bytes .../sshrd/ios8/iBSS.j82.RELEASE.im4p.patch | Bin 0 -> 171 bytes .../sshrd/ios8/iBSS.n102.RELEASE.im4p.patch | Bin 0 -> 172 bytes .../sshrd/ios8/iBSS.n56.RELEASE.im4p.patch | Bin 0 -> 169 bytes .../sshrd/ios8/iBSS.n61.RELEASE.im4p.patch | Bin 0 -> 169 bytes .../sshrd/kernelcache.release.ipad5.bpatch | 13 +++ .../sshrd/kernelcache.release.ipad5b.bpatch | 13 +++ .../sshrd/kernelcache.release.iphone7.bpatch | 13 +++ .../sshrd/kernelcache.release.iphone8b.bpatch | 13 +++ .../sshrd/kernelcache.release.iphone9.bpatch | 13 +++ .../sshrd/kernelcache.release.n102.bpatch | 13 +++ .../sshrd/kernelcache.release.n112.bpatch | 13 +++ .../sshrd/kernelcache.release.n66.bpatch | 13 +++ .../sshrd/kernelcache.release.n71.bpatch | 13 +++ resources/sshrd/trollstore.sh | 10 ++ restore.sh | 110 +++++++++++++++--- 54 files changed, 228 insertions(+), 20 deletions(-) create mode 100644 resources/sshrd/IM4M10 rename resources/sshrd/{IM4M => IM4M7} (100%) create mode 100644 resources/sshrd/IM4M8 create mode 100644 resources/sshrd/IM4M9 create mode 100644 resources/sshrd/iBEC.d10.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.d11.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.ipad5.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.ipad5b.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n102.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n112.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n56.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n61.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n66.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n66m.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n69.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n69u.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n71.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBEC.n71m.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.d10.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.d11.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.ipad5.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.ipad5b.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n102.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n112.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n56.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n61.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n66.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n66m.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n69.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n69u.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n71.RELEASE.im4p.patch create mode 100644 resources/sshrd/iBSS.n71m.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBEC.j81.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBEC.j82.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBEC.n102.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBEC.n56.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBEC.n61.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBSS.j81.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBSS.j82.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBSS.n102.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBSS.n56.RELEASE.im4p.patch create mode 100644 resources/sshrd/ios8/iBSS.n61.RELEASE.im4p.patch create mode 100644 resources/sshrd/kernelcache.release.ipad5.bpatch create mode 100644 resources/sshrd/kernelcache.release.ipad5b.bpatch create mode 100644 resources/sshrd/kernelcache.release.iphone7.bpatch create mode 100644 resources/sshrd/kernelcache.release.iphone8b.bpatch create mode 100644 resources/sshrd/kernelcache.release.iphone9.bpatch create mode 100644 resources/sshrd/kernelcache.release.n102.bpatch create mode 100644 resources/sshrd/kernelcache.release.n112.bpatch create mode 100644 resources/sshrd/kernelcache.release.n66.bpatch create mode 100644 resources/sshrd/kernelcache.release.n71.bpatch create mode 100644 resources/sshrd/trollstore.sh diff --git a/README.md b/README.md index bacabeb..26adda5 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ - **Read the ["Troubleshooting" wiki page](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Troubleshooting) for tips, frequent questions, and troubleshooting** ## Features -- Legacy iOS Kit supports all 32-bit iOS devices, and some A7/A8 64-bit devices +- Legacy iOS Kit supports all 32-bit iOS devices, and some 64-bit (A7/A8/A9/A10) devices + - Devices that received iOS 16 and newer are not supported and only have limited functionality (such as sideload on Linux etc.) - Restore to signed OTA versions (iOS 8.4.1 and/or 6.1.3) on A5/A6 devices - Restore some 32-bit devices to other iOS versions without blobs - This includes downgrading iPhone 3GS, iPhone 4 GSM and CDMA, iPod touch 2, touch 3, iPad 1 @@ -25,10 +26,12 @@ - Save onboard and Cydia SHSH blobs for 32-bit devices - Save onboard SHSH blobs for jailbroken 64-bit devices (deverser) - Enter pwned iBSS/kDFU mode for supported 32-bit devices -- Boot SSH Ramdisk for 32-bit and A7 devices +- Boot SSH Ramdisk for supported 32-bit and 64-bit devices +- Save onboard SHSH blobs using SSH Ramdisk for the supported 64-bit devices +- Install [TrollStore](https://github.com/opa334/TrollStore) using SSH Ramdisk for the supported 64-bit devices on iOS 14/15 - Clear NVRAM for 32-bit devices - Device activation using ideviceactivation (useful for iOS 4 and lower) -- The latest baseband will be flashed for A5/A6 devices (iPhone 4S, 5, 5C, iPad 4, mini 1) +- The latest baseband will be flashed for A5/A6 devices (for iPhone 4S, 5, 5C, iPad 4, mini 1) - Dumping and stitching baseband to IPSW (requires `--disable-bbupdate`) - Dumping and stitching activation records to IPSW (requires `--activation-records`) @@ -158,6 +161,6 @@ - Some patches from [PwnageTool](https://www.theiphonewiki.com/wiki/PwnageTool), [sn0wbreeze](https://www.theiphonewiki.com/wiki/sn0wbreeze), [redsn0w](https://www.theiphonewiki.com/wiki/redsn0w) - Some patches made using patchers from [Bundle-Creation](https://github.com/Merculous/Bundle-Creation) - SSH Ramdisk tars from [SSH-Ramdisk-Maker-and-Loader](https://github.com/Ralph0045/SSH-Ramdisk-Maker-and-Loader) and [msftguy's ssh-rd](https://github.com/msftguy/ssh-rd) -- A7 SSH Ramdisk stuff is based on [SSHRD_Script](https://github.com/verygenericname/SSHRD_Script) (iOS 12) and [iarchive.app](https://ios7.iarchive.app/downgrade/making-ramdisk.html) (iOS 8) +- 64-bit SSH Ramdisk stuff is based on [SSHRD_Script](https://github.com/verygenericname/SSHRD_Script) (iOS 12+) and [iarchive.app](https://ios7.iarchive.app/downgrade/making-ramdisk.html) (iOS 8) - [img4lib](https://github.com/xerub/img4lib) - xerub - [img4tool](https://github.com/tihmstar/img4tool) - tihmstar diff --git a/resources/sshrd/IM4M10 b/resources/sshrd/IM4M10 new file mode 100644 index 0000000000000000000000000000000000000000..be571b0eaa817146994d718a018bb0ee2e221456 GIT binary patch literal 6592 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 literal 0 HcmV?d00001 diff --git a/resources/sshrd/IM4M b/resources/sshrd/IM4M7 similarity index 100% rename from resources/sshrd/IM4M rename to resources/sshrd/IM4M7 diff --git a/resources/sshrd/IM4M8 b/resources/sshrd/IM4M8 new file mode 100644 index 0000000000000000000000000000000000000000..9b712a1a38be79990860847d7c25650232d6a8e1 GIT binary patch literal 5792 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 P_`Yt7Nu@LAOoRUc#D%BE literal 0 HcmV?d00001 diff --git a/resources/sshrd/IM4M9 b/resources/sshrd/IM4M9 new file mode 100644 index 0000000000000000000000000000000000000000..dcfbea5e9b39d7989cf434269a21e7633d152fe1 GIT binary patch literal 6123 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 literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBEC.d10.RELEASE.im4p.patch b/resources/sshrd/iBEC.d10.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..7f7bec48c887b75950e720acd461ee061ffe5b7a GIT binary patch literal 315 zcmZH;s zk`6EkGAOVJWUvS|I5-G+88GZrTr$~l0<*u1*#cfExn(}Hs@#_aJcBxi!BwlLhjSSN zQ|4p_rlh3g{Tz1czf^9xI&I+)RSd~+Xz*@~3eafqYIJ1J;cAGQ!=SZZ!bM0)Rgz<& zaqVR#;iE4@dpuOS;>s2sv|HwE6uJofUZpjpFy2`sIPDDUM=1bDD?2`SOS2NdKe*OGqPnr7`8%x2{e?Bbu kA-ik=1CwgaHCyhTN^>+kG~Bi?Z2);nyvWreU;@ZV0HjxAo&W#< literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBEC.ipad5.RELEASE.im4p.patch b/resources/sshrd/iBEC.ipad5.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..6db0df0529eb87f763938a4af7bf811ba1efa698 GIT binary patch literal 358 zcmZC3=9ek z4h{?~3=A9!42nx6rIL8LQjVN3GC2Ei-3kt|AJ&OH{WkOc#DhPUs|2@l@@DCJCLl~( zk@eh^fnj2O{T%_9#sf(Vj%o}Hj7=;_K$2kr3qytrV}nDJfR_Tpq_!0o7cekLnN;-} zGHC`}FyRlJxNw0K^Oe7^MW5R+%t~}jWth||E~7LrF_f)?f%Pc^NB6cVtfKw`T3k!7 z&(xbF^to%h%!K(GoV=Qj8WJ_+F=tnnB^3eVQJ_XsTLgh@*$Tn1B0ZWS9Jyx13Lr51P2BN z77hjl218#XLqkKh2`4VA&C2LF_v|JMmz9!_t=G3jTXwJS-l;T4!=vOwD`x}3C==%c z=?n}r>+A1KaA7#`h`~{ffq}6>B?(A6D6%kQusAd%GzfSpFidJ&Vj{)BaDlCdLurb$ zFHf%&n*xLJ|2>35L-tD&jW<>9=jz) zGBAiqHaIYqFqyYcKcK)6uz*=`*(?)-8@SuSMg98H-0|TP~ zg93w+A)6D=jOGkJ!xhiFcPh=%@QB$y->3nh@5K6l3mF*Z|Nr|&z=7d`Qi*dA11saS zL*fUL7#JBH6<8QwxVQueoZG;#Q*o)kl9Uv~5e8cYvt{!pUt;fMH(>B#U^xJE38Tmg zmdnCy6Al^p%t|!yVUqgo=@<0FflDk=U?W37tKhFz2hIy!49^<^YZXIXbS?=ph}>n~ zBp@g#ptz`5ImlV{@^#UWyFx8FPnz#fdh*fo-{q*FAnhMZ3?8`#_Ley9Hmt7tQs8#o zVbz^Gscr2tmFd^odlb!|8LgZj5-OBlf75>d(K{3UL{yBl|F3WWc}~2@)goX5D2xDa CWo@7U literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBEC.n112.RELEASE.im4p.patch b/resources/sshrd/iBEC.n112.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..d6c20ae9cd0a5154469e1a41609710d201d00184 GIT binary patch literal 313 zcmZd+yc49&Q~sQ} zI=v@d1q&5UE_aJTnEh?L@LdLmn*aab08M`+oz(y@Z8uz`uAHT=42sg=z2C(9>UuX|mn#(XQ`gzL6V(^4xw-LLpxxpC2!ld)a9 z12`I#1iIEGz4KVkB_wz4QS}0ZLxWd}-)CUpm27ZeDq#|9ntuT3aUZo=%sx(S&1$oZ jsyYJ7E>8U>#c@B!U84*1_uTP z0S5*aAY^h-U@&yJ?5wP&FxCIcm8w}LCYP(0WOaR%Svi4G+56FtO*a<*+81o7e7bsf zo!*nKf`tl(Vpp;dW}mcRHfCU``Tze7(8LEy430qzEQ}2v3@k|u42%v6EDRYg4h<{; z0p}DLCUJVrUunW{AtmMVMO&ZdlUp5yRxo5R107@bC&I4xhC-Xfwg*Z%4U29zX|UZ; zV%WLq8p}QI9mI+W#^PsY?Jox%&9k@oaE?J?B*4Jv*?S%et!FetiUNJ z=l-0#fW<+Oz^684Q6Z=wC-~1OZae=qHwa~_L4c9n~&a^=qI8g9`kMG0ffGX{Evb9PW}IX%Fu=3Kv9XaIs*gav^Mht zX+WAqk%b{cgrUQMLBPv^VJEYv+bk*OD;ZyH-5jbMPJERzxqRi@iUgo_CP2)fG?js2 zhG4@?0|o|Pxu-5Sw1OrmEM4KSnPFv+h}#{8#v}#-wL=RQ?qUhBTdCEhd`-kfAyg^V zT}5_c)J&DvJ5N7Tc-bs|c3OC&?v;OET%X+x=sF~FpL6NPpu*i(*JpM5o4lLv&BDgF r{+uCi!{@qMfr$bv9D>K}yLT$h(eNl}|9H6p|_p#sIbv6c@ljqOBVlSZfN6u@eTU2D-q^_3Q5Uvd~;$k)|5)DoEkTE^( mDSK-k8^eJE5?i=k?@aU)QPH^Xv(*9QCGjFxi+~9r*8l*{>t03x literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBEC.n69.RELEASE.im4p.patch b/resources/sshrd/iBEC.n69.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..fa963d9df43f6dbf24cc56ae3b66fada4a760ea1 GIT binary patch literal 309 zcmZvk76B7L&H(_gZ(@f4 literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBEC.n71.RELEASE.im4p.patch b/resources/sshrd/iBEC.n71.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..8766386afac96564edda75a65ecca72a3500452e GIT binary patch literal 314 zcmZ+GIU`$kW}LA#=yXMt!?^& zGzJAm7DX0@3=xJ7Auj`loy?vrnTs7KF1~Vtcg2OvS5CgNRrn+UbOkTSB^*lwCo>u_ zFeN20_^8RHxU5)c|G?4ff?^m;@H;{G6o$qi1_4!v1q-*a1n8a*6mkE>=;EkzXVIkc zN%@l&Wo>oz(mf@hVQXSlvAJSq=PGG&hW8o8D_?JN4e#`w>RW&Fp|!Luo6n!aYq|e^ oZT!yu&GfAri-UlIZ%>Tgldgh=3OUc~w}Jd5UgT;KFahKs0K@WXvH$=8 literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBEC.n71m.RELEASE.im4p.patch b/resources/sshrd/iBEC.n71m.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..c3a7f0ad7dbedc125bbc605a1ac3ebcb989494a1 GIT binary patch literal 312 zcmZMJld9}cf^zNNXb2L2UQ@^cYKLRlRfDbLtITCtnJ>+*@~|~901*&$g-RL- zGcfotFfb*zuPl(?V%H$Do=J2etHz!H7 z6c_@QF);Xs1YcsC7i>M{n$SwC_ax@W-3qTUT6Xx#m*iX^6oM?t2RrKn9B! LxmpBF067i-kWx0r literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBSS.d11.RELEASE.im4p.patch b/resources/sshrd/iBSS.d11.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..987b88ab4c3f3b70013c539f3de444480f90965a GIT binary patch literal 188 zcmZ!H7 z6c_@QF);Xs1YcsC7i>M{n$SwC_ax@W-3qTUT6Xx#m*iX^6oM?t2RrKn9B! LxmpBF067i-kWx0r literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBSS.ipad5.RELEASE.im4p.patch b/resources/sshrd/iBSS.ipad5.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..55fea60e7195125b5259c4fbd901636cbd6bcd51 GIT binary patch literal 174 zcmZCTs49D%9&92D8-l$4XfAO`W-p%y+h>u?wv|=G(7k;{mdFbMu``>S_DjB00IES Cc``Eq literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBSS.ipad5b.RELEASE.im4p.patch b/resources/sshrd/iBSS.ipad5b.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..fa7eb956da82beb0bf21b716cf806f5f9488f70a GIT binary patch literal 174 zcmZfB+vT-SCSE%yNp#urzdxR11#m(%^ApU|@f6;DQ2!00WBy1A~A9 zgCP&Yp(KUQH*YH{c2Ckg)Y1~@kYs?+6WYJGo`K=Pt%nB~fa)E9n2Cjfg&~1~!ApT5 zpm9M4#}bCGDh#YonO3B8tXhy2eZ}*3)2c}|u_r|yIyr{fefSRS-c@9r6Sn7J#JW6}j;rC1-gzwN5|aD9P5c4K ORPiELi+~9XKmY)-V>N65 literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBSS.n112.RELEASE.im4p.patch b/resources/sshrd/iBSS.n112.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..c3cb4bb684b635233b1390c06cd701200f1e3780 GIT binary patch literal 189 zcmZE72V^87ab7VOr7`NU|_U}_c*}d`&O@U@it{(nH1m;F_$;s{Wk`X Ox#C5x76B7Lt^)us-7>-e literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBSS.n56.RELEASE.im4p.patch b/resources/sshrd/iBSS.n56.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..ea65c8cef41dd48e44f5ac152467abc72efd675e GIT binary patch literal 185 zcmZfPio)ec%uinB^3eVQJ_XsTLf$um7n$0|UE*Yk`6bLjVJVfC7V( z$pu>{o*A9F3Wc-e^qzDTEL5zOKV^r|6Ev-00RzL$TJ-}!!yYg&I5;q{urRPVFfcGN zI57ArFa#`P;9Stv`HF4ESD#Eq_uCo@B3b{=liV?5VfPio)ec%uinB^3eVQJ_XsTLf$um7n$0|UE*Yk`6bLjVJVfC7V( z$pu>{o*A9F3Wc-e^qzDTEL5zOKV^r|6Ev-00RzL$TJ-}!!yYg&I5;q{urRPVFfcGN zI57ArFa#`P;9Stv`HF4ESD#Eq_uCo@B3b{=liV?5VeYD^@@+)ndm2?BKd!Z5CcNnr2NA>7#NwNHXdMrXk%bvU|~>5U|{f4 zU*gZ+}P)jq{BKZu2E>@BJDGZFvw^|PX)iXF8U|?VpU`SwK@KRt1 zXk3uNu|#lo&{HJ_nWZ7JFIYqTpK-6OJ*CjC-g;-EpNI;htMpR_kXhnIt`-3kKn?-` D9#<{W literal 0 HcmV?d00001 diff --git a/resources/sshrd/iBSS.n69.RELEASE.im4p.patch b/resources/sshrd/iBSS.n69.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..9178ecebfa96a68abaec6a4f53f00af16452dfd8 GIT binary patch literal 175 zcmZY|oJ&aZomplBLeuKPheZsG47Vm8U~phyaByH@U}8{6U|{f4 zUeYD^@@+)ndm2?BKd!Z5CcNnr2NA>7#NwNHXdMrXk%bvU|~>5U|{f4 zU*gZ+}P)jq{BKZu2E>@BJDGZFvw^|PX)iXF8U|?VpU`SwK@KRt1 zXk3uNu|#lo&{HJ_nWZ7JFIYqTpK-6OJ*CjC-g;-EpNI;htMpR_kXhnIt`-3kKn?-` D9#<{W literal 0 HcmV?d00001 diff --git a/resources/sshrd/ios8/iBEC.j81.RELEASE.im4p.patch b/resources/sshrd/ios8/iBEC.j81.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..36e14d17c70d02b34b335953110626106fd3de32 GIT binary patch literal 291 zcmZm&9H$J%yNp#urzdxR11z&Ox@DPz#v?nP^rP-#OT1m#GoL+ z;K0BjpunKG$izhAibm!#2FV3Qe-ANC+9VSE?w(R-t?9mdxeK)oEE7EByLT$h(eOy#Fmp-+!ZMX_x}O*r zSZ6mlFeNZCFzi>K>!84(q`66rr{PPhlo4C6k%_~~pT-P90l9nSMb9WmM2N)QT2Rjo LHcO~l>?Z>NTFF)= literal 0 HcmV?d00001 diff --git a/resources/sshrd/ios8/iBEC.j82.RELEASE.im4p.patch b/resources/sshrd/ios8/iBEC.j82.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..36e14d17c70d02b34b335953110626106fd3de32 GIT binary patch literal 291 zcmZm&9H$J%yNp#urzdxR11z&Ox@DPz#v?nP^rP-#OT1m#GoL+ z;K0BjpunKG$izhAibm!#2FV3Qe-ANC+9VSE?w(R-t?9mdxeK)oEE7EByLT$h(eOy#Fmp-+!ZMX_x}O*r zSZ6mlFeNZCFzi>K>!84(q`66rr{PPhlo4C6k%_~~pT-P90l9nSMb9WmM2N)QT2Rjo LHcO~l>?Z>NTFF)= literal 0 HcmV?d00001 diff --git a/resources/sshrd/ios8/iBEC.n102.RELEASE.im4p.patch b/resources/sshrd/ios8/iBEC.n102.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..a0c7cd6d6880514c53ee41284205beca193ef964 GIT binary patch literal 290 zcmZS@W-1`eIhXq8Jp-df z-S-Pl4h#%R42(_;42%p84h$R&N-Qn{3<69X3>*p!Ax52(eS~>USb`cZoH)T!vnrjV zWg#oW8jck@n^+iJZkv93S@!V6`Kty`U1L9AU}OOCBNK;}KaClJ0&@4ti=I)Ch!BapwV3knm}yzYh>bg>ugp zWni@b6@SA8Xn+y}BLmRH1Q7;?VGcTc@^J35>H^;wv14!kT*RQzky1u4bqAq^n?|LZb105rj$Cle?EQ zFxvkszu*EiL5Y!(frWt)$YOY);v%5H!ob16p}-Jg)a%o0$ip8Z=*7!x$RPSN{8NA#n29?Q9em{h9vJ0P^k?%n^5f#GtM$N>iih6W`L1_nk278U^p4h4n~ zhYKbwA(A}PG?Xn^gG#s*Hg>(s-d@hc)ZV>QX^w^m-@W_489*k97r9ylOaQqB0M&9U AvH$=8 literal 0 HcmV?d00001 diff --git a/resources/sshrd/ios8/iBSS.j82.RELEASE.im4p.patch b/resources/sshrd/ios8/iBSS.j82.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..ac363ffff0991a1b788ad229c40706012a24802a GIT binary patch literal 171 zcmZ{8NA#n29?Q9em{h9vJ0P^k?%n^5f#GtM$N>iih6W`L1_nk278U^p4h4n~ zhYKbwA(A}PG?Xn^gG#s*Hg>(s-d@hc)ZV>QX^w^m-@W_489*k97r9ylOaQqB0M&9U AvH$=8 literal 0 HcmV?d00001 diff --git a/resources/sshrd/ios8/iBSS.n102.RELEASE.im4p.patch b/resources/sshrd/ios8/iBSS.n102.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..43a36705611119434626514f7b01a618ef50da39 GIT binary patch literal 172 zcmZC>PhHeLhuJ+1yTLy+R!D0s-7?c{8NA#n29?Q9e#OLR^DIl~2T}%;YV7MG6a=@WMiGzWGQGta;fPq7SA;jT= x2}_71&om8X3)Y|#E`^O<@3Oa-GcmPy?^K$j;h~waiMs)0j(Cx)MZg4*O8{kxDct}7 literal 0 HcmV?d00001 diff --git a/resources/sshrd/ios8/iBSS.n61.RELEASE.im4p.patch b/resources/sshrd/ios8/iBSS.n61.RELEASE.im4p.patch new file mode 100644 index 0000000000000000000000000000000000000000..b733b87e6f90ccb89ef642fe5aa51024f1c22dc3 GIT binary patch literal 169 zcmZ{8NA#n29?Q9e#OLR^DIl~2T}%;YV7MG6a=@WMiGzWGQGta;fPq7SA;jT= x2}_71&om8X3)Y|#E`^O<@3Oa-GcmPy?^K$j;h~waiMs)0j(Cx)MZg4*O8{kxDct}7 literal 0 HcmV?d00001 diff --git a/resources/sshrd/kernelcache.release.ipad5.bpatch b/resources/sshrd/kernelcache.release.ipad5.bpatch new file mode 100644 index 0000000..89214f3 --- /dev/null +++ b/resources/sshrd/kernelcache.release.ipad5.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x231db0 0xffffffff 0x20 +0x231db1 0xffffff83 0x20 +0x231db2 0x0 0xffffff80 +0x231db3 0xffffffd1 0xffffffd2 +0x231db4 0xfffffffd 0xffffffc0 +0x231db5 0x7b 0x3 +0x231db6 0x1 0x5f +0x231db7 0xffffffa9 0xffffffd6 +0xb76412 0x63 0x78 +0xe30f19 0x8 0x0 +0xe30f1b 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.ipad5b.bpatch b/resources/sshrd/kernelcache.release.ipad5b.bpatch new file mode 100644 index 0000000..d586889 --- /dev/null +++ b/resources/sshrd/kernelcache.release.ipad5b.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x231db0 0xffffffff 0x20 +0x231db1 0xffffff83 0x20 +0x231db2 0x0 0xffffff80 +0x231db3 0xffffffd1 0xffffffd2 +0x231db4 0xfffffffd 0xffffffc0 +0x231db5 0x7b 0x3 +0x231db6 0x1 0x5f +0x231db7 0xffffffa9 0xffffffd6 +0xb67852 0x63 0x78 +0xe2cf19 0x8 0x0 +0xe2cf1b 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.iphone7.bpatch b/resources/sshrd/kernelcache.release.iphone7.bpatch new file mode 100644 index 0000000..727b4ea --- /dev/null +++ b/resources/sshrd/kernelcache.release.iphone7.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x21e918 0x63 0x78 +0x8304d4 0xffffffff 0x20 +0x8304d5 0xffffffc3 0x20 +0x8304d6 0x0 0xffffff80 +0x8304d7 0xffffffd1 0xffffffd2 +0x8304d8 0xfffffff4 0xffffffc0 +0x8304d9 0x4f 0x3 +0x8304da 0x1 0x5f +0x8304db 0xffffffa9 0xffffffd6 +0xe98359 0x8 0x0 +0xe9835b 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.iphone8b.bpatch b/resources/sshrd/kernelcache.release.iphone8b.bpatch new file mode 100644 index 0000000..fb88112 --- /dev/null +++ b/resources/sshrd/kernelcache.release.iphone8b.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x24b38c 0xffffffff 0x20 +0x24b38d 0xffffff83 0x20 +0x24b38e 0x0 0xffffff80 +0x24b38f 0xffffffd1 0xffffffd2 +0x24b390 0xfffffffd 0xffffffc0 +0x24b391 0x7b 0x3 +0x24b392 0x1 0x5f +0x24b393 0xffffffa9 0xffffffd6 +0xbcc8d2 0x63 0x78 +0xe8ef19 0x8 0x0 +0xe8ef1b 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.iphone9.bpatch b/resources/sshrd/kernelcache.release.iphone9.bpatch new file mode 100644 index 0000000..f066d67 --- /dev/null +++ b/resources/sshrd/kernelcache.release.iphone9.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x289724 0xffffffff 0x20 +0x289725 0xffffff83 0x20 +0x289726 0x0 0xffffff80 +0x289727 0xffffffd1 0xffffffd2 +0x289728 0xfffffffd 0xffffffc0 +0x289729 0x7b 0x3 +0x28972a 0x1 0x5f +0x28972b 0xffffffa9 0xffffffd6 +0xbc54ee 0x63 0x78 +0xf78f35 0x8 0x0 +0xf78f37 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.n102.bpatch b/resources/sshrd/kernelcache.release.n102.bpatch new file mode 100644 index 0000000..96487b2 --- /dev/null +++ b/resources/sshrd/kernelcache.release.n102.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x21d768 0x63 0x78 +0x8104d4 0xffffffff 0x20 +0x8104d5 0xffffffc3 0x20 +0x8104d6 0x0 0xffffff80 +0x8104d7 0xffffffd1 0xffffffd2 +0x8104d8 0xfffffff4 0xffffffc0 +0x8104d9 0x4f 0x3 +0x8104da 0x1 0x5f +0x8104db 0xffffffa9 0xffffffd6 +0xe78309 0x8 0x0 +0xe7830b 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.n112.bpatch b/resources/sshrd/kernelcache.release.n112.bpatch new file mode 100644 index 0000000..6ae5e76 --- /dev/null +++ b/resources/sshrd/kernelcache.release.n112.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x289724 0xffffffff 0x20 +0x289725 0xffffff83 0x20 +0x289726 0x0 0xffffff80 +0x289727 0xffffffd1 0xffffffd2 +0x289728 0xfffffffd 0xffffffc0 +0x289729 0x7b 0x3 +0x28972a 0x1 0x5f +0x28972b 0xffffffa9 0xffffffd6 +0xb96e6e 0x63 0x78 +0xf26f35 0x8 0x0 +0xf26f37 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.n66.bpatch b/resources/sshrd/kernelcache.release.n66.bpatch new file mode 100644 index 0000000..42a1d99 --- /dev/null +++ b/resources/sshrd/kernelcache.release.n66.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x24b38c 0xffffffff 0x20 +0x24b38d 0xffffff83 0x20 +0x24b38e 0x0 0xffffff80 +0x24b38f 0xffffffd1 0xffffffd2 +0x24b390 0xfffffffd 0xffffffc0 +0x24b391 0x7b 0x3 +0x24b392 0x1 0x5f +0x24b393 0xffffffa9 0xffffffd6 +0xbbfc12 0x63 0x78 +0xe96f19 0x8 0x0 +0xe96f1b 0x71 0x6b diff --git a/resources/sshrd/kernelcache.release.n71.bpatch b/resources/sshrd/kernelcache.release.n71.bpatch new file mode 100644 index 0000000..42a1d99 --- /dev/null +++ b/resources/sshrd/kernelcache.release.n71.bpatch @@ -0,0 +1,13 @@ +#AMFI + +0x24b38c 0xffffffff 0x20 +0x24b38d 0xffffff83 0x20 +0x24b38e 0x0 0xffffff80 +0x24b38f 0xffffffd1 0xffffffd2 +0x24b390 0xfffffffd 0xffffffc0 +0x24b391 0x7b 0x3 +0x24b392 0x1 0x5f +0x24b393 0xffffffa9 0xffffffd6 +0xbbfc12 0x63 0x78 +0xe96f19 0x8 0x0 +0xe96f1b 0x71 0x6b diff --git a/resources/sshrd/trollstore.sh b/resources/sshrd/trollstore.sh new file mode 100644 index 0000000..e1259e1 --- /dev/null +++ b/resources/sshrd/trollstore.sh @@ -0,0 +1,10 @@ +#!/bin/bash +app=$(find /mnt2/containers/Bundle/Application/ -name "Tips.app") +if [[ ! -e ${app}/Tips_TROLLSTORE_BACKUP ]]; then + mv ${app}/Tips ${app}/Tips_TROLLSTORE_BACKUP + mv ${app}/PersistenceHelper_Embedded ${app}/Tips + /usr/sbin/chown 33 ${app}/Tips + chmod 755 ${app}/Tips ${app}/trollstorehelper + /usr/sbin/chown 0 ${app}/trollstorehelper + touch ${app}/.TrollStorePersistenceHelper +fi diff --git a/restore.sh b/restore.sh index 158391a..167d4f2 100755 --- a/restore.sh +++ b/restore.sh @@ -3739,7 +3739,9 @@ restore_prepare_1033() { device_enter_mode pwnDFU local attempt=1 - $irecovery -f $iBSS.im4p + if [[ $device_proc == 7 ]]; then + $gaster reset + fi sleep 1 while (( attempt <= 5 )); do log "Entering pwnREC mode... (Attempt $attempt of 5)" @@ -3748,7 +3750,7 @@ restore_prepare_1033() { sleep 1 log "Sending iBEC..." $irecovery -f $iBEC.im4p - sleep 5 + sleep 3 device_find_mode Recovery 1 if [[ $? == 0 ]]; then break @@ -3756,6 +3758,10 @@ restore_prepare_1033() { print "* You may also try to unplug and replug your device" ((attempt++)) done + if [[ $device_proc == 10 ]]; then + $irecovery -c "go" + sleep 3 + fi if (( attempt > 5 )); then error "Failed to enter pwnREC mode. You might have to force restart your device and start over entering pwnDFU mode again" @@ -4026,23 +4032,34 @@ device_ramdisk64() { local path local url local decrypt - local build_id="16A366" local ios8 local opt + local build_id="16A366" + if (( device_proc >= 9 )) || [[ $device_type == "iPad5"* ]]; then + build_id="18C66" + fi - print "* Version Selection" - print "* The version of the SSH Ramdisk is set to iOS 12 by default." - print "* There is also an option to use iOS 8 ramdisk. Select N to fix devices on iOS 7 or 8 not booting after using iOS 12 ramdisk." - print "* If not sure, just press Enter/Return. This will select the default version." - read -p "$(input "Select Y to use iOS 12, select N to use iOS 8 (Y/n) ")" opt - if [[ $opt == 'n' || $opt == 'N' ]]; then - ios8=1 + if (( device_proc <= 8 )) && [[ $device_type != "iPad5,1" && $device_type != "iPad5,2" ]]; then + local ver="12" + if [[ $device_type == "iPad5"* ]]; then + ver="14" + fi + print "* Version Selection" + print "* The version of the SSH Ramdisk is set to iOS $ver by default." + print "* There is also an option to use iOS 8 ramdisk. Select N to fix devices on iOS 7 or 8 not booting after using iOS $ver ramdisk." + print "* If not sure, just press Enter/Return. This will select the default version." + read -p "$(input "Select Y to use iOS $ver, select N to use iOS 8 (Y/n) ")" opt + if [[ $opt == 'n' || $opt == 'N' ]]; then + ios8=1 + fi fi if [[ $ios8 == 1 ]]; then build_id="12B410" if [[ $device_type == "iPhone"* ]]; then build_id="12B411" + elif [[ $device_type == "iPod7,1" ]]; then + build_id="12H321" fi sshtar="../saved/iram.tar" if [[ ! -e $sshtar ]]; then @@ -4070,6 +4087,11 @@ device_ramdisk64() { name=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | .filename') iv=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | .iv') key=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | .key') + if [[ $device_type == "iPhone8"* && $getcomp == "iB"* ]]; then + name=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | select(.filename | startswith("'$getcomp'.'$device_model'.")) | .filename') + iv=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | select(.filename | startswith("'$getcomp'.'$device_model'.")) | .iv') + key=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | select(.filename | startswith("'$getcomp'.'$device_model'.")) | .key') + fi case $getcomp in "iBSS" | "iBEC" ) path="Firmware/dfu/";; "DeviceTree" ) path="Firmware/all_flash/";; @@ -4083,9 +4105,16 @@ device_ramdisk64() { local hwmodel case $device_type in iPhone6* ) hwmodel="iphone6";; + iPhone7* ) hwmodel="iphone7";; + iPhone8,4 ) hwmodel="iphone8b";; + iPhone8* ) hwmodel="iphone8";; + iPhone9* ) hwmodel="iphone9";; iPad4,[123] ) hwmodel="ipad4";; iPad4,[456] ) hwmodel="ipad4b";; iPad4,[789] ) hwmodel="ipad4bm";; + iPad5,[12] ) hwmodel="ipad5";; + iPad5,[34] ) hwmodel="ipad5b";; + * ) hwmodel="$device_model";; esac case $getcomp in "iBSS" | "iBEC" ) name="$getcomp.$hwmodel.RELEASE.im4p";; @@ -4094,6 +4123,15 @@ device_ramdisk64() { "Trustcache" ) name="048-08497-242.dmg.trustcache";; "RestoreRamdisk" ) name="048-08497-242.dmg";; esac + if [[ $device_type == "iPhone8,1" || $device_type == "iPhone8,2" ]] && [[ $getcomp == "Kernelcache" ]]; then + name="kernelcache.release.$device_model" + fi + if (( device_proc >= 9 )) || [[ $device_type == "iPad5"* && $ios8 != 1 ]]; then + case $getcomp in + "Trustcache" ) name="038-83284-083.dmg.trustcache";; + "RestoreRamdisk" ) name="038-83284-083.dmg";; + esac + fi fi log "$getcomp" @@ -4104,7 +4142,7 @@ device_ramdisk64() { cp $name $ramdisk_path/ fi mv $name $getcomp.orig - local reco="-i $getcomp.orig -o $getcomp.img4 -M ../resources/sshrd/IM4M -T " + local reco="-i $getcomp.orig -o $getcomp.img4 -M ../resources/sshrd/IM4M$device_proc -T " case $getcomp in "iBSS" | "iBEC" ) reco+="$(echo $getcomp | tr '[:upper:]' '[:lower:]') -A" @@ -4123,6 +4161,9 @@ device_ramdisk64() { "$dir/img4" -i $getcomp.orig0 -o $getcomp.orig -k ${iv}${key} -D else reco+=" -P ../resources/sshrd/$name.bpatch" + if [[ $platform == "linux" && $build_id == "18"* ]]; then + reco+=" -J" + fi fi ;; "DeviceTree" ) @@ -4184,7 +4225,7 @@ device_ramdisk64() { print "* Mount root filesystem with this command (tested for iOS 10.3.x):" print " mount_apfs /dev/disk0s1s1 /mnt1" - menu_ramdisk + menu_ramdisk $build_id } device_ramdisk() { @@ -4594,10 +4635,13 @@ menu_ramdisk() { local mode local menu_items=("Connect to SSH") local reboot="reboot_bak" - if [[ $device_proc == 7 ]]; then + if (( device_proc >= 7 )); then menu_items+=("Dump Blobs") reboot="/sbin/reboot" fi + if (( device_proc >= 9 )) || [[ $device_type == "iPad5"* && $1 != "12"* ]]; then + menu_items+=("Install TrollStore") + fi menu_items+=("Reboot Device" "Exit") print "* Clear NVRAM with this command:" @@ -4619,11 +4663,15 @@ menu_ramdisk() { "Connect to SSH" ) mode="ssh";; "Reboot Device" ) mode="reboot";; "Dump Blobs" ) mode="dump-blobs";; + "Install TrollStore" ) mode="trollstore";; "Exit" ) mode="exit";; esac done case $mode in - "ssh" ) $ssh -p $ssh_port root@127.0.0.1;; + "ssh" ) + log "Use the \"exit\" command to go back to SSH Ramdisk Menu" + $ssh -p $ssh_port root@127.0.0.1 + ;; "reboot" ) $ssh -p $ssh_port root@127.0.0.1 "$reboot"; loop=1;; "exit" ) loop=1;; "dump-blobs" ) @@ -4633,6 +4681,36 @@ menu_ramdisk() { log "Onboard blobs should be dumped to $shsh" pause ;; + "trollstore" ) + print "* Make sure that your device is on iOS 14 or 15 before continuing." + print "* If your device is on iOS 13 or below, TrollStore will NOT work." + pause + log "Checking for latest TrollStore" + local troll=$(curl https://api.github.com/repos/opa334/TrollStore/releases/latest) + local latest="$(echo "$troll" | $jq -r ".tag_name")" + local current="$(cat ../saved/TrollStore_version)" + if [[ $current != "$latest" ]]; then + rm ../saved/TrollStore.tar ../saved/PersistenceHelper_Embedded + fi + if [[ -s ../saved/TrollStore.tar && -s ../saved/PersistenceHelper_Embedded ]]; then + cp ../saved/TrollStore.tar ../saved/PersistenceHelper_Embedded . + else + rm ../saved/TrollStore.tar ../saved/PersistenceHelper_Embedded 2>/dev/null + log "Downloading latest TrollStore" + curl -LO $(echo "$troll" | $jq -r ".assets[] | select(.name|test(\"PersistenceHelper_Embedded\")) | .browser_download_url") + curl -LO $(echo "$troll" | $jq -r ".assets[] | select(.name|test(\"TrollStore.tar\")) | .browser_download_url") + cp TrollStore.tar PersistenceHelper_Embedded ../saved + echo "$latest" > ../saved/TrollStore_version + fi + tar -xf TrollStore.tar + log "Installing TrollStore to Tips" + $ssh -p $ssh_port root@127.0.0.1 "mount_filesystems" + local tips="$($ssh -p $ssh_port root@127.0.0.1 "find /mnt2/containers/Bundle/Application/ -name \"Tips.app\"")" + $scp -P $ssh_port PersistenceHelper_Embedded TrollStore.app/trollstorehelper ../resources/sshrd/trollstore.sh root@127.0.0.1:$tips + rm -r PersistenceHelper_Embedded TrollStore* + $ssh -p $ssh_port root@127.0.0.1 "bash $tips/trollstore.sh; rm $tips/trollstore.sh" + log "Done!" + ;; esac mode= done @@ -5695,7 +5773,7 @@ menu_other() { esac fi if [[ $device_mode != "none" ]]; then - if (( device_proc < 8 )); then + if (( device_proc < 11 )); then menu_items+=("SSH Ramdisk") fi case $device_mode in @@ -6041,7 +6119,7 @@ device_justboot() { } device_enter_ramdisk() { - if [[ $device_proc == 7 ]]; then + if (( device_proc >= 7 )); then device_ramdisk64 return elif (( device_proc >= 5 )); then