diff --git a/xposed_installation/system/bin/app_process32_xposed b/xposed_installation/system/bin/app_process32_xposed new file mode 100644 index 0000000..301fd4e Binary files /dev/null and b/xposed_installation/system/bin/app_process32_xposed differ diff --git a/xposed_installation/system/bin/dex2oat b/xposed_installation/system/bin/dex2oat new file mode 100644 index 0000000..f1d7cc4 Binary files /dev/null and b/xposed_installation/system/bin/dex2oat differ diff --git a/xposed_installation/system/bin/oatdump b/xposed_installation/system/bin/oatdump new file mode 100644 index 0000000..ea15208 Binary files /dev/null and b/xposed_installation/system/bin/oatdump differ diff --git a/xposed_installation/system/bin/patchoat b/xposed_installation/system/bin/patchoat new file mode 100644 index 0000000..fd29f42 Binary files /dev/null and b/xposed_installation/system/bin/patchoat differ diff --git a/xposed_installation/system/framework/XposedBridge.jar b/xposed_installation/system/framework/XposedBridge.jar new file mode 100644 index 0000000..89dd079 Binary files /dev/null and b/xposed_installation/system/framework/XposedBridge.jar differ diff --git a/xposed_installation/system/lib/libart-compiler.so b/xposed_installation/system/lib/libart-compiler.so new file mode 100644 index 0000000..72c8350 Binary files /dev/null and b/xposed_installation/system/lib/libart-compiler.so differ diff --git a/xposed_installation/system/lib/libart-disassembler.so b/xposed_installation/system/lib/libart-disassembler.so new file mode 100644 index 0000000..9666a71 Binary files /dev/null and b/xposed_installation/system/lib/libart-disassembler.so differ diff --git a/xposed_installation/system/lib/libart.so b/xposed_installation/system/lib/libart.so new file mode 100644 index 0000000..d4c84f7 Binary files /dev/null and b/xposed_installation/system/lib/libart.so differ diff --git a/xposed_installation/system/lib/libsigchain.so b/xposed_installation/system/lib/libsigchain.so new file mode 100644 index 0000000..04b6955 Binary files /dev/null and b/xposed_installation/system/lib/libsigchain.so differ diff --git a/xposed_installation/system/lib/libxposed_art.so b/xposed_installation/system/lib/libxposed_art.so new file mode 100644 index 0000000..db34ad2 Binary files /dev/null and b/xposed_installation/system/lib/libxposed_art.so differ diff --git a/xposed_installation/system/xposed.prop b/xposed_installation/system/xposed.prop new file mode 100644 index 0000000..e88337c --- /dev/null +++ b/xposed_installation/system/xposed.prop @@ -0,0 +1,4 @@ +version=89 +arch=arm +minsdk=22 +maxsdk=22 diff --git a/xposed_installation/xposed_installer.sh b/xposed_installation/xposed_installer.sh new file mode 100755 index 0000000..562ddfa --- /dev/null +++ b/xposed_installation/xposed_installer.sh @@ -0,0 +1,197 @@ +########################################################################################## +# +# Xposed framework installer zip. +# Modified for DPT running in adb mode +# +# This script installs the Xposed framework files to the system partition. +# The Xposed Installer app is needed as well to manage the installed modules. +# +########################################################################################## + +alias cat='busybox cat' +alias cut='busybox cut' +alias sed='busybox sed' +alias head='busybox head' +alias find='busybox find' + + +grep_prop() { + REGEX="s/^$1=//p" + shift + FILES=$@ + if [ -z "$FILES" ]; then + FILES='/system/build.prop' + fi + cat $FILES 2>/dev/null | sed -n $REGEX | head -n 1 +} + +android_version() { + case $1 in + 15) echo '4.0 / SDK'$1;; + 16) echo '4.1 / SDK'$1;; + 17) echo '4.2 / SDK'$1;; + 18) echo '4.3 / SDK'$1;; + 19) echo '4.4 / SDK'$1;; + 21) echo '5.0 / SDK'$1;; + 22) echo '5.1 / SDK'$1;; + 23) echo '6.0 / SDK'$1;; + 24) echo '7.0 / SDK'$1;; + 25) echo '7.1 / SDK'$1;; + 26) echo '8.0 / SDK'$1;; + 27) echo '8.1 / SDK'$1;; + *) echo 'SDK'$1;; + esac +} + +cp_perm() { + cp -f $1 $2 || exit 1 + set_perm $2 $3 $4 $5 $6 +} + +set_perm() { + chown $2:$3 $1 || exit 1 + chmod $4 $1 || exit 1 + if [ "$5" ]; then + chcon $5 $1 2>/dev/null + else + chcon 'u:object_r:system_file:s0' $1 2>/dev/null + fi +} + +install_nobackup() { + cp_perm ./$1 $1 $2 $3 $4 $5 +} + +install_and_link() { + TARGET=$1 + XPOSED="${1}_xposed" + BACKUP="${1}_original" + if [ ! -f ./$XPOSED ]; then + return + fi + cp_perm ./$XPOSED $XPOSED $2 $3 $4 $5 + # Don't touch $TARGET if the link was created by something else (e.g. SuperSU) + if [ ! -f $BACKUP ]; then + mv $TARGET $BACKUP || exit 1 + ln -s $XPOSED $TARGET || exit 1 + chcon -h 'u:object_r:system_file:s0' $TARGET 2>/dev/null + fi +} + +install_overwrite() { + TARGET=$1 + if [ ! -f ./$TARGET ]; then + return + fi + BACKUP="${1}.orig" + NO_ORIG="${1}.no_orig" + if [ ! -f $TARGET ]; then + touch $NO_ORIG || exit 1 + set_perm $NO_ORIG 0 0 600 + elif [ -f $BACKUP ]; then + rm -f $TARGET + gzip $BACKUP || exit 1 + set_perm "${BACKUP}.gz" 0 0 600 + elif [ ! -f "${BACKUP}.gz" -a ! -f $NO_ORIG ]; then + mv $TARGET $BACKUP || exit 1 + gzip $BACKUP || exit 1 + set_perm "${BACKUP}.gz" 0 0 600 + fi + cp_perm ./$TARGET $TARGET $2 $3 $4 $5 +} + +########################################################################################## + +echo "******************************" +echo "Xposed framework installer zip" +echo "******************************" + +if [ ! -f "system/xposed.prop" ]; then + echo "! Failed: Extracted file system/xposed.prop not found!" + exit 1 +fi + +echo "- Mounting /system and /vendor read-write" +# mount /system >/dev/null 2>&1 +# mount /vendor >/dev/null 2>&1 +mount -o remount,rw /system +# mount -o remount,rw /vendor >/dev/null 2>&1 +if [ ! -f '/system/build.prop' ]; then + echo "! Failed: /system could not be mounted!" + exit 1 +fi + +echo "- Checking environment" +API=$(grep_prop ro.build.version.sdk) +APINAME=$(android_version $API) +ABI=$(grep_prop ro.product.cpu.abi | cut -c-3) +ABI2=$(grep_prop ro.product.cpu.abi2 | cut -c-3) +ABILONG=$(grep_prop ro.product.cpu.abi) + +XVERSION=$(grep_prop version system/xposed.prop) +XARCH=$(grep_prop arch system/xposed.prop) +XMINSDK=$(grep_prop minsdk system/xposed.prop) +XMAXSDK=$(grep_prop maxsdk system/xposed.prop) + +XEXPECTEDSDK=$(android_version $XMINSDK) +if [ "$XMINSDK" != "$XMAXSDK" ]; then + XEXPECTEDSDK=$XEXPECTEDSDK' - '$(android_version $XMAXSDK) +fi + +ARCH=arm +IS64BIT= +if [ "$ABI" = "x86" ]; then ARCH=x86; fi; +if [ "$ABI2" = "x86" ]; then ARCH=x86; fi; +if [ "$API" -ge "21" ]; then + if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; IS64BIT=1; fi; + if [ "$ABILONG" = "x86_64" ]; then ARCH=x64; IS64BIT=1; fi; +fi + +# echo "DBG [$API] [$ABI] [$ABI2] [$ABILONG] [$ARCH] [$XARCH] [$XMINSDK] [$XMAXSDK] [$XVERSION]" + +echo " Xposed version: $XVERSION" + +XVALID= +if [ "$ARCH" = "$XARCH" ]; then + if [ "$API" -ge "$XMINSDK" ]; then + if [ "$API" -le "$XMAXSDK" ]; then + XVALID=1 + else + echo "! Wrong Android version: $APINAME" + echo "! This file is for: $XEXPECTEDSDK" + fi + else + echo "! Wrong Android version: $APINAME" + echo "! This file is for: $XEXPECTEDSDK" + fi +else + echo "! Wrong platform: $ARCH" + echo "! This file is for: $XARCH" +fi + +if [ -z $XVALID ]; then + echo "! Please download the correct package" + echo "! for your platform/ROM!" + exit 1 +fi + +echo "- Placing files" +install_nobackup /system/xposed.prop 0 0 0644 +install_nobackup /system/framework/XposedBridge.jar 0 0 0644 + +install_and_link /system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0 +install_overwrite /system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0 +install_overwrite /system/bin/oatdump 0 2000 0755 +install_overwrite /system/bin/patchoat 0 2000 0755 u:object_r:dex2oat_exec:s0 +install_overwrite /system/lib/libart.so 0 0 0644 +install_overwrite /system/lib/libart-compiler.so 0 0 0644 +install_overwrite /system/lib/libart-disassembler.so 0 0 0644 +install_overwrite /system/lib/libsigchain.so 0 0 0644 +install_nobackup /system/lib/libxposed_art.so 0 0 0644 + +if [ "$API" -ge "22" ]; then + find /system /vendor -type f -name '*.odex.gz' 2>/dev/null | while read f; do mv "$f" "$f.xposed"; done +fi + +echo "- Done" +exit 0 diff --git a/xposed_installation/xposed_remover.sh b/xposed_installation/xposed_remover.sh new file mode 100755 index 0000000..1af6457 --- /dev/null +++ b/xposed_installation/xposed_remover.sh @@ -0,0 +1,152 @@ +########################################################################################## +# +# Xposed framework uninstaller zip. +# Modified for DPT running in adb mode +# +# This script removes the Xposed framework files from the system partition. +# It doesn't touch the Xposed Installer app. +# +########################################################################################## + +alias cat='busybox cat' +alias cut='busybox cut' +alias sed='busybox sed' +alias head='busybox head' +alias find='busybox find' +alias gunzip='busybox gunzip' + + +grep_prop() { + REGEX="s/^$1=//p" + shift + FILES=$@ + if [ -z "$FILES" ]; then + FILES=$PREFIX/system/build.prop + fi + cat $FILES 2>/dev/null | sed -n $REGEX | head -n 1 +} + +mv_perm() { + mv -f $1 $2 || exit 1 + set_perm $2 $3 $4 $5 $6 +} + +set_perm() { + chown $2:$3 $1 || exit 1 + chmod $4 $1 || exit 1 + if [ "$5" ]; then + chcon $5 $1 2>/dev/null + else + chcon 'u:object_r:system_file:s0' $1 2>/dev/null + fi +} + +restore_link() { + TARGET="${PREFIX}${1}" + LINK_TARGET="${1}_xposed" + XPOSED="${PREFIX}${1}_xposed" + BACKUP="${PREFIX}${1}_original" + # Don't touch $TARGET if the link was created by something else (e.g. SuperSU) + if [ -f $BACKUP -a -L $TARGET -a "$(readlink $TARGET)" = $LINK_TARGET ]; then + rm -f $TARGET + mv_perm $BACKUP $TARGET $2 $3 $4 $5 + fi + rm -f $XPOSED +} + +restore_backup() { + TARGET="${PREFIX}${1}" + BACKUP="${PREFIX}${1}.orig" + NO_ORIG="${PREFIX}${1}.no_orig" + if [ -f $BACKUP ]; then + mv_perm $BACKUP $TARGET $2 $3 $4 $5 + rm -f $NO_ORIG + elif [ -f "${BACKUP}.gz" ]; then + rm -f $TARGET $NO_ORIG + gunzip "${BACKUP}.gz" + mv_perm $BACKUP $TARGET $2 $3 $4 $5 + elif [ -f $NO_ORIG ]; then + rm -f $TARGET $NO_ORIG + fi +} + +########################################################################################## + +echo "************************************" +echo " Xposed Framework uninstaller zip" +echo "************************************" + +echo "- Mounting /system and /vendor read-write" +# mount /system >/dev/null 2>&1 +mount -o remount,rw /system +# mount /vendor >/dev/null 2>&1 +# mount -o remount,rw /vendor >/dev/null 2>&1 + +PREFIX= +# if [ "$SYSTEM_ROOT_IMAGE" = "true" -a -f /twres/twrp -a -f /system/system/build.prop ]; then +# # TWRP might mount the full system partion to /system, so files are actually in /system/system. +# PREFIX=/system +# fi + +# Check if build.prop is accessible now. +if [ ! -f $PREFIX/system/build.prop ]; then + echo "! Failed: /system could not be mounted!" + exit 1 +fi + +echo "- Checking environment" +API=$(grep_prop ro.build.version.sdk) +ABI=$(grep_prop ro.product.cpu.abi | cut -c-3) +ABI2=$(grep_prop ro.product.cpu.abi2 | cut -c-3) +ABILONG=$(grep_prop ro.product.cpu.abi) + +ARCH=arm +IS64BIT= +if [ "$ABI" = "x86" ]; then ARCH=x86; fi; +if [ "$ABI2" = "x86" ]; then ARCH=x86; fi; +if [ "$API" -ge "21" ]; then + if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; IS64BIT=1; fi; + if [ "$ABILONG" = "x86_64" ]; then ARCH=x64; IS64BIT=1; fi; +else + echo "! This script doesn't work for SDK < 21 (yet)" + exit 1 +fi + +# echo "DBG [$API] [$ABI] [$ABI2] [$ABILONG] [$ARCH]" + +echo "- Restoring/removing files" +rm -f $PREFIX/system/xposed.prop +rm -f $PREFIX/system/framework/XposedBridge.jar + +restore_link /system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0 +restore_backup /system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0 +restore_backup /system/bin/dexdiag 0 2000 0755 +restore_backup /system/bin/dexlist 0 2000 0755 +restore_backup /system/bin/dexoptanalyzer 0 2000 0755 u:object_r:dexoptanalyzer_exec:s0 +restore_backup /system/bin/oatdump 0 2000 0755 +restore_backup /system/bin/patchoat 0 2000 0755 u:object_r:dex2oat_exec:s0 +restore_backup /system/bin/profman 0 2000 0755 u:object_r:profman_exec:s0 + +restore_backup /system/lib/libart.so 0 0 0644 +restore_backup /system/lib/libart-compiler.so 0 0 0644 +restore_backup /system/lib/libart-dexlayout.so 0 0 0644 +restore_backup /system/lib/libart-disassembler.so 0 0 0644 +restore_backup /system/lib/libsigchain.so 0 0 0644 +restore_backup /system/lib/libopenjdkjvm.so 0 0 0644 +restore_backup /system/lib/libopenjdkjvmti.so 0 0 0644 +rm -f $PREFIX/system/lib/libxposed_art.so +rm -f $PREFIX/system/lib/libxposed_art.so.no_orig + +if [ "$API" -ge "22" -a "$API" -le "23" ]; then + find $PREFIX/system $PREFIX/vendor -type f -name '*.odex.gz.xposed' 2>/dev/null | while read f; do mv "$f" "${f%.xposed}"; done +fi + +echo "- Done" +echo " " +echo "************************************" +echo "It's recommended that you wipe the" +echo "Dalvik cache now." +echo "************************************" +echo " " + +exit 0