2016-04-24 207 views
0

我有一個嘗試從另一個進程獲取軟件包名稱的進程。 我正在使用C++代碼並使用Android工具鏈進行編譯。 我有它的套接字fd和ip地址,但是,我沒有在api中找到一個函數,它將返回一個包含包名稱的字符串。 我有套接字fd和地址,如果有幫助: https://github.com/android/platform_system_core/blob/master/libcutils/qtaguid.c如何在C++上使用android toolchain獲取包名?

有誰知道我如何能得到軟件包名稱:取自

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; 

    } 
} 

例子嗎?

謝謝!

回答

0

要做到這一點在3個步驟:

  • 使用netstat從插座
  • 使用ps發現過程中找到處理信息的應用程序的根目錄的可執行
  • 搜索AndroidManifest.xml找到擁有可執行文件的APK。
+0

聽起來很簡單,但是您可以在命令中更具體嗎?我找不到相關的過程。謝謝 – inbaly

+0

有用的命令:busybox netstat -tp | grep | busybox awk'{print $ 7}應該返回PID /程序名稱(第一個字符),例如:'10404/com.facebook。'自從我獲得PID以來,這已經幫助了我。 – inbaly

相關問題