From a926c520f2771ec58c0bdf693df0c48e1a0c46ae Mon Sep 17 00:00:00 2001 From: osm0sis Date: Sun, 4 Aug 2024 00:06:54 -0300 Subject: [PATCH] Restore resetprop_hexpatch for older Magisk which still needs it --- module/common_func.sh | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/module/common_func.sh b/module/common_func.sh index 187f19d..bc1a2d3 100644 --- a/module/common_func.sh +++ b/module/common_func.sh @@ -1,10 +1,46 @@ +RESETPROP="resetprop -n" +[ -n "$MAGISK_VER_CODE" ] && [ "$MAGISK_VER_CODE" -lt "27003" ] && RESETPROP=resetprop_hexpatch + +# resetprop_hexpatch [-f|--force] +resetprop_hexpatch() { + case "$1" in + -f|--force) local FORCE=1; shift;; + esac + + local NAME="$1" + local NEWVALUE="$2" + local CURVALUE="$(resetprop "$NAME")" + + [ ! "$NEWVALUE" -o ! "$CURVALUE" ] && return 1 + [ "$NEWVALUE" = "$CURVALUE" -a ! "$FORCE" ] && return 2 + + local NEWLEN=${#NEWVALUE} + if [ -f /dev/__properties__ ]; then + local PROPFILE=/dev/__properties__ + else + local PROPFILE="/dev/__properties__/$(resetprop -Z "$NAME")" + fi + [ ! -f "$PROPFILE" ] && return 3 + local NAMEOFFSET=$(echo $(strings -t d "$PROPFILE" | grep "$NAME") | cut -d ' ' -f 1) + + # + local NEWHEX="$(printf '%02x' "$NEWLEN")$(printf "$NEWVALUE" | od -A n -t x1 -v | tr -d ' \n')$(printf "%$((92-NEWLEN))s" | sed 's/ /00/g')" + + printf "Patch '$NAME' to '$NEWVALUE' in '$PROPFILE' @ 0x%08x -> \n[0000??$NEWHEX]\n" $((NAMEOFFSET-96)) + + echo -ne "\x00\x00" \ + | dd obs=1 count=2 seek=$((NAMEOFFSET-96)) conv=notrunc of="$PROPFILE" + echo -ne "$(printf "$NEWHEX" | sed -e 's/.\{2\}/&\\x/g' -e 's/^/\\x/' -e 's/\\x$//')" \ + | dd obs=1 count=93 seek=$((NAMEOFFSET-93)) conv=notrunc of="$PROPFILE" +} + # resetprop_if_diff resetprop_if_diff() { local NAME="$1" local EXPECTED="$2" local CURRENT="$(resetprop "$NAME")" - [ -z "$CURRENT" ] || [ "$CURRENT" = "$EXPECTED" ] || resetprop -n "$NAME" "$EXPECTED" + [ -z "$CURRENT" ] || [ "$CURRENT" = "$EXPECTED" ] || $RESETPROP "$NAME" "$EXPECTED" } # resetprop_if_match @@ -13,7 +49,7 @@ resetprop_if_match() { local CONTAINS="$2" local VALUE="$3" - [[ "$(resetprop "$NAME")" = *"$CONTAINS"* ]] && resetprop -n "$NAME" "$VALUE" + [[ "$(resetprop "$NAME")" = *"$CONTAINS"* ]] && $RESETPROP "$NAME" "$VALUE" } # stub for boot-time