如何挂钩我的Android应用程序的系统调用(非root设备)

时间:2014-05-03 11:31:35

标签: android hook system-calls function-interposition library-interposition

我正在尝试拦截我的Android应用在非root设备上进行的所有系统调用。

因此,每当我的应用程序写入/读取文件时,我都会拦截系统调用并加密/解密流以用于安全目的。加密部分没问题,但我如何拦截系统调用?

由于应用程序的某些部分是由第三方提供商开发的模块,我无法更改源代码,因此没有其他方法可以确保数据安全存储。

由于我没有root访问权限,因此我无法访问系统调用表的地址here,我也无法通过LKM模块执行此操作。

我很感激任何建议,谢谢。

编辑:

好的,我现在可以使用Simone Margaritelli的代码链接了!我的代码一直崩溃的原因是因为我必须设置正确的内存访问权限:

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);

2 个答案:

答案 0 :(得分:3)

This是如何在没有root权限的情况下在Android上挂钩系统调用(当然只适用于您自己的进程,这不是系统范围的。)

答案 1 :(得分:1)

您可以参考Suterusu。但它不是线程安全的,我也试图找到一个线程安全的解决方案。