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 消息。
我一直在做 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 消息。