我有一个用C编写的客户端和服务器。为了保护我实现的连接:
当我运行程序时,我使用:
稍后编辑:LD_PRELOAD强制加载程序使用我自己的accept,connect,send和receive版本加载我的库:http://www.catonmat.net/blog/simple-ld-preload-tutorial/
现在,我想在Android上移动我的库。我如何模拟LD_PRELOAD的行为,以使我的库对Android上的客户端尽可能保持透明?
谢谢你, 多鲁
答案 0 :(得分:1)
Android中没有与LD_PRELOAD
完全等效的内容。但是, Xposed framework 提供了一个API,可以在不修改应用程序的情况下更改应用程序的行为。它专门用于填补缺少LD_PRELOAD
功能的空白。
Xposed installer用修改后的版本替换/system/bin/app_process
,它将加载可以覆盖任何类中任何方法的JAR“插件”,即使在Android Zygote级别也是如此。交互式应用程序有助于管理插件。更多细节可以在Xposed Development Tutorial。
(请注意,替换/system
中的文件需要root权限。如果您的应用程序依赖于Xposed框架,则所有用户都需要有根设备。)
替代方案:上述内容应该有希望回答您关于LD_PRELOAD
功能的问题。但是我认为你的情况有另一种选择,它不需要root权限。 Android提供 VpnService 类,以允许开发人员实施自己的VPN解决方案。这允许您开发可以要求用户拦截和处理所有网络流量的Android应用程序。