解决方案:Superuser.apk 授权失败问题
一、问题描述
用户尝试通过 Motochopper
脚本(用于 Android 设备的 Linux/OSX 版)对三星 Galaxy Fame GT-S681OP 的设备进行 root 处理。在执行脚本的某个步骤时,遇到异常退出的问题。具体表现为:
- 在/rooting手机的部分,“Pushing exploit…”、“Pushing root tools…” 和 “Rooting phone …” 部分均按预期完成。
- 但在“Cleaning up”的过程中,即尝试删除 tmp 目录下的相关文件(pwn、su、busybox)时出现错误信息。
二、具体问题分析
根据输出日志与提供的 run.sh
脚本内容如下:
$adb shell /data/local/tmp/pwn
该命令执行失败,导致后续清理步骤被中断。原因可能有两个方面:
1. 权限问题:尽管上一步 chmod 755
赋予了 /data/local/tmp/pwn
可执行权限,并且脚本中也使用了此路径进行操作(如 adb push pwn /data/local/tmp/
),但在 shell 命令层面,有可能因设备本身或其他未知因素限制了对该文件的调用。
2. pwn 文件问题:可能存在 pwn
文件的内容存在致命错误或者在设备上运行不兼容。例如,在特定版本或定制化 ROM 上,某些预构建脚本可能未针对当前环境做出正确适配。
三、解决方案
-
验证文件执行性:
- 在连接设备后,尝试直接在终端进行权限提升相关命令的执行(类似于
adb shell
所用的一系列指令),以确认run.sh
脚本中涉及的所有内容是否在当前环境下皆有效。
- 在连接设备后,尝试直接在终端进行权限提升相关命令的执行(类似于
-
检查pwn脚本文件内容或重新生成:
- 如果
pwn
文件是由外部分配,则应重新获取其正确版本。或者直接从互联网资源抓取最新的适用于 4.1.2 版本的系统,验证其兼容性。
- 如果
-
简化操作流程:
- 可以尝试将整个过程手动在设备上执行一次,并记录每一步输出信息,用以缩小问题的范围。
-
修改脚本处理异常情况:
- 为了更加健壮地应对可能出现的问题,在代码中加入适当的异常捕获或重试机制以减少手动干预。
四、代码修订建议
针对上述问题点,可以对原 run.sh
脚本做一些调整如下:
$adb shell /data/local/tmp/pwn
if [ $? -ne 0 ]; then
echo "[-] Error encountered during rooting process."
exit 1
fi
echo "[$*] Cleaning up..."
$adb shell rm /data/local/tmp/pwn &> /dev/null || true
$adb shell rm /data/local/tmp/su &> /dev/null || true
$adb shell rm /data/local/tmp/busybox &> /dev/null || true
$adb reboot
上述修订主要是添加了一个检查以确保pwn
执行成功后才会进行文件清理步骤,并且添加了错误输出重定向及异常捕获。
五、总结
综上所述,通过以上措施可以有效识别并解决此阶段遇到的授权失败问题。建议进一步细化每次命令执行后的状态反馈机制,以便快速定位具体故障点,并确保各部分命令均在设备侧正确运行后再继续后续操作。
正文完