Подмена файла на xiaomi - avc: denied

Создал драйвер новый, который я обнаружил на телефоне "/system/vendor/lib/hw/vendor.mediatek.hardware.camera.lomoeffect@1.0-impl.so". Как я понял он отвечает за видео-поток камеры. Создал через c++ файл на андроид студио. Которые создаёт такой же файл, опять таки теоретически) Но проверить не могу, так как файл не даёт мне подменить даже с флагом "setenforce 0".

Из вводный телефон рутирован, приложение доступе суперюзер.

Создал отдельный метод который будет проверять успешность подмены камеры, проверяя его дату:

extern "C" JNIEXPORT jlong JNICALL
Java_com_example_rtmpstreamchanger_MainActivity_checkFileModificationDateNative(JNIEnv* env, jobject thiz, jstring filePath) {
    const char *path = env->GetStringUTFChars(filePath, nullptr);

    int result = system("su -c 'setenforce 0'");
    if (result != 0) {
        ALOGE("Failed to set SELinux to permissive mode, result: %d", result);
    } else {
        ALOGI("SELinux set to permissive mode successfully.");
    }

    struct stat attrib;
    if (stat(path, &attrib) == -1) {
        ALOGE("Error accessing file: %s. Error: %s", path, strerror(errno));
        env->ReleaseStringUTFChars(filePath, path);
        result = system("su -c 'setenforce 0'");
        if (result != 0) {
            ALOGE("Failed to set SELinux back to enforcing mode, result: %d", result);
        } else {
            ALOGI("SELinux set back to enforcing mode successfully.");
        }
        return (jlong)0;
    }

    ALOGI("File modification time for %s is %ld", path, (long)attrib.st_mtime);

    env->ReleaseStringUTFChars(filePath, path);
    result = system("su -c 'setenforce 0'");
    if (result != 0) {
        ALOGE("Failed to set SELinux back to enforcing mode after operation, result: %d", result);
    } else {
        ALOGI("SELinux restored to enforcing mode after operation successfully.");
    }

    return (jlong)attrib.st_mtime;
}

Выдаёт такие логи:

2024-06-04 09:22:35.699  6561-6561  native-lib              com.example.rtmpstreamchanger        I  SELinux set to permissive mode successfully.
2024-06-04 09:22:35.699  6561-6561  native-lib              com.example.rtmpstreamchanger        I  File modification time for /system/vendor/lib/hw/vendor.mediatek.hardware.camera.lomoeffect@1.0-impl.so is 1230768000
2024-06-04 09:22:35.696  6561-6561  mpstreamchanger         com.example.rtmpstreamchanger        I  type=1400 audit(0.0:50863): avc: denied { getattr } for path="/vendor/lib/hw/vendor.mediatek.hardware.camera.lomoeffect@1.0-impl.so" dev="dm-4" ino=1202 scontext=u:r:untrusted_app:s0:c23,c257,c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=1 app=com.example.rtmpstreamchanger
2024-06-04 09:22:35.809  6561-6561  native-lib              com.example.rtmpstreamchanger        I  SELinux restored to enforcing mode after operation successfully.
2024-06-04 09:22:35.838  6561-6561  CameraLibPath           com.example.rtmpstreamchanger        I  Дата последнего изменения файла /system/vendor/lib/hw/vendor.mediatek.hardware.camera.lomoeffect@1.0-impl.so: Thu Jan 01 03:00:00 GMT+03:00 2009

То есть вижу флаг недостаточного доступа denied { getattr } А так же вижу дату видимо по умолчанию.

Вот как уже только не пробовал. Не понимаю почему не работает.


Ответы (0 шт):