使用Python,鉴于它是.apk文件,我试图提取Android应用程序进行的API调用。
有没有一种方法可以通过对包的APK进行静态分析来解析/提取包所使用的API的名称?
我之前曾看到过此问题,但一直无法遵循(非常有限的)有效解决方案的答案。
我知道有些工具(例如Cartographer)可以完成此任务,但是我无法使代码的相关部分正常工作。CHABADA可以使用另一种工具,但是它不是开源的。
我已经能够从APK中获取其他信息,例如使用Androguard的外部类,AndroidManifest.xml
使用APK Static Analyzer的文件的组件以及使用Apktool的文件,我可以将清单解码为可读格式,还可以获取smali文件。
先前的另一篇文章询问如何从以下代码行解析API的smali文件:
invoke-virtual {p0, v0}, Landroid/net/ConnectivityManager;->getNetworkInfo(I)Landroid/net/NetworkInfo;
但这并不似乎是因为一个有用的方法invoke-virtual
或invoke-direct
并不一定表示API的使用,并解析smali文件是一个较重的任务相比,有一些办法只是静态分析的APK中提取所谓的API。
还建议使用Dexlib2,但我看不到它可以在哪里提取API调用,并且全部使用Java,而我一直在使用Python。
工具API密钥检测器为我提供了所使用的API密钥,但是我不知道如何从中获取API名称。
有什么办法吗?
大话西游666
慕沐林林
慕桂英4014372
相关分类