app_process 无法在 /system 中创建文件 - SEED Android 设备 Rooting 实验室

app_process can't create file in /system - SEED Android Device Rooting Lab

我一直在做 SEED Android 设备 Rooting 实验室,以更多地了解 Android Rooting,目前进展顺利。

但是当我尝试通过将 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 不是 运行ning 作为 root。本实验室使用 Android 7.1。如果我在Android启动后在root下执行程序,就会出现文件,所以这似乎是权限问题,但是实验室是通过这个程序获取root权限,所以我很困惑。

有人看到这里有什么问题吗? app_process 不是 运行ning 作为 root 吗?

提前致谢。

/system 通常以只读方式挂载。即使它是可写的,SELinux 也可能不允许您的进程写入该文件。

您应该尝试找出真正阻止您的进程创建该文件的原因:

  • 检查 /system 是否可以用 adb shell mount 写入。
  • 通过用 strerror(errno) 计算 errno 来检查错误消息。
  • 使用 adb logcat | grep avc 检查 SELinux 消息。