From 664215b7d5d96d63dc09afa2c7c0bd3fcf0990a0 Mon Sep 17 00:00:00 2001 From: tytydraco Date: Fri, 18 Dec 2020 11:09:54 +0000 Subject: [PATCH 1/9] all: patching for anndroid Signed-off-by: alanndz --- bin/charch | 5 +++-- bin/cparch | 5 +++-- bin/lsarch | 5 +++-- bin/mkarch | 5 +++-- bin/rmarch | 5 +++-- bin/unarch | 5 +++-- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/bin/charch b/bin/charch index 9a62f5b..45605a0 100755 --- a/bin/charch +++ b/bin/charch @@ -1,5 +1,6 @@ -#!/usr/bin/env bash +#!/system/bin/sh # Written by Draco (tytydraco) @ GitHub +export PATH="/sbin/.magisk/busybox:$PATH" # Log in red and exit err() { @@ -17,7 +18,7 @@ done [[ "$(id -u)" -ne 0 ]] && err "No root permissions. Exiting." # Path containing rootfs tarball and all rootfs instances -CHROOT_DIR="$HOME/charch" +CHROOT_DIR="/data/unencrypted/charch" # The name of the current rootfs instance ROOTFS="rootfs" diff --git a/bin/cparch b/bin/cparch index 6eecb8c..2d6d634 100755 --- a/bin/cparch +++ b/bin/cparch @@ -1,5 +1,6 @@ -#!/usr/bin/env bash +#!/system/bin/sh # Written by Draco (tytydraco) @ GitHub +export PATH="/sbin/.magisk/busybox:$PATH" # Log in red and exit err() { @@ -17,7 +18,7 @@ done [[ "$(id -u)" -ne 0 ]] && err "No root permissions. Exiting." # Path containing rootfs tarball and all rootfs instances -CHROOT_DIR="$HOME/charch" +CHROOT_DIR="/data/unencrypted/charch" usage() { echo -n "Usage: $(basename "$0") [OPTIONS] diff --git a/bin/lsarch b/bin/lsarch index 48e1626..139d27e 100755 --- a/bin/lsarch +++ b/bin/lsarch @@ -1,5 +1,6 @@ -#!/usr/bin/env bash +#!/system/bin/sh # Written by Draco (tytydraco) @ GitHub +export PATH="/sbin/.magisk/busybox:$PATH" # Log in red and exit err() { @@ -17,7 +18,7 @@ done [[ "$(id -u)" -ne 0 ]] && err "No root permissions. Exiting." # Path containing rootfs tarball and all rootfs instances -CHROOT_DIR="$HOME/charch" +CHROOT_DIR="/data/unencrypted/charch" usage() { echo -n "Usage: $(basename "$0") [OPTIONS] diff --git a/bin/mkarch b/bin/mkarch index ad84796..7f55f3b 100755 --- a/bin/mkarch +++ b/bin/mkarch @@ -1,5 +1,6 @@ -#!/usr/bin/env bash +#!/system/bin/sh # Written by Draco (tytydraco) @ GitHub +export PATH="/sbin/.magisk/busybox:$PATH" # Log in red and exit err() { @@ -17,7 +18,7 @@ done [[ "$(id -u)" -ne 0 ]] && err "No root permissions. Exiting." # Path containing rootfs tarball and all rootfs instances -CHROOT_DIR="$HOME/charch" +CHROOT_DIR="/data/unencrypted/charch" # The name of the current rootfs instance ROOTFS="rootfs" diff --git a/bin/rmarch b/bin/rmarch index 8d110fb..25c2744 100755 --- a/bin/rmarch +++ b/bin/rmarch @@ -1,5 +1,6 @@ -#!/usr/bin/env bash +#!/system/bin/sh # Written by Draco (tytydraco) @ GitHub +export PATH="/sbin/.magisk/busybox:$PATH" # Log in red and exit err() { @@ -17,7 +18,7 @@ done [[ "$(id -u)" -ne 0 ]] && err "No root permissions. Exiting." # Path containing rootfs tarball and all rootfs instances -CHROOT_DIR="$HOME/charch" +CHROOT_DIR="/data/unencrypted/charch" # The name of the current rootfs instance ROOTFS="rootfs" diff --git a/bin/unarch b/bin/unarch index 0f3eeea..0825c8a 100755 --- a/bin/unarch +++ b/bin/unarch @@ -1,5 +1,6 @@ -#!/usr/bin/env bash +#!/system/bin/sh # Written by Draco (tytydraco) @ GitHub +export PATH="/sbin/.magisk/busybox:$PATH" # Log in red and exit err() { @@ -17,7 +18,7 @@ done [[ "$(id -u)" -ne 0 ]] && err "No root permissions. Exiting." # Path containing rootfs tarball and rootfs instances -CHROOT_DIR="$HOME/charch" +CHROOT_DIR="/data/unencrypted/charch" # The name of the current rootfs instance ROOTFS="rootfs" From 9cd213a9ea5389f37c9bc0ecc393035b6554572a Mon Sep 17 00:00:00 2001 From: tytydraco Date: Fri, 18 Dec 2020 11:13:45 +0000 Subject: [PATCH 2/9] charch: patching for android Signed-off-by: alanndz --- bin/charch | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/bin/charch b/bin/charch index 45605a0..eca1a35 100755 --- a/bin/charch +++ b/bin/charch @@ -107,12 +107,31 @@ safe_mount_file() { fi } +# Find the outermost mountpoint that charch is currently executing from +find_mountpoint() { + local path=`readlink -f "$1"` + until mountpoint -q "$path" &>/dev/null + do + path=${path%/*} + path=${path:-/} + + # Break if we reach the end of the filesystem + [[ "$path" == "/" ]] && ! mountpoint -q "/" &> /dev/null && break + done + echo "$path" +} + # Mount essentials and remound current mount as suid,exec setup_mounts() { safe_mount_dir /dev tmpfs safe_mount_dir /sys sysfs safe_mount_dir /proc proc safe_mount_file /etc/resolv.conf + + # Remount data partition with suid to allow sudo to function + local root_mount=`find_mountpoint "$CHROOT_DIR"` + mount | awk '{print $3}' | grep -q "^$root_mount\$" && + mount -o remount,suid,exec "$root_mount" &> /dev/null } # Enter the chroot with the provided command From 6680058619e0e05d424c4e168f640dd1d46ac143 Mon Sep 17 00:00:00 2001 From: alanndz Date: Mon, 30 Nov 2020 01:53:16 +0000 Subject: [PATCH 3/9] charch: remove mount --make-slave * In Android 11, mount havent --make-slave * They will error with: mount: bad /etc/fstab: No such file or directory Signed-off-by: alanndz --- bin/charch | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/charch b/bin/charch index eca1a35..9fd4757 100755 --- a/bin/charch +++ b/bin/charch @@ -82,7 +82,6 @@ safe_mount_dir() { then mkdir -p "$guest_mount" mount --rbind "$1" "$guest_mount" - mount --make-rslave "$guest_mount" elif [[ -n "$2" ]] then mkdir -p "$guest_mount" @@ -103,7 +102,6 @@ safe_mount_file() { mkdir -p "${guest_mount%/*}" [[ ! -f "$guest_mount" ]] && touch "$guest_mount" mount --bind "$1" "$guest_mount" - mount --make-slave "$guest_mount" fi } From e1cd21d3af306bb3ba5a13ec5465462e9ebf0bfa Mon Sep 17 00:00:00 2001 From: alanndz Date: Mon, 30 Nov 2020 01:56:07 +0000 Subject: [PATCH 4/9] charch: mount /dev/pts * Its will fixed packages screen, tmux or other cant run Signed-off-by: alanndz --- bin/charch | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/charch b/bin/charch index 9fd4757..91b2ae7 100755 --- a/bin/charch +++ b/bin/charch @@ -122,6 +122,7 @@ find_mountpoint() { # Mount essentials and remound current mount as suid,exec setup_mounts() { safe_mount_dir /dev tmpfs + safe_mount_dir /dev/pts devpts safe_mount_dir /sys sysfs safe_mount_dir /proc proc safe_mount_file /etc/resolv.conf From 4d2e203b2ca0fd115c80771b5bf092ddc0249923 Mon Sep 17 00:00:00 2001 From: alanndz Date: Fri, 18 Dec 2020 11:16:50 +0000 Subject: [PATCH 5/9] move bin into system/ Signed-off-by: alanndz --- {bin => system/bin}/charch | 0 {bin => system/bin}/cparch | 0 {bin => system/bin}/lsarch | 0 {bin => system/bin}/mkarch | 0 {bin => system/bin}/rmarch | 0 {bin => system/bin}/unarch | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {bin => system/bin}/charch (100%) rename {bin => system/bin}/cparch (100%) rename {bin => system/bin}/lsarch (100%) rename {bin => system/bin}/mkarch (100%) rename {bin => system/bin}/rmarch (100%) rename {bin => system/bin}/unarch (100%) diff --git a/bin/charch b/system/bin/charch similarity index 100% rename from bin/charch rename to system/bin/charch diff --git a/bin/cparch b/system/bin/cparch similarity index 100% rename from bin/cparch rename to system/bin/cparch diff --git a/bin/lsarch b/system/bin/lsarch similarity index 100% rename from bin/lsarch rename to system/bin/lsarch diff --git a/bin/mkarch b/system/bin/mkarch similarity index 100% rename from bin/mkarch rename to system/bin/mkarch diff --git a/bin/rmarch b/system/bin/rmarch similarity index 100% rename from bin/rmarch rename to system/bin/rmarch diff --git a/bin/unarch b/system/bin/unarch similarity index 100% rename from bin/unarch rename to system/bin/unarch From afb1aaee09eff9561adc3324d016021a49784210 Mon Sep 17 00:00:00 2001 From: alanndz Date: Fri, 18 Dec 2020 11:20:40 +0000 Subject: [PATCH 6/9] Add magisk module Signed-off-by: alanndz --- META-INF/com/google/android/update-binary | 173 +++++++++++++++++++++ META-INF/com/google/android/updater-script | 1 + Makefile | 12 ++ customize.sh | 5 + module.prop | 6 + 5 files changed, 197 insertions(+) create mode 100644 META-INF/com/google/android/update-binary create mode 100644 META-INF/com/google/android/updater-script create mode 100644 Makefile create mode 100644 customize.sh create mode 100644 module.prop diff --git a/META-INF/com/google/android/update-binary b/META-INF/com/google/android/update-binary new file mode 100644 index 0000000..d19eeb5 --- /dev/null +++ b/META-INF/com/google/android/update-binary @@ -0,0 +1,173 @@ +#!/sbin/sh + +################# +# Initialization +################# + +umask 022 + +# Global vars +TMPDIR=/dev/tmp +PERSISTDIR=/sbin/.magisk/mirror/persist + +rm -rf $TMPDIR 2>/dev/null +mkdir -p $TMPDIR + +# echo before loading util_functions +ui_print() { echo "$1"; } + +require_new_magisk() { + ui_print "*******************************" + ui_print " Please install Magisk v19.0+! " + ui_print "*******************************" + exit 1 +} + +is_legacy_script() { + unzip -l "$ZIPFILE" install.sh | grep -q install.sh + return $? +} + +print_modname() { + local len + len=`echo -n $MODNAME | wc -c` + len=$((len + 2)) + local pounds=`printf "%${len}s" | tr ' ' '*'` + ui_print "$pounds" + ui_print " $MODNAME " + ui_print "$pounds" + ui_print "*******************" + ui_print " Powered by Magisk " + ui_print "*******************" +} + +############## +# Environment +############## + +OUTFD=$2 +ZIPFILE=$3 + +mount /data 2>/dev/null + +# Load utility functions +[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk +. /data/adb/magisk/util_functions.sh +[ $MAGISK_VER_CODE -gt 18100 ] || require_new_magisk + +# Preperation for flashable zips +setup_flashable + +# Mount partitions +mount_partitions + +# Detect version and architecture +api_level_arch_detect + +# Setup busybox and binaries +$BOOTMODE && boot_actions || recovery_actions + +############## +# Preparation +############## + +# Extract prop file +unzip -o "$ZIPFILE" module.prop -d $TMPDIR >&2 +[ ! -f $TMPDIR/module.prop ] && abort "! Unable to extract zip file!" + +$BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules +MODULEROOT=$NVBASE/$MODDIRNAME +MODID=`grep_prop id $TMPDIR/module.prop` +MODPATH=$MODULEROOT/$MODID +MODNAME=`grep_prop name $TMPDIR/module.prop` + +# Create mod paths +rm -rf $MODPATH 2>/dev/null +mkdir -p $MODPATH + +########## +# Install +########## + +if is_legacy_script; then + unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 + + # Load install script + . $TMPDIR/install.sh + + # Callbacks + print_modname + on_install + + # Custom uninstaller + [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh + + # Skip mount + $SKIPMOUNT && touch $MODPATH/skip_mount + + # prop file + $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop + + # Module info + cp -af $TMPDIR/module.prop $MODPATH/module.prop + + # post-fs-data scripts + $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh + + # service scripts + $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh + + ui_print "- Setting permissions" + set_permissions +else + print_modname + + unzip -o "$ZIPFILE" customize.sh -d $MODPATH >&2 + + if ! grep -q '^SKIPUNZIP=1$' $MODPATH/customize.sh 2>/dev/null; then + ui_print "- Extracting module files" + unzip -o "$ZIPFILE" -x 'META-INF/*' -d $MODPATH >&2 + + # Default permissions + set_perm_recursive $MODPATH 0 0 0755 0644 + fi + + # Load customization script + [ -f $MODPATH/customize.sh ] && . $MODPATH/customize.sh +fi + +# Handle replace folders +for TARGET in $REPLACE; do + ui_print "- Replace target: $TARGET" + mktouch $MODPATH$TARGET/.replace +done + +if $BOOTMODE; then + # Update info for Magisk Manager + mktouch $NVBASE/modules/$MODID/update + cp -af $MODPATH/module.prop $NVBASE/modules/$MODID/module.prop +fi + +# Copy over custom sepolicy rules +if [ -f $MODPATH/sepolicy.rule -a -e $PERSISTDIR ]; then + ui_print "- Installing custom sepolicy patch" + PERSISTMOD=$PERSISTDIR/magisk/$MODID + mkdir -p $PERSISTMOD + cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule +fi + +# Remove stuffs that don't belong to modules +rm -rf \ +$MODPATH/system/placeholder $MODPATH/customize.sh \ +$MODPATH/README.md $MODPATH/.git* 2>/dev/null + +############## +# Finalizing +############## + +cd / +$BOOTMODE || recovery_cleanup +rm -rf $TMPDIR + +ui_print "- Done" +exit 0 \ No newline at end of file diff --git a/META-INF/com/google/android/updater-script b/META-INF/com/google/android/updater-script new file mode 100644 index 0000000..492be83 --- /dev/null +++ b/META-INF/com/google/android/updater-script @@ -0,0 +1 @@ +#MAGISK \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..59a744c --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +# Written by Draco (tytydraco @ GitHub) +# Modified by alanndz + +HASH := $(shell git rev-parse --short HEAD) +VERSION := $(shell cat module.prop | grep version= | sed "s/version=//") + +zip: + make clean || true + zip -x .git\* Makefile bin .gitignore *patch README* -r9 ChArch-Mod-$(VERSION)_$(HASH).zip . + +clean: + rm *.zip || true diff --git a/customize.sh b/customize.sh new file mode 100644 index 0000000..108b949 --- /dev/null +++ b/customize.sh @@ -0,0 +1,5 @@ +#!/system/bin/sh +# Written by Draco (tytydraco @ GitHub) + +ui_print "[*] Setting executable permissions..." +set_perm_recursive "$MODPATH/system/bin" root root 0777 0755 diff --git a/module.prop b/module.prop new file mode 100644 index 0000000..8a5ac94 --- /dev/null +++ b/module.prop @@ -0,0 +1,6 @@ +id=charch +name=ChArch +version=v2.0 +versionCode=2 +author=tytydraco +description=ChArch for Android. Modified by alanndz From 84b588fd048d971df94d9d2023f53011593a4ada Mon Sep 17 00:00:00 2001 From: alanndz Date: Fri, 18 Dec 2020 11:29:27 +0000 Subject: [PATCH 7/9] add prebuilt fuser Signed-off-by: alanndz --- system/bin/fuser | Bin 0 -> 67608 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 system/bin/fuser diff --git a/system/bin/fuser b/system/bin/fuser new file mode 100755 index 0000000000000000000000000000000000000000..4a3191c6f39e6134f65f27fa9e8d880ec7f737d4 GIT binary patch literal 67608 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 q_n;tR?{QtmCL7ce!heW7!K09=)Og Date: Fri, 18 Dec 2020 11:31:23 +0000 Subject: [PATCH 8/9] cparch: fix Signed-off-by: alanndz --- system/bin/cparch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/bin/cparch b/system/bin/cparch index 2d6d634..f318ed3 100755 --- a/system/bin/cparch +++ b/system/bin/cparch @@ -62,7 +62,7 @@ fi [[ -d "$CHROOT_DIR/$2" ]] && err "Rootfs instance with name $2 already exists. Exiting." # Unmount and exit on fail -! unarch -d "$CHROOT_DIR" "$1" && exit 1 +! unarch -d "$CHROOT_DIR" -n "$1" && exit 1 # Clone cp -Ra "$CHROOT_DIR/$1" "$CHROOT_DIR/$2" From 1f58e68f5b49931390d19c30bce1de6a08333dc6 Mon Sep 17 00:00:00 2001 From: alanndz Date: Fri, 20 May 2022 20:45:13 +0800 Subject: [PATCH 9/9] mkarch: Use curl instead wget Signed-off-by: alanndz --- system/bin/mkarch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/bin/mkarch b/system/bin/mkarch index 7f55f3b..1c5f458 100755 --- a/system/bin/mkarch +++ b/system/bin/mkarch @@ -9,7 +9,7 @@ err() { } # Check for required dependencies -for dep in find id mkdir rm sed tar wc wget +for dep in find id mkdir rm sed tar wc curl do ! command -v "$dep" &> /dev/null && err "Unable to locate dependency $dep. Exiting." done @@ -74,7 +74,7 @@ ROOTFS_DIR="$CHROOT_DIR/$ROOTFS" fetch_rootfs() { [[ -z "$ROOTFS_URL" ]] && err "No rootfs tarball URL specified. Exiting." - ! wget -qO "$ROOTFS_TAR" "$ROOTFS_URL" && err "Failed to fetch rootfs tarball. Exiting." + ! curl -s -o "$ROOTFS_TAR" "$ROOTFS_URL" && err "Failed to fetch rootfs tarball. Exiting." } # Extract the rootfs and make it usable