Добавьте в приложение полную запись конфигурации Selinux.
Добавьте в приложение полную запись конфигурации Selinux.

В компании мало людей, и особенно не хватает студентов-разработчиков C. Я могу переместить их только туда, где это необходимо! Запишите полную конфигурацию системы Android, запустите приложение и настройте разрешения Selinux!

1. Добавьте приложение в каталог поставщика, скомпилируйте и сгенерируйте исполняемый файл test_abc в /system/bin/;

Я начал с обращения к модификациям в Интернете, но обнаружил, что исполняемый файл test_abc после компиляции не может быть упакован в /system/bin;

aaa@abc-0C:~/work/ATOS_Q/vendor/test cat Android.mkLOCAL_PATH := (call my-dir)PRODUCT_PACKAGES += \        test_abcinclude (call all-makefiles-under,(LOCAL_PATH))

Файлы в каталоге test_abc\:

Android.mk

test_abc.c

Файл Android.mk:

Язык кода:javascript
копировать
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
    test_abc.c

LOCAL_SHARED_LIBRARIES := \
    libcutils \
    libutils

LOCAL_C_INCLUDES += \
    bionic \

LOCAL_MODULE := test_abc
LOCAL_MODULE_TAGS := optional

LOCAL_MULTILIB := 64

include $(BUILD_EXECUTABLE)

В test_abc.c есть основной метод, который работает с файлами и сокетами;

Решение проблемы, связанной с невозможностью упаковать test_abc в путь system/bin, состоит в том, чтобы переместить весь путь test_abc в путь производителя qcom:

aaa@abc-0C:~/work/ATOS_Q/vendor/qcom/bonito/test_abc pwd/home1/gwb/work/ATOS_Q/vendor/qcom/bonito/test_abcaaa@abc-0C:~/work/ATOS_Q/vendor/qcom/bonito/test_abc lsAndroid.mk  test_abc.c  

     23 #lyz add for test      24 include vendor/xdja/test_abc/Android.mk

2. Добавьте определение разрешений test_abc:

aaa@abc-0C:~/work/ATOS_Q$ vi device/google/bonito-sepolicy/vendor/qcom/sdm710/file_contexts      60 #lyz add for test      61 /system/bin/test_abc u:object_r:test_abc_exec:s0

3. Добавьте автозагрузку и измените ./system/core/rootdir/init.rc.

#lyz add for test service test_abc /system/bin/test_abc     class main     oneshot     seclabel u:r:test_abc:s0

4. Добавьте файл:

aaa@abc-0C:~/work/ATOS_Q$ cat device/google/bonito-sepolicy/vendor/qcom/common/test_abc.te type test_abc, domain, coredomain; type test_abc_exec, file_type, system_file_type, exec_type; init_daemon_domain(test_abc)

5. Скомпилируйте и проверьте, проверьте журнал загрузки dmesg:

[    9.191761] init: cannot setexeccon('u:r:test_abc_exec:s0') for test_abc: Invalid argument

Проблема должна заключаться в том, что путь к test_abc.te неверен, из-за чего init не распознает метку «u:r:test_abc_exec:s0» при запуске.

Измените четвертый шаг, переместите файл test_abc.te по пути /device/google/bonito-sepolicy/private, перекомпилируйте версию, скачайте и запустите; aaa@xdja-0C:~/work/ATOS_Q/device/google/bonito-sepolicy/private$ pwd /home1/gwb/work/ATOS_Q/device/google/bonito-sepolicy/private

6. Проверьте журнал загрузки dmesg, и, наконец, появится ожидаемый журнал запретов:

    Line 2077: [    9.178268] type=1400 audit(258.270:14): avc: denied { dac_override } for comm="test_abc" capability=1 scontext=u:r:test_abc:s0 tcontext=u:r:test_abc:s0 tclass=capability permissive=0     Line 2078: [    9.178488] type=1400 audit(258.273:16): avc: denied { dac_override } for comm="test_abc" capability=1 scontext=u:r:test_abc:s0 tcontext=u:r:test_abc:s0 tclass=capability permissive=0 duplicate messages suppressed     Line 2079: [    9.178500] type=1400 audit(258.273:17): avc: denied { create } for comm="test_abc" scontext=u:r:test_abc:s0 tcontext=u:r:test_abc:s0 tclass=tcp_socket permissive=0     Line 2158: [    9.609626] type=1400 audit(258.273:17): avc: denied { create } for comm="test_abc" scontext=u:r:test_abc:s0 tcontext=u:r:test_abc:s0 tclass=tcp_socket permissive=0

7. Измените test_abc.te, добавив соответствующие разрешения для test_abc, скомпилируйте версию и повторите проверку:

#============= test_abc ==============

allow test_abc self:capability dac_override;

allow test_abc self:tcp_socket create;

8. Решите проблему, связанную с невозможностью рутирования /system:

E:\source\dual_os>adb root restarting adbd as root E:\source\dual_os>adb remount W Disabling verity for /system E Skipping /system W Disabling verity for /vendor E Skipping /vendor W Disabling verity for /product E Skipping /product W No partitions to remount /system/bin/remount exited with status 7 remount failed Ошибка корневого системного пути!

решать:

Сначала войдите в режим разработчика и включите опцию OEM.

Затем adb перезагрузите загрузчик

Затем прошивка fastboot и разблокировка

Затем fastboot getvar разблокируется

Ожидание результата обычно показывает «да». Если нет, возможно, Baidu придется решить проблему.

Затем перезапустите, затем adb root, adb Disable-Verity, затем перезапустите adb remount и вы сможете его смонтировать.

Не удалось перемонтировать adb, вы можете использовать diable-verity

C:\Users\li>adb disable-verity

verity is already disabled

using overlayfs

Now reboot your device for settings to take effect

E:\source\dual_os>adb root restarting adbd as root E:\source\dual_os>adb remount remount succeeded E:\source\dual_os>

E:\source\dual_os>adb push E:\source\dual_os\test_abc /system/bin 120 KB/s (11560 bytes in 0.093s) E:\source\dual_os>adb shell reboot E:\source\dual_os>

В Selinux много концепций, и их до сих пор очень сложно понять! И вам нужно иметь базовые знания о ядре Linux. Короче говоря, одно дело — открыть два канала Рена и Ду. Узнать больше всегда не вредно!

----------------------------------2021/12/09-----------------

Измените правило никогда не разрешать:

--- a/system/sepolicy/public/domain.te

+++ b/system/sepolicy/public/domain.te

@@ -1191,6 +1191,7 @@ neverallow {

   -init

   -runas

   -zygote

+  -abc_service

 } shell:process { transition dyntransition };

/system/sepolicy# cat public/abc_service.te

type abc_service, domain;

type abc_service_exec, system_file_type, exec_type, file_type;

system/sepolicy# cat private/abc_service.te

typeattribute  abc_service coredomain;

init_daemon_domain(abc_service)

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

modified:   prebuilts/api/29.0/private/file_contexts

modified:   prebuilts/api/29.0/public/domain.te

modified:   private/compat/26.0/26.0.ignore.cil

modified:   private/compat/27.0/27.0.ignore.cil

modified:   private/compat/28.0/28.0.ignore.cil

modified:   private/file_contexts

modified:   public/domain.te

Untracked files:

  (use "git add <file>..." to include in what will be committed)

prebuilts/api/29.0/private/abc_service.te

prebuilts/api/29.0/public/abc_service.te

private/abc_service.te

public/abc_service.te

--- a/system/sepolicy/private/compat/27.0/27.0.ignore.cil

+++ b/system/sepolicy/private/compat/27.0/27.0.ignore.cil

@@ -187,6 +187,8 @@

     wm_trace_data_file

     wpantund

     wpantund_exec

+    abc_service

+    abc_service_exec

     wpantund_service

     wpantund_tmpfs))

Ссылка:

https://source.android.google.cn/security/selinux/customize

https://www.cnblogs.com/schips/p/android_add_custom_service_when_system_init.html

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose