【问题标题】:Android LD_PRELOAD equivalentAndroid LD_PRELOAD 等效
【发布时间】:2014-05-23 07:07:01
【问题描述】:

我有一个用 C 编写的客户端和一个服务器。为了保护我实现的连接:

  • 我自己连接并接受 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 上的客户端尽可能透明?

谢谢你, 多鲁

【问题讨论】:

    标签: android ld-preload


    【解决方案1】:

    在 Android 中没有精确的 LD_PRELOAD 等价物。然而,Xposed framework 提供了一个 API 来更改应用程序的行为,而无需修改它们。它是专门为填补LD_PRELOAD 功能缺失而设计的。

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

    (请注意,替换/system 中的文件需要root 权限。如果您的应用程序依赖Xposed 框架,那么您的所有用户都需要root 设备。)

    替代方案:以上内容有望回答您关于LD_PRELOAD 功能的问题。但是我认为您的情况有另一种选择,它不需要root权限。 Android 提供 VpnService 类以允许开发人员实现自己的 VPN 解决方案。这允许您开发可以请求用户拦截和处理所有网络流量的 Android 应用程序。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 2013-01-03
      • 2010-10-20
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2021-06-20
      相关资源
      最近更新 更多