12

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

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

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

由于我没有 root 访问权限,因此无法访问此处描述的系统调用表的地址,也无法通过 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);
4

2 回答 2

4

就是你可以在没有 root 权限的情况下在 Android 上挂钩系统调用的方法(当然只适用于你自己的进程,这不是系统范围的)。

于 2014-05-23T19:42:16.373 回答
1

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

于 2014-08-22T15:39:29.603 回答