从android apk

时间:2016-08-16 10:16:15

标签: android smali

我想从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-virtualinvoke-direct是否始终意味着API调用?

1 个答案:

答案 0 :(得分:1)

invoke-virtualinvoke-direct分别使用和不使用虚拟方法解析来调用某个对象的方法。这不一定是API调用;您可以将这些指令用于任何类型的对象,包括您在自己的代码中定义的类的实例。

在这种情况下,您在android.net.ConnectivityManager类中找到了对方法的调用。如果您想要查找更多API调用,可以先搜索引用某些类的invoke-*指令,例如可能包含android.*java.*javax.*下的所有内容等等。