一种基于安卓应用的文件传输保密系统技术方案

技术编号:22914200 阅读:29 留言:0更新日期:2019-12-24 21:53
本发明专利技术公开了一种基于安卓应用的文件传输保密系统,包括以下步骤,遍历dex文件结构找到class段、解析class段下的每个类的类数据,解析每个class Item Data中的方法字段。本发明专利技术中,通过研究Android操作系统的安全弱点、Android应用程序的安全弱点、Android应用程序的逆向工程技术等,提出一个完整的安全保护方案,该一种基于安卓应用的文件传输保密系统从逆向工程入手,借鉴传统PC端的安全保护技术,结合Android平台本身的特点,将混淆、防反编译、动态加载、完整性校验、加密等方面融合为一体,采用多层安全保护措施,全面提高了应用程序的安全性能。

A secure system of file transfer based on Android Application

【技术实现步骤摘要】
一种基于安卓应用的文件传输保密系统
本专利技术涉及应用程序传输保护
,尤其涉及一种基于安卓应用的文件传输保密系统。
技术介绍
随着移动互联网的快速发展,智能手机应用也紧随其发展,在现有的智能手机系统中,安卓系统因为开源特性在手机系统市场中占有不少地位,但是安卓应用被逆向篡改等现象对用户的隐私和财产造成安全方面的隐患,同时对安卓应用开发者的合法权益也会造成侵犯,安卓应用的安全性也成为了安卓应用开发中重要的一部分。目前关于安卓应用安全保护由最初的代码混淆到给安卓应用加壳再到基于虚拟机定制的安卓应用加固技术,加固技术也由文件加密到方法指令抽取再到虚拟机一步步的提高安全级别,这些方法虽取得一定成效,其中一些加固技术存在容易被破解等问题,软件加壳技术是目前使用最多的加固技术,但是主流的基于类加载器和基于方法替换的加壳技术都已经出现了自动脱壳破解方案。
技术实现思路
本专利技术的目的是为了解决现有技术中存在的缺点,而提出的一种基于安卓应用的文件传输保密系统。为了实现上述目的,本专利技术采用了如下技术方案:一种基于安卓应用的文件传输保密系统,包括以下步骤:SS01:遍历dex文件结构找到class段、解析class段下的每个类的类数据,解析每个classItemData中的方法字段;SS02:进一步向结构体内部解析方法字段,找到code结构体的指令集数组,把指令数组进行AES加密后保存;SS03:在解析出指令数组后,把指令偏移处指定大小的字节流置为0,来返回一个指令集为0的dex文件的字节流,这样就找不到原指令数组对应的数据,达到隐藏代码的目的;SS04:由于对dex文件进行了修改,必须对dex文件进行重新校验,重新计算dex文件头中的两个字段checksum和signature,否则安装安卓应用的时候,系统校验不会通过。SS05:指令抽取后的安卓应用和加密过的指令数组上传到服务端,用户下载传输安卓应用时连同加密的指令一同下载传输,加密过后的指令存放在dex文件中,这样安全性能得到提高,但是dex文件大小会改变,修改启动apk的入口,apk启动时,首先运行修改后的入口,读取dex文件,从dex文件中取出存放的加密指令,获得加密指令后,应用存放在assets目录里的秘钥对指令进行解密,并保存在assets目录中;SS06:抽空指令的dex文件放到手机指定目录下,运行加载dex,在Native层hooklibdvm.so中的dexfindclass函数,通过这个函数可以找到dex,在Java层使用dexclassloader加载dex,并且通过反射运行被抽空的类的方法,通过dexfile结构体获取被抽空的方法对应的指令,把上面保存在assets目录中解密后的指令还原。作为上述技术方案的进一步描述:所述dex文件是Dalvik可执行文件格式,Android平台的应用程序是由一个或者多个dex文件组成,是8字节的二进制流文件,且dex文件结构中存储着Android平台的应用程序所有类文件的信息。作为上述技术方案的进一步描述:所述dex文件结构主要包括文件头、索引区和数据区;所述文件头主要是对dex文件合法性校验,所述索引区主要是类、方法等的索引,所述索引可以在数据区找到对应的数据。作为上述技术方案的进一步描述:所述索引区包括字符串的索引String_ids、类型的索引Type_ids、方法原型的索引Proto_ids、域的索引Field_ids和方法的索引Method_ids;所述数据区包括类的定义区class_ids、数据去Data、和链接数据区LinkData。作为上述技术方案的进一步描述:所述类的定义区class_ids存储着源码中类的各种详细信息,其中dex文件修改的就是类的定义区class_ids中encode_method结构体,其中,encode_method结构体保存着类方法的详细信息。作为上述技术方案的进一步描述:所述encode_method结构体还是源码的逻辑结构,其中encode_method结构体中的code_item就是这个方法中的代码信息。作为上述技术方案的进一步描述:所述SS04步骤中字段checksum为文件校验码,其中,字段checksum用于检测文件损坏情况。作为上述技术方案的进一步描述:所述SS04步骤中字段signature是SHA-1签名,其中,字段signature用于对文件进行唯一标识。作为上述技术方案的进一步描述:所述SS04步骤中对dex文件进行重新校验包括对dex文件除magic和checksum字段之外的文件剩下的内容使用Adler-32校验算法进行算;所述SS04步骤中对dex文件进行重新校验还包括对对dex文件除magic、checksum和signature字段之外的文件的内容的进行SHA1计算。作为上述技术方案的进一步描述:所述SS04步骤中对dex文件进行重新校验,先进行SHA1计算,然后再进行Adler-32校验。有益效果本专利技术提供了一种基于安卓应用的文件传输保密系统。具备以下有益效果:该一种基于安卓应用的文件传输保密系统通过研究Android操作系统的安全弱点、Android应用程序的安全弱点、Android应用程序的逆向工程技术等,提出一个完整的安全保护方案,该一种基于安卓应用的文件传输保密系统从逆向工程入手,借鉴传统PC端的安全保护技术,结合Android平台本身的特点,将混淆、防反编译、动态加载、完整性校验、加密等方面融合为一体,采用多层安全保护措施,全面提高了应用程序的安全性能。附图说明图1为本专利技术提出的一种基于安卓应用的文件传输保密系统的整体示意图;图2为本专利技术中dex文件的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。实施例一,参照图1-2,一种基于安卓应用的文件传输保密系统,包括以下步骤:SS01:遍历dex文件结构找到class段、解析class段下的每个类的类数据,解析每个classItemData中的方法字段;SS02:进一步向结构体内部解析方法字段,找到code结构体的指令集数组,把指令数组进行AES加密后保存;SS03:在解析出指令数组后,把指令偏移处指定大小的字节流置为0,来返回一个指令集为0的dex文件的字节流,这样就找不到原指令数组对应的数据,达到隐藏代码的目的;SS04:由于对dex文件进行了修改,必须对dex文件进行重新校验,重新计算dex文件头中的两个字段checksum和signature,否则安装安卓应用的时候,系统校验不会通过。SS05:指令抽取后的安卓应用和加密本文档来自技高网...

【技术保护点】
1.一种基于安卓应用的文件传输保密系统,其特征在于,包括以下步骤:/nSS01:遍历dex文件结构找到class段、解析class段下的每个类的类数据,解析每个class Item Data中的方法字段;/nSS02:进一步向结构体内部解析方法字段,找到code结构体的指令集数组,把指令数组进行AES加密后保存;/nSS03:在解析出指令数组后,把指令偏移处指定大小的字节流置为0,来返回一个指令集为0的dex文件的字节流;/nSS04:由于对dex文件进行了修改,必须对dex文件进行重新校验,重新计算dex文件头中的两个字段checksum和signature;/nSS05:指令抽取后的安卓应用和加密过的指令数组上传到服务端,用户下载传输安卓应用时连同加密的指令一同下载传输,加密过后的指令存放在dex文件中,但是dex文件大小会改变,修改启动apk的入口,apk启动时,首先运行修改后的入口,读取dex文件,从dex文件中取出存放的加密指令,获得加密指令后,应用存放在assets目录里的秘钥对指令进行解密,并保存在assets目录中;/nSS06:抽空指令的dex文件放到手机指定目录下,运行加载dex,在Native层hooklibdvm.so中的dex find class函数,通过这个函数可以找到dex,在Java层使用dex classloader加载dex,并且通过反射运行被抽空的类的方法,通过dex file结构体获取被抽空的方法对应的指令,把上面保存在assets目录中解密后的指令还原。/n...

【技术特征摘要】
1.一种基于安卓应用的文件传输保密系统,其特征在于,包括以下步骤:
SS01:遍历dex文件结构找到class段、解析class段下的每个类的类数据,解析每个classItemData中的方法字段;
SS02:进一步向结构体内部解析方法字段,找到code结构体的指令集数组,把指令数组进行AES加密后保存;
SS03:在解析出指令数组后,把指令偏移处指定大小的字节流置为0,来返回一个指令集为0的dex文件的字节流;
SS04:由于对dex文件进行了修改,必须对dex文件进行重新校验,重新计算dex文件头中的两个字段checksum和signature;
SS05:指令抽取后的安卓应用和加密过的指令数组上传到服务端,用户下载传输安卓应用时连同加密的指令一同下载传输,加密过后的指令存放在dex文件中,但是dex文件大小会改变,修改启动apk的入口,apk启动时,首先运行修改后的入口,读取dex文件,从dex文件中取出存放的加密指令,获得加密指令后,应用存放在assets目录里的秘钥对指令进行解密,并保存在assets目录中;
SS06:抽空指令的dex文件放到手机指定目录下,运行加载dex,在Native层hooklibdvm.so中的dexfindclass函数,通过这个函数可以找到dex,在Java层使用dexclassloader加载dex,并且通过反射运行被抽空的类的方法,通过dexfile结构体获取被抽空的方法对应的指令,把上面保存在assets目录中解密后的指令还原。


2.根据权利要求1所述的一种基于安卓应用的文件传输保密系统,其特征在于,所述dex文件是Dalvik可执行文件格式,Android平台的应用程序是由一个或者多个dex文件组成,是8字节的二进制流文件,且dex文件结构中存储着Android平台的应用程序所有类文件的信息。


3.根据权利要求1所述的一种基于安卓应用的文件传输保密系统,其特征在于,所述dex文件结构主要包括文件头、索引区和数据区;
所述文件头主要是对dex文件合法性校验,所述索引区主要是类、方法等的索引,所述索引可以在数据区找到对应的数据。
<...

【专利技术属性】
技术研发人员:李勇常译文鲍新宇王家良王旭
申请(专利权)人:杭州天宽科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1