[发明专利]一种Android应用签名攻击检测方法有效
申请号: | 201710044445.3 | 申请日: | 2017-01-19 |
公开(公告)号: | CN108334772B | 公开(公告)日: | 2021-10-08 |
发明(设计)人: | 俞研;胡恒伟;吴家顺;苏铓;黄婵颖;付安民;王永利;邱煜;黄兴远 | 申请(专利权)人: | 南京理工大学 |
主分类号: | G06F21/51 | 分类号: | G06F21/51 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 王玮 |
地址: | 210094 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种Android应用签名攻击检测方法。在Android合法应用被恶意插装重打包签名后,攻击者同时在原应用中注入签名攻击代码,使得原应用内部的签名校验结果失效,应用仍认为自身是合法应用。本发明通过在应用内部获取与签名相关的方法列表,分析签名读取的方法是否被劫持,来判断应用自身的签名校验机制是否受到攻击,进而判断出应用是否被重打包或者当前运行环境存在风险。本发明可有效的检测出目前主流的应用内部签名攻击方法以及系统全局攻击,同时本发明作为一种全新的应用签名攻击检测方法对Android恶意应用检测有很好的促进作用,也对移动应用安全方面提供了一个很好的思路。 | ||
搜索关键词: | 一种 android 应用 签名 攻击 检测 方法 | ||
【主权项】:
1.一种Android 应用签名攻击检测方法,其特征在于包括以下步骤:1)收集android应用在签名校验中涉及到的系统方法;通过分析现有的签名校验手段,获得以下在签名校验中的关键方法:public PackageInfo getPackageInfo(String packageName, int flags, int userId),以及 public static PackageInfo generatePackageInfo(PackageParser.Package p,int gids[], int flags, long firstInstallTime, long lastUpdateTime,HashSet grantedPermissions, PackageUserState state),public byte[] toByteArray()),public boolean collectCertificates(Package pkg, int flags),private Certificate[] loadCertificates(JarFile jarFile, JarEntry je,byte[] readBuffer);2)获取步骤1)中关键方法所在的类信息,通过反射机制在native代码中获取到PackageManager、ApplicationPackageMnager以及PackageManagerService类信息;3)获取步骤1)中关键方法的方法指针,通过GetMethodID方法或GetStaticMethodID方法来获取关键方法的指针;4)将步骤3)中获得的关键方法的指针转换为Method/ARTMethod结构体,首先判断应用运行环境,将获取到的方法指针对应转换为Method结构体或ARTMethod结构体;5)获取步骤4)中的结构体中的accessFlags成员变量,accessFlags成员变量是方法的描述符,它记录这这个方法的作用域、静态或者非静态、可变性、是否可同步、是否本地方法、是否抽象的信息;6)分析步骤5)中获得的accessFlags成员变量,判断该成员变量的值是指向java方法还是native方法,若指向native方法,则说明该方法被修改,存在签名攻击的注入行为;若指向java方法,则说明该方法没有被修改,不存在签名攻击的注入行为;7)将检测方法形成的动态库文件,或者源代码,注入到/集成到待检测的目标应用中,在读取待检测的目标应用的签名信息之前进行检测;8)将检测结果返回给待检测的目标应用,结束检测过程。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学,未经南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710044445.3/,转载请声明来源钻瓜专利网。