摘要:电网企业不断朝着智能化的方向发展,移动应用也不断开发和应用。但是,移动应用在使用过程中冶逐步暴露出安全的问题。本文在分析应用加固技术的基础上,提出了代码优化技术加固移动应用的方案。首先分析了加固的基本理论和常用技术,设计了加固系统的主要框架结构,并阐述了系统的关键技术。该系统在移动应用加固过程中有着重要的意义。
关键词:代码优化;移动应用;加固
0、引言
随着智能终端的不断发展,移动应用的安全问题,已经成为整个应用市场发展面临的一个主要问题。手机在日常生活中的应用场景大幅拓宽,且与用户财产的联系日益密切,造成网民面临的手机信息安全环境更加复杂[1]。用户隐私信息泄露与手机应用安全漏洞等移动互联网信息安全问题逐渐成为社会关注的新焦点,但另一方面仍有很多用户忽视手机信息安全问题、缺乏基本的手机信息安全意识,并因而造成了不必要的损失,手机信息安全问题更加不容忽视[2]。
为了提升移动应用安全水平,较少移动应用自身存在的风险,开展对移动应用代码优化及安全的技术研究,有效解决个人信息泄露,APP被破解,恶意代码植入,广告植入、动态调试等一些列风险因素。在使用加固技术时实现一键纯净加固方式,解决传统安全修复工作中对技术人员安全加固技术能力的超高要求及加固过程中大量时间消耗的问题。
1、加固技术理论研究
移动应用代码优化通常采用VMP(虚拟机指令加密技术)、DEX文件加壳、DEX文件内函数抽取加密及动态还原、SO文件保护、资源文件完整性保护、防调试保护、签名校验、防截屏、防劫持等技术,从根本上解决Android应用的安全缺陷和风险,使加固后的APP具备防逆向分析、防二次打包、防动态调试、防进程注入、防数据篡改等安全保护能力[3]。
其中,防逆向技术的目的是保护移动应用代码安全,主要保护对象是DEX文件和SO文件。防止这两个文件被反编译后,分析业务逻辑,进一步对移动应用的安全产生威胁。防逆向技术包括代码混淆,代码加壳,代码分离,混合加密以及VMP技术。
VMP技术指将原来的可执行代码转换为企业自定义的字节码,这些自定义的字节码只能由企业自定义的虚拟机解释器执行。VMP技术中未保护的方法还是以正常的Dalvik字节码的形式由Dalvik虚拟机执行,而保护后的方法是由自定义的虚拟机执行引擎来执行。VMP技术是基于方法的虚拟化保护,可以构建多个不同虚拟化的解释引擎,不同的方法采用不同的虚拟化执行引擎,通过这种方式进一步提高安全性[4]。
VMP保护技术处理DEX文件的主要步骤有以下几步:
(1)抽取dex中方法的虚拟机指令,即opcode代码(如010001000…)。
(2)将原指令清空(使用00),并将原方法改为native方法。
(3)将抽出的原方法中虚拟机指令(010001000…)根据自定义的规则替换为加固后的虚拟机指令(0210001000…),保存在IJMDal.Data文件中。主要步骤如图1所示。
图1 VMP保护技术处理DEX文件流程图
2、防篡改及页面安全研究
2.1防篡改保护技术原理
在应用加固时提取代码文件、资源文件、签名文件等文件特征值,通过离散算法存储到加固文件中,文件自身再通过国密算法进行加密存储,当DEX文件运行时,系统解密加密文件提取特征值进行文件校验,如发现特征值不一致,已被黑客篡改,停止当前APP运行,从而保护文件不被篡改和二次打包[5]。
2.1防调试研究
移动应用放调试技术可以防止app运行中动态攻击行为,包括内存注入,内存dump,防模拟器中运行等效果动态防御技术以反调试保护为基础,同时对关键函数进行监控,通过对进程状态,端口,信号的实时监听探测保护APP不被动态调试。
2.3页面数据保护研究
在客户端运行时监控Activity,在activity启动生命中周期执行onpause()方法时做判断,调用防劫持方法,通过取得自己应用内的包名,比对当前Activity栈顶包名是否一致,如不一致返回风险提示。
同时当activity失去焦点时通过内置函数进行判断,通过模拟点击分析当前弹窗是否是本应用弹窗,不是本应用弹窗给予错误提示。
3、代码优化与加固设计
3.1加固机制选用
本文加固技术针对DEX加固采用五代VMP虚拟机技术+四代“混合加密”加固技术,加密后重要函数代码转换为C代码,且内存地址不连续,无法通过内存整体dump的手段将加密前DEX源码拿到。
该机制即保证了DEX的安全性,也大大提高了运行的效率。针对rom类型的dump攻击具有严格的检测机制,一旦运行在具有函数级单独dump攻击的rom系统中,将自动终止运行。并且在使用上具有如下便利性:
(1)通过定制加密系统服务器,本地内网部署,保护隐私数据更安全。
(2)可根据实际需求自主化全自动加密,独立多权限后台管理,安全、稳定、高效、易操作。
(3)可进行批量闪传、不限加密时间、不限APP数量、不限加密次数。
3.2技术框架
本文设计的技术框架如图2所示。
图2技术框架图
移动应用代码优化及安全系统是一个独立的移动应用安全加固系统。系统完成后,系统提供加固平台或者通过提供API的形式提供检测开放服务等服务。
通过系统管理模块,可以对用户和加固项进行配置。用户管理提供角色管理功能,可给不同用户分配不同的操作权限。根据不同的移动应用需要加固的风险以及不同移动应用保护的内容不同,可以通过不同加固项目选择,建立不同的加固方案进行加固。
移动应用代码优化及安全系统的核心是丰富和高强度的加固技术能力,大的范围可以分为防逆向,防篡改,防调试,页面数据保护等。
4、关键技术研究
4.1VMP保护技术
VMP是基于虚拟化保护的软件技术实现的。基于虚拟机的软件保护方式被业界公认为当前破解难度最大的保护方式,它不但加大了逆向分析的难度,而且极大的增加了还原代码的难度。VMP技术中未保护的方法还是以正常的Dalvik字节码的形式由Dalvik虚拟机执行,而保护后的方法是由自定义的虚拟机执行引擎来执行。同时,VMP技术是基于方法的虚拟化保护,可以构建多个不同虚拟化的解释引擎,不同的方法采用不同的虚拟化执行引擎,通过这种方式进一步提高安全性。
本文设计的双重VMP技术(即:DEXVMP与ELFVMP技术),技术实现主要包括:(1)改变程序指令和代码流程(执行流程不可见);(2)加入中间解析器对代码进行解析执行;(3)多重级别保护ELF文件与DEX文件。
4.2反调试
加固提供的动态防御技术以反调试保护为基础,同时对关键函数进行监控,通过对进程状态,端口,信号的实时监听探测保护APP不被动态调试。
(1)加固技术会实时检测app进程状态,当发现进程状态处于traced状态或者TracePid为非自身进程时,程序退出;
(2)加固会监控常见调试程序利用端口,当发现端口被调试程序占用时,程序退出;
(3)加固会捕获调试器信号SIGTRAP,SIGCONT信号等,检测进程是否处于调试状态;
(4)加固会检查子进程与主进程建立通信是否异常,是否发生通信超时或者通信中断等;
4.3页面数据保护
防截屏技术通过相关技术监控系统底层截屏相关函数(操作),在应用页面初始化时调用系统防截屏功能,阻止相关函数调用(兼容Android所有系统),也可以在界面中添加代码防止页面截屏(V4.0版本以上)。
另外,本应用还可以通过模拟点击分析当前弹窗是否是本应用弹窗,不是本应用弹窗给予错误提示。
5、结论
随着电网移动应用检测技术的发展和应用,根据检测结果对移动应用进行加固显得越来越重要。本文研究了基于代码优化技术的移动应用加固,通过本文的研究,可以得出以下结论:
(1)移动应用代码优化及安全包含VMP(虚拟机指令加密技术)、DEX文件加壳等主要内容,可以解决应用的安全缺陷和风险,使加固后的APP具备防逆向分析、防二次打包、防动态调试、防进程注入、防篡改等安全保护能力。
(2)加固项目选定以后,可以应用到制定的移动应用上,整个加固过程快速,并且采用纯净加固方式,加固过程无需开发人员大量配合即可完成。
参考文献
[1]孔金阳,覃蓝锋,綦招寅,牟永瑞,孟鑫.基于移动应用安全防护能力评估方法研究[J].网络安全技术与应用,2018(07):75+85.
[2]张敬.软件性能优化之代码优化[J].电子技术与软件工程,2017 (03):75-76.
[3]刘文灵.Android应用本地代码的安全加固及安全性评估[D].北京邮电大学,2018.
[4]]郭伟.基于安卓系统的移动应用程序安全加固系统的设计[J].数字技术与应用,2016(06):201.
[5]朱旭超.安卓应用加固和防护系统设计与实现[D].南京理工大学,2018.
论文作者:陈昊,孙强强
论文发表刊物:《电力设备》2019年第2期
论文发表时间:2019/6/3
标签:技术论文; 代码论文; 文件论文; 系统论文; 方法论文; 虚拟机论文; 进程论文; 《电力设备》2019年第2期论文;