SourceDNA 如何跟踪应用程序使用的 SDK

How does SourceDNA track SDKs used by apps

我刚刚读完有关 AFNetworking 将应用程序暴露给中间人攻击的媒体歇斯底里。我很惊讶 sourcedna.com 声称

SourceDNA analyzes the code in thousands of iOS & Android apps.

sourcedna.com甚至有一个搜索引擎可以报告供应商的应用程序是否使用 AFNetworking SDK。

考虑到他们无法访问付费应用,他们如何声称可以这样做?像 AFNetworking 日志 SDK 这样的 SDK 是否以某种形式使用?如果有,给谁?

我也很好奇这个。这是我收集的:

SourceDNA 只检查库是否链接到应用程序二进制文件中。他们不检查该库如何或是否被应用程序实际使用。

Objective-C 是一种动态语言,在二进制文件中保留了大量元数据。您可以在任何未加密的二进制文件上使用 运行 工具,如 class-dumpotool -ov,它将列出所有 classes 的名称和继承,以及所有方法的名称和签名和每个 class 中的实例变量,等等。

像 AFNetworking 这样的库有许多与众不同的 class 名称,它们可以在应用程序的 class 名称列表中进行检查。每个版本都会有一些添加或删除的方法 and/or 实例变量,因此通过检查来自应用程序的 class 转储与来自每个版本库的 class 声明,他们可以找出使用的库版本。

但是,从 App Store 下载的应用程序是加密的; App Store 是 SourceDNA 获得这些应用程序的唯一途径。可以解密/破解加密的应用程序(这就是人们盗版付费应用程序的方式——他们购买、破解,以及 post 盗版网站上的未加密二进制文件),但我认为这样做的常见方法包括在越狱设备上购买并运行安装该应用程序。

我假设 SourceDNA 人员一定以某种方式自动化了这个过程,这样他们就可以自动报告数千个应用程序。

正如我对@janselrx 的回复,我相信正如我所怀疑的那样,他们只能分析免费应用程序。来自他们的网站:

SourceDNA analyzes the code in thousands of iOS & Android apps. This report lets you explore recent data about the mobile SDKs and tools found in the top 500 free apps.