Я проводил Лабораторию Root для устройств 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. Лаборатория использует Android 7.1. Если я запускаю программу в режиме root после запуска Android, появляется файл, поэтому это похоже на проблему с разрешениями, но лаборатория собирается получить разрешения root с помощью этой программы, так что я действительно запутался.
Кто-нибудь видит, в чем здесь проблема? App_process не работает как root?
Заранее спасибо.