mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-05-01 02:24:18 +00:00
android: remove radare root module
This commit is contained in:
1
root-module/.gitignore
vendored
1
root-module/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
system/
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/sbin/sh
|
|
||||||
|
|
||||||
#################
|
|
||||||
# Initialization
|
|
||||||
#################
|
|
||||||
|
|
||||||
umask 022
|
|
||||||
|
|
||||||
# echo before loading util_functions
|
|
||||||
ui_print() { echo "$1"; }
|
|
||||||
|
|
||||||
require_new_magisk() {
|
|
||||||
ui_print "*******************************"
|
|
||||||
ui_print " Please install Magisk v20.4+! "
|
|
||||||
ui_print "*******************************"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Load util_functions.sh
|
|
||||||
#########################
|
|
||||||
|
|
||||||
OUTFD=$2
|
|
||||||
ZIPFILE=$3
|
|
||||||
|
|
||||||
mount /data 2>/dev/null
|
|
||||||
|
|
||||||
[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk
|
|
||||||
. /data/adb/magisk/util_functions.sh
|
|
||||||
[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk
|
|
||||||
|
|
||||||
install_module
|
|
||||||
exit 0
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
#MAGISK
|
|
||||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
exec /data/local/tmp/aln_unzip/busybox/busybox-arm64 xz "$@"
|
|
||||||
@@ -1,190 +0,0 @@
|
|||||||
#!/system/bin/sh
|
|
||||||
|
|
||||||
# Note: these two exec redirs are not strictly POSIX-compliant, so they can be commented out if we notice that it shows a syntax error in some environments (unlikely to happen)
|
|
||||||
|
|
||||||
# Redirect stdout to ui_print otherwise it's not shown
|
|
||||||
exec 1> >(while read -r line; do ui_print "[O] $line"; done)
|
|
||||||
# Redirect stderr to ui_print otherwise it's not shown + ignore useless radare2 warning that clutters the logs
|
|
||||||
exec 2> >(while read -r line; do echo "$line" | grep -qv "Cannot determine entrypoint, using" && ui_print "[E] $line"; done)
|
|
||||||
|
|
||||||
TEMP_DIR="/data/local/tmp/aln_patch"
|
|
||||||
|
|
||||||
# Note: this dir cannot be changed without recompiling radare2 because this prefix are hardcoded inside the radare2 binaries: /data/local/tmp/aln_unzip/org.radare.radare2installer/radare2/
|
|
||||||
UNZIP_DIR="/data/local/tmp/aln_unzip"
|
|
||||||
SOURCE_FILE=""
|
|
||||||
LIBRARY_NAME=""
|
|
||||||
APEX_DIR=false
|
|
||||||
|
|
||||||
# Clean things up if the script crashes or exits
|
|
||||||
trap 'rm -rf "$TEMP_DIR" "$UNZIP_DIR"' EXIT INT TERM
|
|
||||||
|
|
||||||
# https://github.com/Magisk-Modules-Repo/busybox-ndk/blob/master/busybox-arm64
|
|
||||||
BUSYBOX="$UNZIP_DIR/busybox/busybox-arm64"
|
|
||||||
XZ="$UNZIP_DIR/busybox/xz"
|
|
||||||
|
|
||||||
rm -rf "$TEMP_DIR" "$UNZIP_DIR"
|
|
||||||
mkdir -p "$TEMP_DIR" "$UNZIP_DIR"
|
|
||||||
|
|
||||||
# Manually extract the $ZIPFILE to a temporary directory
|
|
||||||
ui_print "Extracting module files..."
|
|
||||||
unzip -d "$UNZIP_DIR" -oq "$ZIPFILE" || {
|
|
||||||
ui_print "Error: Failed to extract module files."
|
|
||||||
abort "Failed to unzip $ZIPFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
set_perm "$BUSYBOX" 0 0 755
|
|
||||||
set_perm "$XZ" 0 0 755
|
|
||||||
|
|
||||||
# The bundled radare2 is a custom build that works without Termux: https://github.com/devnoname120/radare2/releases/tag/5.9.8-android-aln
|
|
||||||
ui_print "Extracting radare2 to /data/local/tmp/aln_unzip..."
|
|
||||||
$BUSYBOX tar xf "$UNZIP_DIR/radare2-5.9.9-android-aarch64-aln.tar.gz" -C / || {
|
|
||||||
abort "Failed to extract "$UNZIP_DIR/radare2-5.9.9-android-aarch64-aln.tar.gz"."
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if [ "$(uname -m)" = "aarch64" ]; then
|
|
||||||
export LD_LIBRARY_PATH="$UNZIP_DIR/org.radare.radare2installer/radare2/lib:$LD_LIBRARY_PATH"
|
|
||||||
export PATH="$UNZIP_DIR/org.radare.radare2installer/radare2/bin:$PATH"
|
|
||||||
export PATH="$UNZIP_DIR/busybox:$PATH"
|
|
||||||
export RABIN2="$UNZIP_DIR/org.radare.radare2installer/radare2/bin/rabin2"
|
|
||||||
export RADARE2="$UNZIP_DIR/org.radare.radare2installer/radare2/bin/radare2"
|
|
||||||
else
|
|
||||||
abort "arm64 archicture required, arm32 not supported"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_perm "$RABIN2" 0 0 755
|
|
||||||
set_perm "$RADARE2" 0 0 755
|
|
||||||
|
|
||||||
if [ -f "$RABIN2" ]; then
|
|
||||||
ui_print "rabin2 binary is ready."
|
|
||||||
else
|
|
||||||
ui_print "Error: rabin2 binary not found."
|
|
||||||
abort "rabin2 binary not found."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$RADARE2" ]; then
|
|
||||||
ui_print "radare2 binary is ready."
|
|
||||||
else
|
|
||||||
ui_print "Error: radare2 binary not found."
|
|
||||||
abort "radare2 binary not found."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$BUSYBOX" ]; then
|
|
||||||
ui_print "busybox binary is ready."
|
|
||||||
else
|
|
||||||
ui_print "Error: busybox binary not found."
|
|
||||||
abort "busybox binary not found."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$XZ" ]; then
|
|
||||||
ui_print "xz shim is ready."
|
|
||||||
else
|
|
||||||
ui_print "Error: xz shim not found."
|
|
||||||
abort "xz shim not found."
|
|
||||||
fi
|
|
||||||
|
|
||||||
for lib_path in \
|
|
||||||
"/apex/com.android.btservices/lib64/libbluetooth_jni.so" \
|
|
||||||
"/system/lib64/libbluetooth_jni.so" \
|
|
||||||
"/system/lib64/libbluetooth_qti.so" \
|
|
||||||
"/system_ext/lib64/libbluetooth_qti.so"; do
|
|
||||||
if [ -f "$lib_path" ]; then
|
|
||||||
ui_print "Detected library: $lib_path"
|
|
||||||
[ -z "$SOURCE_FILE" ] && SOURCE_FILE="$lib_path"
|
|
||||||
[ -z "$LIBRARY_NAME" ] && LIBRARY_NAME="$(basename "$lib_path")"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
[ -z "$SOURCE_FILE" ] && {
|
|
||||||
ui_print "Error: No target library found."
|
|
||||||
abort "No target library found."
|
|
||||||
}
|
|
||||||
|
|
||||||
if echo "$LIBRARY_NAME" | grep -q "qti"; then
|
|
||||||
ui_print "ERROR: \"qti\" Bluetooth libraries are NOT supported by the patcher and you won't be able to use aln. Aborting..."
|
|
||||||
abort "Bluetooth driver not compatible."
|
|
||||||
fi
|
|
||||||
|
|
||||||
ui_print "Calculating patch addresses for $SOURCE_FILE..."
|
|
||||||
|
|
||||||
# export R2_LIBDIR="$UNZIP_DIR/radare2-android/libs/arm64-v8a"
|
|
||||||
# export R2_BINDIR="$UNZIP_DIR/radare2-android/bin/arm64-v8a"
|
|
||||||
|
|
||||||
# $RADARE2 -H 1>&2
|
|
||||||
|
|
||||||
# ldd $RABIN2 1>&2
|
|
||||||
# ldd $RADARE2 1>&2
|
|
||||||
|
|
||||||
symbols="$($RABIN2 -q -E "$SOURCE_FILE")" || abort "Failed to extract symbols from $SOURCE_FILE."
|
|
||||||
|
|
||||||
get_symbol_address() {
|
|
||||||
symb_address=$(echo "$symbols" | grep "$1" | cut -d ' ' -f1 | tr -d '\n')
|
|
||||||
[ -n "$symb_address" ] || abort "Failed to obtain address for symbol $1"
|
|
||||||
echo "$symb_address"
|
|
||||||
}
|
|
||||||
|
|
||||||
l2c_fcr_chk_chan_modes_address="$(get_symbol_address 'l2c_fcr_chk_chan_modes')"
|
|
||||||
ui_print " l2c_fcr_chk_chan_modes_address=$l2c_fcr_chk_chan_modes_address"
|
|
||||||
|
|
||||||
l2cu_send_peer_info_req_address="$(get_symbol_address 'l2cu_send_peer_info_req')"
|
|
||||||
ui_print " l2cu_send_peer_info_req_address=$l2cu_send_peer_info_req_address"
|
|
||||||
|
|
||||||
|
|
||||||
cp "$SOURCE_FILE" "$TEMP_DIR"
|
|
||||||
|
|
||||||
ui_print "Patching $LIBRARY_NAME..."
|
|
||||||
|
|
||||||
apply_patch() {
|
|
||||||
$RADARE2 -q -e bin.cache=true -w -c "s $1; wx $2; wci" "$TEMP_DIR/$LIBRARY_NAME" || abort "Failed to apply $1 patch."
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_patch "$l2c_fcr_chk_chan_modes_address" "20008052c0035fd6"
|
|
||||||
apply_patch "$l2cu_send_peer_info_req_address" "c0035fd6"
|
|
||||||
|
|
||||||
if [ -f "$TEMP_DIR/$LIBRARY_NAME" ]; then
|
|
||||||
ui_print "Installing patched file..."
|
|
||||||
|
|
||||||
if echo "$SOURCE_FILE" | grep -q "/system/lib64"; then
|
|
||||||
TARGET_DIR="$MODPATH/system/lib64"
|
|
||||||
elif echo "$SOURCE_FILE" | grep -q "/apex/"; then
|
|
||||||
TARGET_DIR="$MODPATH/system/lib64"
|
|
||||||
APEX_DIR=true
|
|
||||||
else
|
|
||||||
TARGET_DIR="$MODPATH/system/lib"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$TARGET_DIR"
|
|
||||||
|
|
||||||
cp "$TEMP_DIR/$LIBRARY_NAME" "$TARGET_DIR/$LIBRARY_NAME"
|
|
||||||
set_perm "$TARGET_DIR/$LIBRARY_NAME" 0 0 644
|
|
||||||
ui_print "Patched file installed at $TARGET_DIR/$LIBRARY_NAME"
|
|
||||||
|
|
||||||
if [ "$APEX_DIR" = true ]; then
|
|
||||||
POST_DATA_FS_SCRIPT="$MODPATH/post-data-fs.sh"
|
|
||||||
APEX_LIB_DIR="/apex/com.android.btservices/lib64"
|
|
||||||
MOD_APEX_LIB_DIR="$MODPATH/apex/com.android.btservices/lib64"
|
|
||||||
WORK_DIR="$MODPATH/apex/com.android.btservices/work"
|
|
||||||
|
|
||||||
mkdir -p "$MOD_APEX_LIB_DIR" "$WORK_DIR"
|
|
||||||
|
|
||||||
cp "$TEMP_DIR/$LIBRARY_NAME" "$MOD_APEX_LIB_DIR/$LIBRARY_NAME"
|
|
||||||
set_perm "$MOD_APEX_LIB_DIR/$LIBRARY_NAME" 0 0 644
|
|
||||||
|
|
||||||
cat <<EOF > "$POST_DATA_FS_SCRIPT"
|
|
||||||
#!/system/bin/sh
|
|
||||||
mount -t overlay overlay -o lowerdir=$APEX_LIB_DIR,upperdir=$MOD_APEX_LIB_DIR,workdir=$WORK_DIR $APEX_LIB_DIR
|
|
||||||
EOF
|
|
||||||
|
|
||||||
set_perm "$POST_DATA_FS_SCRIPT" 0 0 755
|
|
||||||
ui_print "Created script for apex library handling."
|
|
||||||
ui_print "You can now restart your device and test aln!"
|
|
||||||
ui_print "Note: If your Bluetooth doesn't work anymore after restarting, then uninstall this module and report the issue at the link below."
|
|
||||||
ui_print "https://github.com/kavishdevar/librepods/issues/new"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
ui_print "Error: patched file missing."
|
|
||||||
rm -rf "$TEMP_DIR" "$UNZIP_DIR"
|
|
||||||
abort "Failed to patch the library."
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf "$TEMP_DIR" "$UNZIP_DIR"
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
id=btl2capfix
|
|
||||||
name=Bluetooth L2CAP workaround for AirPods
|
|
||||||
version=v3
|
|
||||||
versionCode=3
|
|
||||||
author=@devnoname120 and @kavishdevar
|
|
||||||
description=Fixes the Bluetooth L2CAP connection issue with AirPods
|
|
||||||
updateJson=https://raw.githubusercontent.com/kavishdevar/librepods/main/update.json
|
|
||||||
Reference in New Issue
Block a user