2014-05-23 105 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應用程序,可以要求用戶獲取攔截和處理所有網絡流量的權限。