app_process无法在 /system 中创建文件 - SEED 安卓设备生根实验室



我一直在做SEED Android设备生根实验室,以了解更多关于Android生根的信息,到目前为止进展顺利。

但是,当我试图以root身份执行代码时,我遇到了一个问题,将app_process程序切换为我编码的程序,该程序只需将一个伪文件写入/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身份运行。实验室使用安卓7.1。如果我在Android启动后在root下执行程序,文件就会出现,所以这似乎是一个权限问题,但实验室是关于通过这个程序获取root权限的,所以我真的很困惑。

有人看到这里出了什么问题吗?app_process是否未以root身份运行?

提前谢谢。

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

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

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

最新更新