【发布时间】:2016-08-16 23:53:02
【问题描述】:
我想从 Android 应用程序的 apk 中提取所有 API 调用。我已经使用 apktool 从 apk 中获取 smali 代码文件。手动我可以发现一些 API 调用,但我需要一个自动化的方法。例如,我可以在这行代码中看到getNetworkInfo 调用:
invoke-virtual {p0, v0}, Landroid/net/ConnectivityManager;->getNetworkInfo(I)Landroid/net/NetworkInfo;
我没有使用 smali 代码的经验,也很少使用 Android 应用程序分析;我只发现了上面的 API 调用,因为我碰巧知道“getNetworkInfo”就是其中之一。但当然,我不想做的是从所有可能的 API 调用列表开始,然后在 smali 文件中一一搜索它们。
是否有其他 API 调用迹象? invoke-virtual 或 invoke-direct 是否总是意味着 API 调用?
【问题讨论】:
-
我建议使用 dexlib2 以编程方式访问 dex 文件,而不是尝试解析 smali 文件。