139 lines
3.7 KiB
Bash
Executable File
139 lines
3.7 KiB
Bash
Executable File
#!/system/bin/sh
|
||
MODDIR=${0%/*}
|
||
|
||
# 确保路径定义
|
||
export PATH=/system/bin:/system/xbin:$PATH
|
||
|
||
# 定义日志函数
|
||
log() {
|
||
echo "[MyInjector] $(date '+%Y-%m-%d %H:%M:%S') $1" >> /data/local/tmp/myinjector_install.log
|
||
}
|
||
|
||
# APK 文件路径
|
||
APK_PATH="$MODDIR/configapp.apk"
|
||
|
||
# 检查 APK 是否存在
|
||
if [ ! -f "$APK_PATH" ]; then
|
||
log "APK 文件不存在: $APK_PATH"
|
||
exit 1
|
||
fi
|
||
|
||
# 等待系统完全启动
|
||
log "等待系统启动完成"
|
||
while [ "$(getprop sys.boot_completed)" != "1" ]; do
|
||
sleep 1
|
||
done
|
||
sleep 5 # 额外等待,确保服务启动完成
|
||
|
||
# 检查 pm 是否可用
|
||
log "检查 pm 命令状态"
|
||
while ! pm list packages >/dev/null 2>&1; do
|
||
sleep 1
|
||
done
|
||
|
||
# 检查是否已安装
|
||
INSTALLED=$(pm list packages com.jiqiu.configapp 2>/dev/null)
|
||
if [ -n "$INSTALLED" ]; then
|
||
log "ConfigApp 已安装,检查版本"
|
||
# 可以在这里添加版本检查逻辑
|
||
else
|
||
log "ConfigApp 未安装,开始安装"
|
||
fi
|
||
|
||
# 获取系统版本
|
||
SDK_VERSION=$(getprop ro.build.version.sdk)
|
||
log "检测到系统版本: SDK $SDK_VERSION"
|
||
|
||
# 根据系统版本选择安装方法
|
||
if [ "$SDK_VERSION" -ge 29 ]; then
|
||
# 高版本 Android(SDK >= 29)
|
||
log "使用高版本安装逻辑"
|
||
{
|
||
INSTALL_SESSION=$(pm install-create -r)
|
||
if [ $? -ne 0 ]; then
|
||
log "创建安装会话失败"
|
||
exit 1
|
||
fi
|
||
log "安装会话创建成功: $INSTALL_SESSION"
|
||
|
||
pm install-write "$INSTALL_SESSION" 0 "$APK_PATH"
|
||
if [ $? -ne 0 ]; then
|
||
log "写入 APK 文件失败"
|
||
log "降级,使用低版本安装逻辑"
|
||
pm install -r "$APK_PATH" >> /data/local/tmp/myinjector_install.log 2>&1
|
||
if [ $? -ne 0 ]; then
|
||
log "APK 安装失败"
|
||
exit 1
|
||
fi
|
||
log "APK 安装完成"
|
||
exit 0
|
||
fi
|
||
log "APK 写入成功"
|
||
|
||
pm install-commit "$INSTALL_SESSION"
|
||
if [ $? -ne 0 ]; then
|
||
log "提交安装会话失败"
|
||
exit 1
|
||
fi
|
||
log "APK 安装完成"
|
||
} >> /data/local/tmp/myinjector_install.log 2>&1
|
||
else
|
||
# 低版本 Android(SDK < 29)
|
||
log "使用低版本安装逻辑"
|
||
pm install -r "$APK_PATH" >> /data/local/tmp/myinjector_install.log 2>&1
|
||
if [ $? -ne 0 ]; then
|
||
log "APK 安装失败"
|
||
exit 1
|
||
fi
|
||
log "APK 安装完成"
|
||
fi
|
||
|
||
# 确保模块目录权限正确
|
||
chmod -R 755 /data/adb/modules/zygisk-myinjector
|
||
chown -R root:root /data/adb/modules/zygisk-myinjector
|
||
|
||
log "ConfigApp 安装脚本执行完成"
|
||
|
||
# ==================== KPM 模块加载 ====================
|
||
|
||
# KPM 模块路径
|
||
KPM_MODULE="$MODDIR/injectHide.kpm"
|
||
KPM_CONFIG="/data/local/tmp/kpm_hide_config.txt"
|
||
|
||
log "开始加载 KPM 内核模块"
|
||
|
||
# 检查 KPM 模块文件是否存在
|
||
if [ ! -f "$KPM_MODULE" ]; then
|
||
log "KPM 模块文件不存在: $KPM_MODULE"
|
||
else
|
||
log "找到 KPM 模块文件: $KPM_MODULE"
|
||
|
||
# 创建初始配置文件(如果不存在)
|
||
if [ ! -f "$KPM_CONFIG" ]; then
|
||
log "创建初始 KPM 配置文件"
|
||
# 确保 /data/local/tmp 目录存在且权限正确
|
||
mkdir -p /data/local/tmp
|
||
chmod 777 /data/local/tmp
|
||
echo "libmyinjector.so" > "$KPM_CONFIG"
|
||
chmod 666 "$KPM_CONFIG"
|
||
fi
|
||
|
||
# 等待一段时间确保系统稳定
|
||
sleep 3
|
||
|
||
# 加载 KPM 模块
|
||
log "正在加载 KPM 模块..."
|
||
insmod "$KPM_MODULE" 2>&1 | while read line; do
|
||
log "insmod: $line"
|
||
done
|
||
|
||
# 检查模块是否加载成功
|
||
if lsmod | grep -q "hideInject"; then
|
||
log "KPM 模块加载成功!"
|
||
else
|
||
log "KPM 模块加载失败,请检查日志"
|
||
fi
|
||
fi
|
||
|
||
# 脚本完成
|
||
exit 0 |