0

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

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

パッケージ名を取得する方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

0

3 つのステップでそれを行うには:

  • netstatソケットからプロセスを見つけるために使用します
  • psプロセス情報から実行可能ファイルを見つけるために使用します
  • アプリのルート ディレクトリを検索AndroidManifest.xmlして、実行可能ファイルを所有する APK を見つけます。
于 2016-04-24T14:47:35.793 に答える