2014-05-23 61 views
1

我有一个客户,并写入C.为了确保连接的服务器,我实现:的Android LD_PRELOAD相当于

  • 我自己的连接,并接受了Diffie-Hellman密钥。
  • 我自己发送和接收,以便使用AES加密流量。 基本上,我使用数据加密缓冲区,并在加密的缓冲区上调用原始发送 。解密也一样。

当我运行一个程序我使用:

  • LD_PRELOAD:my_socket.so ./client
  • LD_PRELOAD:my_socket.so ./server
  • 客户端和服务器可以是任何程序,使用套接字。

后来编辑:LD_PRELOAD强制加载器加载我的图书馆,我自己接受的版本,连接,发送和接收:http://www.catonmat.net/blog/simple-ld-preload-tutorial/

现在,我想搬到我的图书馆在Android上。如何模拟LD_PRELOAD的行为,以便我的库对于Android上的客户端尽可能具有透明性?

谢谢 多鲁

回答

1

还有就是LD_PRELOAD Android中没有确切的等价物。但是,Xposed framework提供了一个API来更改应用程序的行为而不修改它们。它专门设计用于填补缺少LD_PRELOAD功能的空白。

Xposed installer用修改后的版本替换/system/bin/app_process,该版本将加载JAR“插件”,即使在Android Zygote级别,也可以覆盖任何类中的任何方法。交互式应用程序有助于管理插件。更多细节可在Xposed Development Tutorial中找到。

(请注意,在/system替换文件需要根权限如果您的应用程序来取决于Xposed框架,所有的用户都需要解锁装置。)

替代:以上应该有希望解答有关问题LD_PRELOAD功能。不过,我认为您的情况有其他选择,并且不需要root权限。 Android提供的类允许开发人员实施他们自己的VPN解决方案。这使您可以开发Android应用程序,可以要求用户获取拦截和处理所有网络流量的权限。