mirror of
https://github.com/j-hc/revanced-magisk-module.git
synced 2025-04-30 14:44:32 +02:00
module: mount within zygote
This commit is contained in:
parent
e89f71c1ae
commit
a67c68b8f7
20
revanced-magisk/common.sh
Normal file
20
revanced-magisk/common.sh
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#!/system/bin/sh
|
||||||
|
|
||||||
|
if type nsenter >/dev/null 2>/dev/null; then
|
||||||
|
ZPID=$(pidof zygote)
|
||||||
|
Z64PID=$(pidof zygote64)
|
||||||
|
|
||||||
|
mm() {
|
||||||
|
if [ "$ZPID" ]; then nsenter -t "$ZPID" -m -- "$@" || return $?; fi
|
||||||
|
if [ "$Z64PID" ]; then nsenter -t "$Z64PID" -m -- "$@" || return $?; fi
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mm() { "$@"; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
pmex() {
|
||||||
|
OP=$(pm "$@" 2>&1 </dev/null)
|
||||||
|
RET=$?
|
||||||
|
echo "$OP"
|
||||||
|
return $RET
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
. "$MODPATH/config"
|
. "$MODPATH/config"
|
||||||
|
. "$MODPATH/common.sh"
|
||||||
|
|
||||||
ui_print ""
|
ui_print ""
|
||||||
if [ -n "$MODULE_ARCH" ] && [ "$MODULE_ARCH" != "$ARCH" ]; then
|
if [ -n "$MODULE_ARCH" ] && [ "$MODULE_ARCH" != "$ARCH" ]; then
|
||||||
@ -19,10 +20,6 @@ RVPATH=/data/adb/rvhc/${MODPATH##*/}.apk
|
|||||||
|
|
||||||
set_perm_recursive "$MODPATH/bin" 0 0 0755 0777
|
set_perm_recursive "$MODPATH/bin" 0 0 0755 0777
|
||||||
|
|
||||||
if su -M -c true >/dev/null 2>/dev/null; then
|
|
||||||
alias mm='su -M -c'
|
|
||||||
else alias mm='nsenter -t1 -m'; fi
|
|
||||||
|
|
||||||
mm grep -F "$PKG_NAME" /proc/mounts | while read -r line; do
|
mm grep -F "$PKG_NAME" /proc/mounts | while read -r line; do
|
||||||
ui_print "* Un-mount"
|
ui_print "* Un-mount"
|
||||||
mp=${line#* } mp=${mp%% *}
|
mp=${line#* } mp=${mp%% *}
|
||||||
@ -30,13 +27,6 @@ mm grep -F "$PKG_NAME" /proc/mounts | while read -r line; do
|
|||||||
done
|
done
|
||||||
am force-stop "$PKG_NAME"
|
am force-stop "$PKG_NAME"
|
||||||
|
|
||||||
pmex() {
|
|
||||||
OP=$(pm "$@" 2>&1 </dev/null)
|
|
||||||
RET=$?
|
|
||||||
echo "$OP"
|
|
||||||
return $RET
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! pmex path "$PKG_NAME" >&2; then
|
if ! pmex path "$PKG_NAME" >&2; then
|
||||||
if pmex install-existing "$PKG_NAME" >&2; then
|
if pmex install-existing "$PKG_NAME" >&2; then
|
||||||
BASEPATH=$(pmex path "$PKG_NAME") || abort "ERROR: pm path failed $BASEPATH"
|
BASEPATH=$(pmex path "$PKG_NAME") || abort "ERROR: pm path failed $BASEPATH"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
MODDIR=${0%/*}
|
MODDIR=${0%/*}
|
||||||
RVPATH=/data/adb/rvhc/${MODDIR##*/}.apk
|
RVPATH=/data/adb/rvhc/${MODDIR##*/}.apk
|
||||||
. "$MODDIR/config"
|
. "$MODDIR/config"
|
||||||
|
. "$MODDIR/common.sh"
|
||||||
|
|
||||||
err() {
|
err() {
|
||||||
[ ! -f "$MODDIR/err" ] && cp "$MODDIR/module.prop" "$MODDIR/err"
|
[ ! -f "$MODDIR/err" ] && cp "$MODDIR/module.prop" "$MODDIR/err"
|
||||||
@ -11,7 +12,7 @@ err() {
|
|||||||
until [ "$(getprop sys.boot_completed)" = 1 ]; do sleep 1; done
|
until [ "$(getprop sys.boot_completed)" = 1 ]; do sleep 1; done
|
||||||
until [ -d "/sdcard/Android" ]; do sleep 1; done
|
until [ -d "/sdcard/Android" ]; do sleep 1; done
|
||||||
while
|
while
|
||||||
BASEPATH=$(pm path "$PKG_NAME" 2>&1 </dev/null)
|
BASEPATH=$(pmex path "$PKG_NAME")
|
||||||
SVCL=$?
|
SVCL=$?
|
||||||
[ $SVCL = 20 ]
|
[ $SVCL = 20 ]
|
||||||
do sleep 2; done
|
do sleep 2; done
|
||||||
@ -24,7 +25,7 @@ run() {
|
|||||||
sleep 4
|
sleep 4
|
||||||
|
|
||||||
BASEPATH=${BASEPATH##*:} BASEPATH=${BASEPATH%/*}
|
BASEPATH=${BASEPATH##*:} BASEPATH=${BASEPATH%/*}
|
||||||
if [ ! -d "$BASEPATH/lib" ]; then # TODO: is this ok? idk
|
if [ ! -d "$BASEPATH/lib" ]; then
|
||||||
ls -Zla "$BASEPATH" >"$MODDIR/log.txt"
|
ls -Zla "$BASEPATH" >"$MODDIR/log.txt"
|
||||||
ls -Zla "$BASEPATH/lib" >>"$MODDIR/log.txt"
|
ls -Zla "$BASEPATH/lib" >>"$MODDIR/log.txt"
|
||||||
else rm "$MODDIR/log.txt" >/dev/null 2>&1; fi
|
else rm "$MODDIR/log.txt" >/dev/null 2>&1; fi
|
||||||
@ -33,15 +34,15 @@ run() {
|
|||||||
err "version mismatch (installed:${VERSION}, module:$PKG_VER)"
|
err "version mismatch (installed:${VERSION}, module:$PKG_VER)"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
grep "$PKG_NAME" /proc/mounts | while read -r line; do
|
mm grep "$PKG_NAME" /proc/mounts | while read -r line; do
|
||||||
mp=${line#* } mp=${mp%% *}
|
mp=${line#* } mp=${mp%% *}
|
||||||
umount -l "${mp%%\\*}"
|
mm umount -l "${mp%%\\*}"
|
||||||
done
|
done
|
||||||
if ! chcon u:object_r:apk_data_file:s0 "$RVPATH"; then
|
if ! chcon u:object_r:apk_data_file:s0 "$RVPATH"; then
|
||||||
err "apk not found"
|
err "apk not found"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
mount -o bind "$RVPATH" "$BASEPATH/base.apk"
|
mm mount -o bind "$RVPATH" "$BASEPATH/base.apk"
|
||||||
am force-stop "$PKG_NAME"
|
am force-stop "$PKG_NAME"
|
||||||
[ -f "$MODDIR/err" ] && mv -f "$MODDIR/err" "$MODDIR/module.prop"
|
[ -f "$MODDIR/err" ] && mv -f "$MODDIR/err" "$MODDIR/module.prop"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user