本发明专利技术公布了一种Android应用程序加壳的检测方法,通过一种Android应用程序的脱壳方法,检测经过加壳处理后的APK是否真正达到了加壳保护的效果;包括步骤:在模拟器上安装Hook工具,并对Hook工具的环境进行配置;安装加壳处理后的APK文件;Hook工具对两个系统函数dvmDexFileOpenFromFd和dvmDexFileOpenPartial进行脱壳得到classes.dex文件;将该classes.dex文件与未加壳的classes.dex文件进行对比,检测是否脱壳成功;对该classes.dex文件进行修复。本发明专利技术可以验证一些利用了现有的APK加固工具进行加壳后的应用的加壳效用,也是一种新的检测APK文件安全的方法,对业界APK加固以及风险评估市场有很好的促进作用,除了有很大的商业价值之外,也对移动应用安全方面有很大的促进作用。
【技术实现步骤摘要】
一种Android应用程序加壳的检测方法
本专利技术涉及Android应用程序脱壳方法,尤其涉及一种Android应用程序加壳的检测方法,即通过一种基于JNIHook的Android应用程序的脱壳方法,检测经过加壳处理后的APK(AndroidPackage的缩写,即Android应用安装包)是否真正达到了加壳保护的效果。
技术介绍
随着智能手机的热销,手机上网越来越流行,移动互联时代的爆发更是带动智能手机趋于全能化,伴随手机用户爆炸增长、手机上网愈加便利而来的是,手机安全隐患越来越多、问题越来越突出。根据中国互联网络信息中心(CNNIC)发布《第28次中国互联网络发展状况统计报告》。报告显示,截至2012年6月底,中国手机网民规模首次超越台式电脑用户,达到3.88亿,较2011年底增加了约3270万人。手机网民在总体网民中的比例达65.5%。目前,一方面,智能手机系统已被国外产品垄断:根据艾媒咨询发布的数据显示,2012第二季度,国外操作系统在我国智能手机中的占比已超过90%。其中,美国谷歌公司的Android系统占比最高达63.1%;芬兰诺基亚公司的塞班系统占比19.9%,苹果公司的iOS操作系统占比11.7%。因为Android系统采取免费、开源的市场策略,导致众多山寨手机和平板电脑大量使用Android系统,而这些充斥在市场之上的山寨机以及变成黑客、恶意程序眼中的“肉鸡”。另一方面,智能手机信息防范能力弱:与传统手机相比智能手机功能强大,信息覆盖范围广,其操作系统依托于移动互联网,信息泄露隐患大。智能手机内部包含大量私人信息或涉密信息,如定位系统、账户密码、图像图片、通讯录、短信息、通话内容等。而智能手机的诸多功能需要时时连入互联网才能实现,对于很多手机来说在传输数据时缺乏有效保护和加密,从而导致黑客非法盗取用户信息也更为容易。以市场占有量最大的Android系统为例,虽然众多手机厂商可以对系统进行“重新包装”,但是由于系统开源,API接口被广泛使用,通过一定的技术手段有意窃听通话记录或是窃取用户信息,完全没有技术障碍。再者,应用软件缺乏安全审查机制:由于GooglePlay在中国地区的不稳定性,国内95%的用户都会选择从国内的第三方应用市场下载App程序。但是当下国内的第三方应用市场已经变成了鱼龙混杂,流氓、病毒软件丛生之地。在国内,第三方应用市场里比较几十家,知名的有安卓、安智、应用汇、机锋网等,国内的应用市场基本都是模仿苹果的应用商城,对外承诺有严格的审核机制,但事实是这些审核基本是空架子。而在移动互联网安全领域,技术标准存在真空,更缺乏法律规范来保障用户的信息安全。互联网的高速发展,智能手机、平板电脑等各种便携移动设备已经充斥了人们的生活,各种移动应用迅速覆盖了包括出行就餐、日常起居,甚至金融理财等各个领域。然而,正所谓“玫瑰虽好,毒刺伤人”。安卓漏洞、App安全早已饱受诟病,诸如手机吸费、隐私盗取以及各类支付风险也都如鬼魅般如影随形。山寨App和广告插件加剧用户隐私暴露风险,木马病毒泛滥移动互联网安全形势严峻等问题已不可忽视。由于移动互联网的发展迅速,随其而生的安全问题眼下也无法彻底解决。不断增长的手机用户让恶意软件获得了更多的生存的机会。针对上述移动互联网应用的安全问题,一些Android应用加固(加壳)产品为移动应用提供专业的加固保护方案,其中一种方法是对Java文件进行加壳处理。但是,这些加固产品的加壳处理起到的保护作用是否有效,现有方法还难以进行检测。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种Android应用程序加壳的检测方法,通过一种基于JNIHook的Android应用程序的脱壳方法,检测经过加壳处理后的APK(AndroidPackage的缩写,即Android应用安装包)是否真正达到了加壳保护的效果。为了便于说明,本文约定:“APK”是AndroidPackage的缩写,即Android应用安装包;“Dalvik”是指Google公司设计的用于Android平台的Java虚拟机;“Manifest”是指Android程序运行清单(AndroidManifest.xml)。本专利技术的原理是:提供一种新的方法,对一部分现有的APK中的Classes.dex加壳的工具的效用进行检测;主要是对位于/system/lib/libdvm.so中的函数intdvmDexFileOpenFromFd(intfd,DvmDex**ppDvmDex)以及intdvmDexFileOpenPartial(constvoid*addr,intlen,DvmDex**ppDvmDex)进行Hook处理,具体的是通过交互式反汇编工具IDA工具(IDA是IDAPRO的简称,是英文InteractiveDisassembler的缩写)分析函数描述符,并分析DvmDex数据结构,保存到本地。对两个函数进行Hook处理后,当函数dvmDexFileOpenFromFd执行dex文件时会跳转到保存到本地的解壳程序,该解壳程序为本专利技术方法提供的解壳程序(本专利技术称为脱壳工具),通过该脱壳工具处理Hook函数传入的DvmDex数据结构参数;由于此时由加壳软件添加的解壳程序已经将加壳的classes.dex文件进行解壳,因此此时传入的DvmDex数据结构便包含已经解壳后的classes.dex文件数据。该脱壳工具通过获取DvmDex数据结构中的DexFile结构指针,并调用write函数,将DexFile结构中的成员baseAddr指向的内存数据,写入本地文件,即可得到脱壳后的classes.dex文件;再归还DvmDex数据结构,还原系统对Hook函数的调用,该脱壳工具输出未加壳的dex文件,再返回函数dvmDexFileOpenFromFd继续原来的流程;同理的,dvmDexFileOpenPartial函数是用来处理odex文件的,对它进行Hook处理后,在执行该函数时会执行保存在本地的脱壳工具,此该脱壳工具主要是输出本专利技术方法得到的未加壳处理的dex文件;输出的dex文件即本专利技术方案输出的结果,与APK未加壳前的dex文件进行对比;人工检查输出的dex文件也可以检测出是否对加壳后的dex文件脱壳成功,主要是对加壳前的、加壳后的以及利用了本专利技术方案提供的脱壳工具进行脱壳后的dex文件进行分析,利用APKTool逆向工具查看dex,将dex还原为jar包,再利用APKTool逆向工具查看源码;若加壳后的dex文件无法得到源码,加壳前以及利用本专利技术的脱壳方法进行脱壳后的dex文件可以查看到源码,说明利用本专利技术方案脱壳成功;即检测到经过加壳处理后的APK真正达到了加壳保护的效果。本专利技术提供的技术方案是:一种Android应用程序加壳的检测方法,包括如下步骤:A.在模拟器上,安装采用了本专利技术提供的Android应用程序脱壳方法的Hook工具;对Hook工具的环境进行配置;B.安装加壳处理后的APK文件;C.利用步骤A中的Hook工具,对两个系统函数进行Hook处理(Hook函数dvmDexFileOpenFromFd和Hook函数intdvmDexFileOpenPartial);进行Hook本文档来自技高网...
【技术保护点】
一种Android应用程序加壳的检测方法,通过一种Android应用程序的脱壳方法,检测经过加壳处理后的APK是否真正达到了加壳保护的效果;包括如下步骤:A)在模拟器上安装Hook工具,并对Hook工具的环境进行配置;所述Hook工具采用了所述Android应用程序的脱壳方法;B)安装加壳处理后的APK文件;C)利用步骤A)中的Hook工具,对两个系统函数进行Hook处理,进行脱壳得到classes.dex文件;所述两个系统函数为函数dvmDexFileOpenFromFd和Hook函数int dvmDexFileOpenPartial;对两个系统函数进行Hook处理,具体包括如下步骤:C1.若通过加壳工具本身提供的解壳程序解壳出的文件是dex文件,则Hook的函数是dvmDexFileOpenFromFd方法,转入步骤C3调用脱壳处理程序;C2.若通过加壳工具本身提供的解壳程序解壳出的文件是odex文件,则Hook的函数是dvmDexFileOpenPartial方法,转入步骤C3调用脱壳处理程序;C3.脱壳处理程序处理DvmDex数据结构并输出脱壳文件classes.dex;D)将Hook工具进行脱壳得到的classes.dex文件与未加壳的classes.dex文件进行对比;检测是否脱壳成功;从而得到加壳处理是否达到加壳保护效果的结果;E)对步骤C)中输出的classes.dex文件进行修复,操作执行结束。...
【技术特征摘要】
1.一种Android应用程序加壳的检测方法,通过一种Android应用程序的脱壳方法,检测经过加壳处理后的APK是否真正达到了加壳保护的效果;包括如下步骤:A)在模拟器上安装Hook工具,并对Hook工具的环境进行配置;所述Hook工具采用了所述Android应用程序的脱壳方法;B)安装加壳处理后的APK文件;C)利用步骤A)中的Hook工具,对两个系统函数进行Hook处理,进行脱壳得到classes.dex文件;所述两个系统函数为函数dvmDexFileOpenFromFd和Hook函数intdvmDexFileOpenPartial;对两个系统函数进行Hook处理,具体包括如下步骤:C1.若通过加壳工具本身提供的解壳程序解壳出的文件是dex文件,则Hook的函数是dvmDexFileOpenFromFd方法,转入步骤C3调用脱壳处理程序;C2.若通过加壳工具本身提供的解壳程序解壳出的文件是odex文件,则Hook的函数是dvmDexFileOpenPartial方法,转入步骤C3调用脱壳处理程序;C3.脱壳处理程序处理DvmDex数据结构并输出脱壳文件classes.dex;D)将Hook工具进行脱壳得到的classes.dex文件与未加壳的classes.dex文件进行对比;检测是否脱壳成功;从而得到加壳处理是否达到加壳保护效果的结果;E)对步骤C)中输出的classes.dex文件进行修复,操作执行结束。2.如权利要求1所述Android应用程序加壳的检测方法,其特征是,步骤A)配置Ho...
【专利技术属性】
技术研发人员:张涛,李浩,宁戈,孟正,
申请(专利权)人:北京安普诺信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。