技术特征:
1.一种基于字节码插桩的Android程序监控系统,其特征在于,包括:
-基于字节码分析的Android程序dex文件注入模块,用于向Android应用程序中注入Android程序监控dex文件;
-Android程序监控模块,用于存放Android程序监控dex文件。
2.根据权利要求1所述的基于字节码插桩的Android程序监控系统,其特征在于,还包括:
-监控日志分析模块,用于提取和分析通过Android程序监控dex文件生成的Android设备监控日志。
3.根据权利要求1或2所述的基于字节码插桩的Android程序监控系统,其特征在于,所述Android程序监控dex文件包括如下任一个或任多个监控信息:
-Android应用程序崩溃信息;
-Android应用程序未响应信息;
-Android应用程序内存不足信息;
-HTTP请求及请求响应内容和响应时长信息;
-网络请求的总流量统计和具体耗费流量API细分信息;
-图片加载API耗时时间信息;
-CPU使用率和堆内存使用大小信息。
4.一种基于字节码插桩的Android程序监控方法,其特征在于,包括如下步骤:
通过插桩的方式,在Android应用程序的文件注入入口注入Android程序监控dex文件,并通过Android程序监控dex文件生成Android设备的监控日志。
5.根据权利要求4所述的基于字节码插桩的Android程序监控方法,其特征在于,具体包括如下子步骤:
-分析步骤:
步骤S1.1:将Android应用程序的apk文件解包,生成若干Android应用程序的程序逻辑dex文件;
步骤S1.2:使用Android程序dex文件注入模块,分析程序逻辑dex文件的文件格式,得到程序逻辑dex文件需要注入Android程序监控dex文件的入口,即Android应用程序的文件注入入口;
步骤S1.3:插桩:使用Android程序dex文件注入模块,将Android程序监控dex文件注入到相应的Android应用程序的文件注入入口;
步骤S1.4:将被注入的Android程序监控dex文件和程序逻辑dex文件重新打包,得到插桩过的Android应用程序;
步骤S1.5:将插桩过的Android应用程序安装在Android设备中,在Android应用程序运行时,注入的Android程序监控dex文件生成多个维度的监控日志,以日志文件形式存储在Android设备中。
6.根据权利要求5所述的基于字节码插桩的Android程序监控方法,其特征在于,所述步骤S1.1中,apk文件格式与标准zip压缩包格式相同,通过使用任意zip解包工具进行解包。
7.根据权利要求5所述的基于字节码插桩的Android程序监控方法,其特征在于,所述步骤S1.5中,在生成监控日志前,还包括如下步骤:
对插桩过的Android应用程序进行人工测试或者自动化测试。
8.根据权利要求4所述的基于字节码插桩的Android程序监控方法,其特征在于,还包括如下子步骤:
-分析步骤:
S2.1:使用监控日志分析模块,将若干Android设备的监控日志取出;
S2.2:使用监控日志分析模块,分析取出的监控日志,得到监控分析结果报表。
9.根据权利要求8所述的基于字节码插桩的Android程序监控方法,其特征在于,所述步骤S2.2中,还包括如下步骤:
通过监控分析结果对Android应用程序进行优化。
10.根据权利要求4至9中任一项所述的基于字节码插桩的Android程序监控方法,其特征在于,所述插桩的方式,采用如下任意一种方法:
方法一,将Android程序监控dex文件的dex字节码注入到Android应用程序文件注入入口处的指定函数的开头或者结尾;
方法二,将Android应用程序文件注入入口处的指定函数a的调用代码修改为Android程序监控dex文件中用来替代该指定函数a调用代码的函数b。