我试图拦截我的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);
Run Code Online (Sandbox Code Playgroud) hook android system-calls library-interposition function-interposition
我已经使用 softether ( https://www.softether.org/ )在亚马逊 ec2 服务器中设置了一个 VPN 服务器,并希望通过该服务器路由来自我的 android 应用程序的所有流量。
但是到目前为止我看到的所有解决方案都使用 vpn 服务类http://developer.android.com/reference/android/net/VpnService.html,它为整个设备创建了一个 vpn 隧道,而不仅仅是我的应用程序。我希望手机上运行的其他应用程序能够正常使用互联网,而来自我的应用程序的流量通过我的 ec2 服务器路由。
同样,如果另一个应用程序想要启动 vpn 连接,我的连接将被终止,因为只能有一个连接而不能同时连接。
有没有办法做到这一点?我非常感谢任何建议。
干杯!