2016-04-24 9 views
0

他のプロセスからパッケージ名を取得しようとするプロセスがあります。 私はC++コードを使用しており、Android toolchainを使用してコンパイルしています。 私はそのソケットfdとipアドレスを持っていますが、apiではパッケージ名を含む文字列を返す関数は見つかりませんでした。取らC++でアンドロイドツールチェインを使ってパッケージ名を取得する方法は?

uid_t GetSocketID(int sockfd) 
{ 
    int err; 
    socklen_t len; 
    struct sockaddr_in addr; 
    len = sizeof(addr); 
    int res = getpeername(sockfd, (struct sockaddr*)&addr, &len); 

    if (res < 0) 
    { 
     err = errno; 
     return -1; 
    } 

    int iSockIp = addr.sin_addr.s_addr; 
    int iSockPort = ntohs(addr.sin_port); 
    int iUid = -1; 

    if (iSockIp == 0 || iSockPort == 0) 
    { 
      return -1; 

    } 
} 

例: https://github.com/android/platform_system_core/blob/master/libcutils/qtaguid.c

を誰もが、私は、パッケージ名を取得する方法を知ってい は、私はそれが助け場合は、ソケットのfdとアドレスを持っていますか?

ありがとうございます!

答えて

0

は3つの段階でそれを行うには:

  • 使用netstatをソケット
  • 使用psからプロセスを見つけるために、アプリケーションのルートディレクトリ内のプロセス情報から実行可能
  • 検索AndroidManifest.xmlのを見つけるために実行可能ファイルを所有しているAPKを見つけます。
+0

これは簡単なことですが、コマンドでより具体的にすることはできますか?私は関連するプロセスを見つけることができませんでした。ありがとう – inbaly

+0

役に立つコマンド:busybox netstat -tp | grep | busybox awk '{print $ 7}は、' 10404/com.facebook 'のようにPID /プログラム名(最初の文字)を返さなければなりません。私はPIDを取得して以来、すでに私を助けた。 – inbaly

関連する問題