我一直在做 SEED Android Device Rooting Lab 以了解更多关于 Android Root 的知识,到目前为止进展顺利。
但是我在尝试通过将 app_process 程序切换为由我编写的程序以 root 身份执行代码时遇到了一个问题,该程序只是将一个虚拟文件写入 /system 目录并执行真正的 app_process64。
我遇到的问题是使用此代码,没有创建虚拟文件。我用 NDK 编译了这段代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
extern char** environ;
int main(int argc, char** argv) {
//Write the dummy file
FILE* f = fopen("/system/dummy2", "w");
if (f == NULL) {
printf("Permission Denied.\n");
exit(EXIT_FAILURE);
}
fclose(f);
//Launch the original binary
char* cmd = "/system/bin/app_process_original";
execve(cmd, argv, environ);
//execve() returns only if it fails
return EXIT_FAILURE;
}
我不太明白为什么它不起作用。我的文件结构如下: 名称为 app_process 的符号链接指向该程序,一个名为 app_process_original 的符号链接指向必须运行的 app_process64。
系统照常启动,但文件未显示。我认为 app_process 没有以 root 身份运行。实验室使用 Android 7.1。如果我在Android启动后在root下执行程序,就会出现文件,所以看起来是权限问题,但实验室是通过这个程序获取root权限,所以我真的很困惑。
有谁看到这里有什么问题?app_process 不是以 root 身份运行的吗?
先感谢您。