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

我试图截取我的Android应用程序在非根设备上进行的所有系统调用

所以每次我的应用程序写入/读取一个文件,我想拦截系统调用,并encryption/解密stream出于安全的目的。 encryption部分没有问题,但是如何拦截系统调用呢?

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

由于我没有root访问权限,所以我不能访问这里所描述的系统调用表的地址,也不能通过LKM模块来完成。

我将不胜感激任何build议,谢谢。

编辑:

好吧,我得到了代码链接formsSimone 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); 

Solutions Collecting From Web of "如何挂钩我的android应用程序的系统调用(非根设备)"

这就是你如何在没有root权限的情况下在Android上挂接系统调用(当然,只为你自己的进程工作,这不是系统范围)。

你可以参考Suterusu 。 但它不是线程安全的,我也试图find一个线程安全的解决scheme。