[发明专利]Android图片加载行为缺陷动态检测方法有效
申请号: | 202011569644.4 | 申请日: | 2020-12-26 |
公开(公告)号: | CN112698881B | 公开(公告)日: | 2022-09-06 |
发明(设计)人: | 曾梓钢;韩梦琪;杨帅豪;宋巍 | 申请(专利权)人: | 南京理工大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/451 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 陈鹏 |
地址: | 210094 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | android 图片 加载 行为 缺陷 动态 检测 方法 | ||
1.一种Android应用图片加载行为的动态检测方法,以Android应用的apk文件为输入,以检测出的应用图片加载行为缺陷为输出结果,其特征在于,具体步骤如下:
步骤1,静态预分析:使用soot将待测Android应用的apk文件转换为jimple文件,基于jimple文件,得到Android应用代码中图片加载APIs的调用位置和基础的活动跳转图;
步骤2,动态分析:对Android应用进行动态分析,基于步骤1所得活动跳转图,自动化地跳转到图片加载APIs的调用位置,触发图片加载APIs的调用,期间对活动跳转图缺失的边进行基于组件分类的广度优先探索算法的自动化探索来补全;
步骤3,运行时验证:使用基于Xposed框架实现的监控器监控Android应用图片相关API的执行情况,对勾取到的图片加载行为相关的方法进行时序分析,获得并输出存在反模式的图片加载行为;具体步骤如下:
步骤3-1,基于Xposed框架下的Hook功能实现相应的图片加载相关方法监控器,将Xposed框架和Hook工具安装到测试应用所在的模拟器上;
步骤3-2,动态分析期间,当图片加载相关的方法被调用执行时,监控器便能勾取这些方法;当一个完整的图片加载操作的全部方法勾取完时,对这些方法进行时序分析,判断图片加载行为是否存在反模式;主要对以下三种图片加载反模式进行运行时验证:
(1)加载图片前没调整图片大小;
(2)UI线程中加载图片;
(3)循环冗余地加载图片;
对三种反模式的分析方法:
(1)加载图片前没调整图片大小:
a.Android原生图片加载API:用ImageAPI指代具体的图片加载API,在调用ImageAPI(Option.inJustDecodeBounds=false)之前没有调用ImageAPI(Option.inJustDecodeBounds=true)来获取图片大小信息调整图片尺寸,或ImageAPI()的BitmapFactory.Options参数是null时,符合反模式;
b.Picasso图片加载框架:load()方法后序没有调用resize(int,int)或resizeDimen(int,int)或fit()时,符合反模式;
c.Universalimageloader图片加载框架:displayImage()参数为ImageScaleType.NONE时,符合反模式;
d.Fresco图片加载框架:在加载显示图片setImageURI(uri)之前没有调用com.facebook.imagepipeline.request.ImageRequestBuilder.
setResizeOptions(com.facebook.imagepipeline.common.ResizeOptions)时,符合反模式;
(2)UI线程中加载图片:
a.Android SDK图片加载API:没有在异步方法Thread.run()、AsyncTask.doInBackground()、IntentService.onHandleIntent()中调用图片加载API时,符合反模式;
(3)循环冗余地加载图片:
当图片加载API位于循环控件的主要方法中时,a.Android SDK图片加载API:图片加载方法调用之前没有调用LruCache.get(),之后没有调用LruCache.put(),则满足反模式;
b.Picasso图片加载框架:load()方法之后调用了memoryPolicy(MemoryPolicy.NO_STORE|MemoryPolicy.NO_CACHE)方法和networkPolicy(NetworkPolicy.NO_STORE|NetworkPolicy.NO_CACHE)方法,则满足反模式;
c.Glide图片加载框架:load()方法之后调用了skipMemoryCache(true)方法和diskCacheStrategy(DiskCacheStrategy.NONE)方法,则满足反模式;
d.Universalimageloader图片加载框架:displayImage()方法的Option参数对象满足Option.isCacheInMemory()=false和Option.isCacheOnDisk()=false时,满足反模式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学,未经南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011569644.4/1.html,转载请声明来源钻瓜专利网。