Я пытаюсь перехватить все системные вызовы, сделанные моим Android-приложением на нерутированном устройстве.
Поэтому каждый раз, когда мое приложение записывает/читает файл, я хочу перехватить системный вызов и зашифровать/расшифровать поток в целях безопасности. С шифрованием проблем нет, но как перехватить системные вызовы?
Поскольку части приложения представляют собой модули, разработанные сторонними поставщиками, исходный код которых я не могу изменить, нет другого способа обеспечить безопасное хранение данных.
Поскольку у меня нет корневого доступа, я не могу получить доступ к адресу таблицы системных вызовов, как описано здесь и я не могу сделать это через модуль LKM, а также.
Буду признателен за любые предложения, спасибо.
Редактировать:
Хорошо, я получил кодовую ссылку от Симоне Маргарителли, чтобы она работала! причина, по которой мой код продолжал падать, заключается в том, что мне нужно было установить правильные права доступа к памяти:
uint32_t page_size = getpagesize();
uint32_t entry_page_start = reloc& (~(page_size - 1));
mprotect((uint32_t *)entry_page_start, page_size, PROT_READ | PROT_WRITE);