remove mkshrc

This commit is contained in:
hyugogirubato 2024-04-21 16:34:02 +02:00
parent 56a2e0ea45
commit 1d2d1b356d
2 changed files with 0 additions and 244 deletions

View File

@ -1,83 +0,0 @@
# mkshrc - Advanced Shell Environment for Android
`mkshrc` is a script designed to enhance the shell environment on Android devices. It sets up a customized environment with advanced command line tools and utilities, improving the overall user experience for shell interaction, especially for developers and power users who need more robust tools than what the default Android shell offers.
## Features
- **Environment Customization**: Sets HOSTNAME, USER, LOGNAME, and TMPDIR environment variables based on the device properties.
- **Architecture Detection**: Automatically detects the device's CPU architecture to download appropriate binaries.
- **BusyBox Integration**: Downloads and aliases BusyBox utilities, providing a wide range of standard Unix tools missing from standard Android shells.
- **Frida Server Management**: Simplifies the installation and management of Frida, a dynamic instrumentation toolkit, for non-rooted environments without Magisk.
- **Enhanced Command Aliases**: Includes aliases for color support in command output and common command shortcuts to improve usability.
- **Custom Commands**: Includes custom functions such as `tree`, `cfind`, `man`, and `sudo`, enhancing the functionality available in a typical Android shell.
- **Dynamic Frida Control**: Allows starting, stopping, and checking the status of the Frida server directly from the shell.
## Requirements
- **Root Access**: Needed for certain operations like setting certain environment variables or running commands as superuser.
- **BusyBox**: Required for most of the enhanced commands and utilities.
- **Internet Connection**: Needed to download necessary binaries like BusyBox and Frida.
- **ADB Setup**: ADB must be set up on your computer to push the script to your Android device.
## Installation
1. **Push the Script to Your Device**:
Use ADB to push the `mkshrc` script to your device. Open your terminal or command prompt and run:
```bash
adb push mkshrc /data/local/tmp/mkshrc
```
2. **Access Your Device via ADB**:
Connect to your device shell using ADB:
```bash
adb shell
```
3. **Gain Superuser Access**:
If your device is rooted, you may need to switch to the superuser mode to allow the script to perform operations that require root privileges:
```bash
su
```
4. **Navigate to the Script Location**:
Change directory to where the script is located:
```bash
cd /data/local/tmp
```
5. **Source the Script**:
To apply the enhancements provided by `mkshrc`, you need to source it in the current shell session:
```bash
source mkshrc
```
**Note**: The `source` command needs to be run in each new shell session where you want the enhancements to be active.
## Additional Functions
- **`tree`**: Display a directory tree of the current or specified directory.
- **`cfind`**: Custom find command that outputs results with color support if available.
- **`man`**: Simulates the man command for built-in shell commands by showing command help.
- **`sudo`**: Function that tries to elevate privileges using `su` if not running as root.
## Usage Notes
## Usage Notes
Due to the nature of the default Android shell, typical initialization files like `.bashrc` or `.profile` do not exist. To ensure the enhancements and functions provided by `mkshrc` are available across all shell sessions, you need to manually source the script each time you open a new shell session. Here's how you can do it:
```bash
source /data/local/tmp/mkshrc
```
If you frequently use the shell on your Android device and want to automate the sourcing process, consider adding the source command to the shell's startup commands. This can often be achieved by modifying the shell's startup script if your device's shell environment allows it. For example, if using Termux or a similar terminal emulator app, you might be able to add the source command to its initialization script.
Another approach is to create a shortcut command that you can easily type upon starting a shell session. For instance:
```bash
alias startenv="source /data/local/tmp/mkshrc"
```
Then, whenever you start a new shell session, you simply type `startenv` to initialize your environment with `mkshrc` enhancements.
This setup script is designed to make the shell experience on Android more powerful and user-friendly, particularly for developers and power users who require advanced command-line tools and functionality. Enjoy the improved productivity and enhanced capabilities that `mkshrc` brings to your Android device!

View File

@ -1,161 +0,0 @@
#!/system/bin/sh
# ==UserScript==
# @name mkshrc
# @namespace https://github.com/hyugogirubato/KeyDive
# @version 2024.04.21
# @description Make an advanced shell environment for Android devices
# @author hyugogirubato
# @match Android
# ==/UserScript==
# Set environment variables based on device properties
export HOSTNAME=$(getprop ro.boot.serialno)
export USER=$(id -u -n)
export LOGNAME=$USER
export TMPDIR=${TMPDIR:-/data/local/tmp}
# Find the architecture of the Android device using CPU ABI
find_arch() {
# Source: https://github.com/Magisk-Modules-Repo/busybox-ndk/blob/master/customize.sh#L314C1-L334C2
local abi=$(getprop ro.product.cpu.abi)
case $abi in
arm64*) ARCH='arm64' ;;
arm*) ARCH='arm' ;;
x86_64*) ARCH='x86_64' ;;
x86*) ARCH='x86' ;;
mips64*) ARCH='mips64' ;;
mips*) ARCH='mips' ;;
*) echo "Unknown architecture: $abi" >&2; return 1 ;;
esac
}
# Initialize the architecture
find_arch
# Define and verify the path to the BusyBox binary
busybox='/sbin/.magisk/busybox/busybox'
if [ ! -f "$busybox" ]; then
busybox="$TMPDIR/busybox"
# Source: https://github.com/Magisk-Modules-Repo/busybox-ndk
url="https://raw.githubusercontent.com/Magisk-Modules-Repo/busybox-ndk/master/busybox-$ARCH"
[ -f '/sys/fs/selinux/enforce' ] && url+='-selinux'
curl -fs -o "$busybox" "$url" || { echo "Failed to download BusyBox from $url" >&2; return 1; }
# Ensure BusyBox binary is executable
chmod 755 "$busybox"
chown shell:shell "$busybox"
fi
# Create aliases for BusyBox commands
for bin in $($busybox --list); do
if [ "$bin" != 'man' ]; then
alias "$bin"="$busybox $bin" 2>/dev/null
fi
done
# Handle Frida installation if Magisk is not installed
if [ ! -d '/sbin/.magisk/' ]; then
frida="$TMPDIR/frida-server"
if [ ! -f "$frida" ]; then
# Source: https://github.com/frida/frida
version='16.2.1'
url="https://github.com/frida/frida/releases/download/$version/frida-server-$version-android-$ARCH.xz"
curl -fsL -o "$frida.xz" "$url" || { echo "Failed to download Frida from $url" >&2; return 1; }
$busybox xz -d "$frida.xz"
fi
# Ensure Frida binary is executable
chmod 755 "$frida"
chown shell:shell "$frida"
alias 'frida-server'="$frida"
elif [ ! -d '/sbin/.magisk/modules/magisk-frida' ]; then
echo 'Install Frida using: https://github.com/ViRb3/magisk-frida'
fi
# Enhance command output with color support if available
if ls --color=auto >/dev/null 2>&1; then
alias ls='ls --color=always'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias logcat='logcat -v color'
alias ip='ip -c'
fi
# Define commonly used aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ipa='ip a'
alias rm='rm -rf'
# Display directory tree
tree() {
# Source: https://stackoverflow.com/questions/18014779/similar-command-to-linux-tree-command-in-adb-shell
find "${1:-.}" -print | sort | sed 's;[^/]*/;|---;g;s;---|; |;g'
}
# Custom find command that displays colored results
cfind() {
if ls --color=auto >/dev/null 2>&1; then
find "${1:-.}" -print0 | xargs -0 ls -d1 --color=auto
else
echo 'Unsupported XTerm environment' >&2; return 1
fi
}
# Simulate 'man' command
man() {
[ -z "$1" ] && { echo -e "What manual page do you want?\nFor example, try 'man ls'." >&2; return 1; }
"$1" --help
}
# Define a sudo-like function
sudo() {
if [ "$(id -u)" -eq 0 ]; then
"$@"
elif command -v su >/dev/null 2>&1; then
su -c "$*"
else
echo 'su binary not found' >&2; return 127
fi
}
# Stop frida-server if it's running without Magisk
frida-stop() {
if [ -d '/sbin/.magisk/' ]; then
echo 'Use Magisk to stop Frida' >&2; return 1
else
local pid=$(pgrep -f frida-server)
if [ ! -z "$pid" ]; then
sudo kill -9 $pid || { echo 'Failed to stop Frida' >&2; return 1; }
fi
fi
}
# Check the status of the frida-server
frida-status() {
local pid=$(pgrep -f frida-server)
[ -z "$pid" ] && echo 'Frida not running' || echo "Frida PID: $pid"
}
# Start frida-server if it's not already running and Magisk is not installed
frida-start() {
local pid=$(pgrep -f frida-server)
if [ -z "$pid" ]; then
if [ -d '/sbin/.magisk/' ]; then
echo 'Use Magisk to start Frida' >&2; return 1
else
command -v setenforce >/dev/null 2>&1 && sudo setenforce 0 >/dev/null 2>&1
sudo frida-server -D "$@" || { echo 'Failed to start Frida' >&2; return 1; }
fi
else
echo 'Frida already running'
fi
}