-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathroot.sh
executable file
·103 lines (86 loc) · 2.74 KB
/
root.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/bash
BLUESTACKS=/Applications/BlueStacks.app
ADB_PORT=5555
ARCH=arm64-v8a
BASE_DIR=$(pwd)
MAGISK_BIN_DIR=$BASE_DIR/magisk-bin
ROOTFS_PATH=$BLUESTACKS/Contents/img/Root.qcow2
ROOTFS_BACKUP=$ROOTFS_PATH.bak
INITRD_PATH=$BLUESTACKS/Contents/img/initrd_hvf.img
INITRD_BACKUP=$INITRD_PATH.bak
if [ -d "$BLUESTACKS" ]; then
PLIST_FILE=$BLUESTACKS/Contents/Info.plist
BS_VERSION=$(defaults read $PLIST_FILE CFBundleShortVersionString 2>/dev/null)
echo "[*] Found BlueStacks Air version $BS_VERSION"
else
echo "[!] BlueStacks not found"
exit 1
fi
echo '=================================================='
echo '** **'
echo '** BlueStacks Air Magisk Installer **'
echo '** **'
echo '=================================================='
echo ''
echo 'Checklist:'
echo '* You have started BlueStacks for the first time.'
echo '* BlueStacks is closed before proceeding.'
echo ''
echo '[*] Preparing magisk'
[[ -d magisk ]] && rm -rf magisk
unzip -q magisk.apk -d magisk
[[ -d $MAGISK_BIN_DIR ]] && rm -rf $MAGISK_BIN_DIR
mkdir $MAGISK_BIN_DIR
BIN_NAMES=("magisk32" "magisk64" "magiskinit" "magiskpolicy")
for BIN_NAME in ${BIN_NAMES[@]}; do
SRC=magisk/lib/$ARCH/lib$BIN_NAME.so
[[ -f $SRC ]] && cp $SRC $MAGISK_BIN_DIR/$BIN_NAME
done
cp magisk/assets/stub.apk $MAGISK_BIN_DIR/stub.apk
rm -rf magisk
echo '[*] Backing up rootfs'
[[ ! -f $ROOTFS_BACKUP ]] && cp $ROOTFS_PATH $ROOTFS_BACKUP
echo '[*] Backing up initrd'
[[ ! -f $INITRD_BACKUP ]] && cp $INITRD_PATH $INITRD_BACKUP
[[ ! -d build ]] && mkdir build
cd build
echo '[*] Patching initrd'
[[ -d initrd ]] && rm -rf initrd
mkdir initrd
cd initrd
cat $INITRD_BACKUP | cpio -i
zip -qj boot/magisk-bin.zip $MAGISK_BIN_DIR/*
cp $BASE_DIR/magisk.rc boot/magisk.rc
if [ -f $MAGISK_BIN_DIR/magisk32 ]; then
sed -i '' -e 's/magisk64/magisk32/g' boot/magisk.rc
fi
# Mount filesystem as rw
sed -i '' -e 's/mount -o ro/mount -o rw/g' boot/init
# Install magisk to system
sed -i '' -e 's/exec \/init//' boot/stage2.sh
cat << EOF >> boot/stage2.sh
if [ -f /boot/magisk-bin.zip ]; then
log_echo "Installing Magisk"
unzip -q /boot/magisk-bin.zip -d /system/etc/init/magisk
chmod 700 /system/etc/init/magisk/*
cat /boot/magisk.rc >> /system/etc/init/bootanim.rc
fi
exec /init
EOF
echo '[*] Repacking initrd'
find . | cpio -H newc -o | gzip > $INITRD_PATH
cd $BASE_DIR
# Cleanup
rm -rf build
rm -rf $MAGISK_BIN_DIR
echo '[*] Starting BlueStacks'
open -n $BLUESTACKS
echo '[*] Done'
echo ''
echo '=================================================='
echo ''
echo 'Next steps:'
echo '* Install magisk.apk'
echo '* Open Kitsune Mask app and proceed with additional setup'
echo '* Force quit BlueStacks'
echo '* Execute restore_initrd.sh'