如何在 C++ 上使用 android 工具链获取包名?
how to get package name using android toolchain on c++?
我有一个进程试图从另一个进程获取程序包名称。
我正在使用 C++ 代码并使用 Android 工具链对其进行编译。
我有它的套接字 fd 和 ip 地址,但是,我没有在 api 中找到一个函数,它将 return 一个包含包名称的字符串。
我有套接字 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
有人知道我怎样才能得到包名吗?
谢谢!
分 3 个步骤完成:
- 使用
netstat
从套接字中查找进程
- 使用
ps
从进程信息中查找可执行文件
- 在应用程序的根目录中搜索
AndroidManifest.xml
以查找拥有可执行文件的 APK。
我有一个进程试图从另一个进程获取程序包名称。 我正在使用 C++ 代码并使用 Android 工具链对其进行编译。 我有它的套接字 fd 和 ip 地址,但是,我没有在 api 中找到一个函数,它将 return 一个包含包名称的字符串。 我有套接字 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
有人知道我怎样才能得到包名吗?
谢谢!
分 3 个步骤完成:
- 使用
netstat
从套接字中查找进程 - 使用
ps
从进程信息中查找可执行文件 - 在应用程序的根目录中搜索
AndroidManifest.xml
以查找拥有可执行文件的 APK。