app_process не может создать файл в / system - SEED Android Lab Rooting Lab - PullRequest
0 голосов
/ 11 января 2020

Я проводил Лабораторию 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?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 января 2020

/system обычно устанавливается только для чтения. Даже если бы это было доступно для записи, SE Linux, вероятно, не позволил бы вашему процессу записать этот файл.

Вы должны попытаться выяснить, что на самом деле мешает процессу создать этот файл:

  • Проверьте, можно ли записать /system с помощью adb shell mount.
  • Проверьте сообщение об ошибке, оценив errno с помощью strerror(errno).
  • Проверьте сообщения SE Linux с помощью adb logcat | grep avc .
...