Android APK - 应用程序如何在没有 DNS 查询的情况下连接到他们的服务器

Android APK - How do applications connect to their servers without DNS queries

我想了解 Play 商店中的应用程序(其中大部分)如何在不执行显式 DNS 查询的情况下连接到他们的服务器。我下载了 APK 文件并对代码进行了逆向工程,但找不到任何 IP。可能是IP通过一些混淆隐藏在代码中,比如.so文件等。但我不清楚的是,这些IP是常年且永无止境的,所以硬编码的可能性非常小,因为每一天我尝试使用相同的 phone 启动相同版本的应用程序,然后收集我看到该应用程序正在与不同服务器通信的 .pcap 文件。我知道它可能在某种云服务器上,子网范围内的 IP 会很大,但同样,IP 来自不同的云服务器。

那么应用程序如何在没有软件更新的情况下每天了解这些新 IP?

第一次查找后,域名的IP地址可能会缓存在本地。

设备重启时刷新 DNS 缓存。但是,您正在分析的应用程序可能会在设备启动后立即启动,这让您难以监控网络流量以进行 DNS 查找。

我建议将连接配置为使用您可以控制和监控的 DNS 服务器。删除 DNS 服务器可能更容易,这样查找就会失败并且永远不会被缓存。这样,当您 运行 应用程序时,您应该会看到查找。

您应该对 IP 地址进行反向 DNS 查找以查看与它们关联的域,然后 grep 这些域的代码和应用程​​序资源。

如果前面的建议没有帮助,我还建议搜索与网络相关的 API 调用并分析该区域周围的代码以查找包含主机名的文字。

应用程序也可能使用一个或多个硬编码 IP 地址来获取其他地址。这可以解释为什么 IP 地址列表似乎总是在变化。