Android 计算classes.dex中的api调用数

Android 计算classes.dex中的api调用数,android,reverse-engineering,dalvik,Android,Reverse Engineering,Dalvik,我想知道是否可以通过解析classes.dex文件来计算调用API的次数。我知道调用所有API的方法,但想知道是否有一种方法可以在不运行应用程序的情况下获取API的调用次数,只需解析类.dex。此信息是否存储在dex文件中 我快速查看了dex文件格式,但找不到该信息 例:如果在class1、class2和class3中使用了一次substring(),我应该能够获得子字符串已被调用3次的信息。仅通过解析代码无法判断API调用了多少次。例如,调用了多少次foo(): public static v

我想知道是否可以通过解析classes.dex文件来计算调用API的次数。我知道调用所有API的方法,但想知道是否有一种方法可以在不运行应用程序的情况下获取API的调用次数,只需解析
类.dex
。此信息是否存储在dex文件中

我快速查看了dex文件格式,但找不到该信息


例:如果在class1、class2和class3中使用了一次
substring()
,我应该能够获得子字符串已被调用3次的信息。

仅通过解析代码无法判断API调用了多少次。例如,调用了多少次
foo()

public static void bar(int x) {
    for ( int i = 0; i < x; i++ ) {
        foo();
    }
}
  • 数一数你找到那条线的次数。比如:

    grep api_call_pattern . | wc -l
    
  • 这只能被视为实际API调用计数的粗略代理。如果你想要更准确的东西,你必须做符号分析。不幸的是,据我所知,没有一个交钥匙解决方案可供您使用

    grep api_call_pattern . | wc -l