gpt4 book ai didi

ios - 有没有办法找到套接字对等进程的pid?

转载 作者:行者123 更新时间:2023-12-02 05:19:04 25 4
gpt4 key购买 nike

我有以下情况:

  • iOS 上的两个应用程序(我的应用程序和第三方应用程序)需要通过 TCP/IP 进行通信
  • 我可以更改我的应用的代码,但不能更改第 3 方应用的代码
  • 无法更改协议(protocol)(因为我无法更改第 3 方应用)。

在我的应用中,我想确保与正确的应用对话。

我知道如何通过 geetpeername 获取对等端口

我正在寻找一种方法来找出使用此端口的进程的 pid。

我发现类似的问题:How do you determine the PID of a peer TCP connection on the same iOS device?然而,在他的例子中,两个端口都在同一个应用程序中。

免责声明:我对私有(private) API 很满意。它不会发送到 AppStore。但是,我正在寻找非越狱手机的解决方案。

更新1

我说我需要 PID,因为有已知的方法可以获取 PID 和应用程序包 id 之间的关联(使用 sysctl)。

一般来说,我并不关心 PID 本身。我关心的是弄清楚套接字另一端的应用程序是什么。

最佳答案

我没有解决方案,但如果我要尝试这样做,我会按以下方式进行:

在 UNIX 系统上,您可以使用 lsof 命令来确定哪些进程打开了哪些文件。这包括套接字,并且 lsof 允许您确定使用给定端口的进程的 pid。例如,使用

lsof -n -P -i :443

如果您尝试确定哪个进程正在使用端口 443 (HTTPS),这可能会产生(在 OS X 上):

COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
firefox 81615 myname 112u IPv4 0xffffff8017379a40 0t0 TCP 192.168.2.7:52521->74.125.28.103:443 (CLOSE_WAIT)

Darwin 的 lsof 开源版本,我相信,can be found here 。因此,您可以尝试从 main.c 开始,并使用这些命令行参数,浏览代码,直到找到所使用的系统调用。

这当然有可能 the calls needed will not work when run in a process with user mobile privileges 。但是,也许不是?如果 lsof 源代码本身内部存在安全检查,那么如果您自己复制并粘贴源代码,您当然可以将其删除。

无论如何,如果没有人提供其他答案,这可能值得一试。

注意: lsof 适用于越狱手机,我刚刚尝试运行 Cydia 提供的当前版本。它们在 5.1.1 或 6.1.2 上对我不起作用。不知道为什么。我假设,如果它们在存储库中,那么在某个时候,有人能够将 lsof 移植到 iOS。

关于ios - 有没有办法找到套接字对等进程的pid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com