Как перехватить системные вызовы моего приложения для Android (устройство без рута)

Я пытаюсь перехватить все системные вызовы, сделанные моим 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);

person John A.    schedule 03.05.2014    source источник
comment
Мне нужно решение точно такого же вопроса.   -  person Roshan Mehta    schedule 04.06.2014
comment
@Джон, у тебя есть какой-нибудь рабочий подход?   -  person Indra Yadav    schedule 27.06.2014
comment
@IndraYadav Нет, не видел. К сожалению, я не получил никаких новых предложений, которые я мог бы попробовать. Возможно, при положительном голосовании этот вопрос привлечет больше внимания.   -  person John A.    schedule 05.07.2014
comment
Привет, попробовал ваше предложение, но я не могу заставить его работать. См. подробный запрос здесь   -  person Jai Pandit    schedule 25.11.2014


Ответы (2)


Вот как вы можете перехватывать системные вызовы на Android без рута разрешения (конечно, работает только для вашего собственного процесса, это не распространяется на всю систему).

person Simone Margaritelli    schedule 23.05.2014
comment
Да, это на самом деле именно то, что я искал. К сожалению, мое приложение всегда падает при попытке запустить код. Я пытался связаться с владельцем блога, но безуспешно. - person John A.; 10.06.2014
comment
Этот код блога не работает в ОС Android 6.0. Участник Linker.h является закрытым в ОС 6.0. Любое обходное решение, пожалуйста, дайте мне знать. Я спрашиваю владельца этого блога, но нет ответа. - person d.k.; 27.10.2015