mirror of
https://github.com/okhsunrog/vpnhide.git
synced 2026-04-28 06:31:27 +00:00
Unified repository for the complete Android VPN-hiding stack: - zygisk/ — Rust Zygisk module (inline libc hooks via shadowhook) - lsposed/ — Kotlin LSPosed module (Java API + system_server hooks) - kmod/ — C kernel module (kretprobe hooks, invisible to anti-tamper) CI workflows use path filters to build only the changed component.
50 lines
1.4 KiB
Bash
Executable file
50 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Build the native library for aarch64 Android and package it into an
|
|
# installable KernelSU/Magisk module zip.
|
|
#
|
|
# Requirements:
|
|
# - rustup target aarch64-linux-android (already installed)
|
|
# - cargo-ndk
|
|
# - Android NDK at $ANDROID_NDK_HOME or auto-detected from $HOME/Android/Sdk/ndk/*
|
|
# - zip
|
|
|
|
set -euo pipefail
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$PROJECT_DIR"
|
|
|
|
# Auto-detect NDK if ANDROID_NDK_HOME isn't set
|
|
if [ -z "${ANDROID_NDK_HOME:-}" ]; then
|
|
ANDROID_NDK_HOME="$(find "$HOME/Android/Sdk/ndk" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sort -V | tail -1)"
|
|
fi
|
|
if [ -z "${ANDROID_NDK_HOME:-}" ] || [ ! -d "$ANDROID_NDK_HOME" ]; then
|
|
echo "error: ANDROID_NDK_HOME not set and no NDK found under ~/Android/Sdk/ndk" >&2
|
|
exit 1
|
|
fi
|
|
echo "Using NDK: $ANDROID_NDK_HOME"
|
|
export ANDROID_NDK_HOME
|
|
|
|
# Build the cdylib for arm64-v8a
|
|
cargo ndk -t arm64-v8a build --release
|
|
|
|
SO_SRC="target/aarch64-linux-android/release/libvpnhide_zygisk.so"
|
|
if [ ! -f "$SO_SRC" ]; then
|
|
echo "error: expected $SO_SRC after cargo ndk build, not found" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Assemble the module staging directory
|
|
STAGING="target/module-staging"
|
|
rm -rf "$STAGING"
|
|
cp -a module "$STAGING"
|
|
mkdir -p "$STAGING/zygisk"
|
|
cp "$SO_SRC" "$STAGING/zygisk/arm64-v8a.so"
|
|
|
|
# Zip it
|
|
OUT_ZIP="target/vpnhide-zygisk.zip"
|
|
rm -f "$OUT_ZIP"
|
|
(cd "$STAGING" && zip -qr "../../$OUT_ZIP" .)
|
|
|
|
echo
|
|
echo "Built: $OUT_ZIP"
|
|
ls -lh "$OUT_ZIP"
|