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 地址列表似乎总是在变化。
我想了解 Play 商店中的应用程序(其中大部分)如何在不执行显式 DNS 查询的情况下连接到他们的服务器。我下载了 APK 文件并对代码进行了逆向工程,但找不到任何 IP。可能是IP通过一些混淆隐藏在代码中,比如.so文件等。但我不清楚的是,这些IP是常年且永无止境的,所以硬编码的可能性非常小,因为每一天我尝试使用相同的 phone 启动相同版本的应用程序,然后收集我看到该应用程序正在与不同服务器通信的 .pcap 文件。我知道它可能在某种云服务器上,子网范围内的 IP 会很大,但同样,IP 来自不同的云服务器。
那么应用程序如何在没有软件更新的情况下每天了解这些新 IP?
第一次查找后,域名的IP地址可能会缓存在本地。
设备重启时刷新 DNS 缓存。但是,您正在分析的应用程序可能会在设备启动后立即启动,这让您难以监控网络流量以进行 DNS 查找。
我建议将连接配置为使用您可以控制和监控的 DNS 服务器。删除 DNS 服务器可能更容易,这样查找就会失败并且永远不会被缓存。这样,当您 运行 应用程序时,您应该会看到查找。
您应该对 IP 地址进行反向 DNS 查找以查看与它们关联的域,然后 grep 这些域的代码和应用程序资源。
如果前面的建议没有帮助,我还建议搜索与网络相关的 API 调用并分析该区域周围的代码以查找包含主机名的文字。
应用程序也可能使用一个或多个硬编码 IP 地址来获取其他地址。这可以解释为什么 IP 地址列表似乎总是在变化。