安卓软件包自动加解密方法、装置、设备及存储介质制造方法及图纸

技术编号:32015062 阅读:10 留言:0更新日期:2022-01-22 18:32
本发明专利技术实施例提供一种安卓软件包自动加解密方法、装置、设备及存储介质,方法包括:当检测到对安卓软件包进行打包的指令时,启动预先集成在安卓IDE打包软件中的加解密模块;其中,所述加解密模块包括对资源文件和代码文件自动加密的gradle脚本,自动解密入口函数和用于拦截Java层系统API的拦截函数;根据所述gradle脚本,对所述安卓软件包中明文的资源文件和代码文件进行加密,并插入自动解密入口函数和用于拦截Java层系统API的拦截函数,获得密文的资源文件和代码文件;利用密文的资源文件和代码文件替换明文的资源文件和代码文件,获得加密后的安卓软件包。本发明专利技术能提高安装软件包加解密的安全性以及便捷性。件包加解密的安全性以及便捷性。件包加解密的安全性以及便捷性。

【技术实现步骤摘要】
安卓软件包自动加解密方法、装置、设备及存储介质


[0001]本专利技术涉及计算机
,具体而言,涉及一种支持自动晋升的任务管理方法、装置、设备及存储介质。

技术介绍

[0002]运行于Android操作系统的软件APK(Android application package),是一种基于ZIP文件格式的扩展格式,也是与JAR文件构造方式相似的一种格式文件。一个完整的APK文件必须包含有被编译的classes.dex代码文件,resources.arsc资源索引文件,assets原生资源(未被压缩编译)文件,lib动态库so文件,AndroidMainfest.xml清单文件,META

INF软件包签名文件,res二进制资源文件(除res/raw外)。其中,classes.dex代码文件可以有多个,命名规则为:classes.dex,classes2.dex,classes3.dex,以此类推;resources.arsc用来管理资源ID和对应资源路径的索引文件;assets目录下的文件未被压缩,原封不动的打包到APK软件里面,支持加载二级目录里面的资源;lib目录存放由c/c++编译生成的动态库so文件;AndroidMainfest.xml是APK软件包要求的唯一一个清单配置文件,里面记录了软件版本号,权限声明等详细信息;Android操作系统要求APK软件包必须签名后才可以正常安装使用,META

INF正是存放这些签名信息的目录;APK软件包所有的layout界面资源,drawable图片资源,xml配置资源,color颜色等资源都是存放在res目录里面,这些都是经过压缩后的二进制文件,除了res/raw原生目录外。
[0003]一些有心之人可通过Windows或Mac系统中的普通压缩软件,通过对APK软件包进行解压获取上述所有的文件。由于图片,xml布局,html,js等资源文件都是未加密存储,存在资源泄漏被盗用的风险。另外还可结合xml资源ID索引,通过逆向分析定位到smali中核心的业务功能代码,有被破解抄袭的风险。
[0004]目前基于Hook的安卓资源文件防护方法,可有效解决以上存在的风险问题。其通过对配置好的需加密的资源文件进行压缩,压缩成一zip文件;将压缩好的zip文件进行加密处理,得到经加密处理的zip文件并存储;将解密代码插入DEX文件内,并重新编译生成DEX文件;将加密后的资源文件进行重新打包;运行APK文件,并通过Hook系统进行拦截,将加密后的资源文件自动解密,并将解密后的资源文件返回给系统进行显示。
[0005]基于Hook的安卓资源文件防护方法可以对APK软件包里面的资源文件起到有效防护效果,但是其仍然存在以下几点不足之处:
[0006]一、安全性不够。该方案只对大部分资源文件加密,并没有实现对classes.dex代码文件和res/anim资源文件进行加密保护,仍然存在核心功能代码和资源文件泄漏的风险;
[0007]二、灵活性不够。该方案的解密函数入口依赖于application,如果APK软件包没有applicaiton,还需要侵入修改androidManifest.xml指向插入的applicaiton代码;
[0008]三、实操性不强。该方案解密过程中需要hook的系统API,既有java层面的ApkAssets:Open,FindEntry,又有so层面libziparchive.so的FindEntry,
FileDescriptor,不便于实际操作实现;
[0009]四、便捷性不够。该方案的整个加密打包流程需要人为手动处理,涉及到APK拆包,获取资源压缩成zip文件,加密处理zip文件,删除明文资源文件,插入解密代码,重新打包签名。操作步骤繁琐,细节众多,人为处理不仅耗时,而且容易出错。

技术实现思路

[0010]有鉴于此,本专利技术的目的在于提供一种安卓软件包自动加解密方法、装置、设备及存储介质,以改善上述问题。
[0011]本专利技术实施例提供了一种安卓软件包自动加解密方法,其包括:
[0012]当检测到对安卓软件包进行打包的指令时,启动预先集成在安卓IDE打包软件中的加解密模块;其中,所述加解密模块包括对资源文件和代码文件自动加密的gradle脚本,自动解密入口函数和用于拦截Java层系统API的拦截函数;
[0013]根据所述gradle脚本,对所述安卓软件包中明文的资源文件和代码文件进行加密,获得密文的资源文件和代码文件;
[0014]利用密文的资源文件和代码文件替换明文的资源文件和代码文件,并插入自动解密入口函数和用于拦截Java层系统API的拦截函数,获得加密后的安卓软件包。
[0015]优选地,还包括:
[0016]当检测到对加密后的安卓软件包进行安装的指令时,解压所述加密后的安卓软件包获取密文的资源文件和代码文件,并将密文的资源文件和代码文件解压到安卓系统的沙箱环境;
[0017]通过拦截函数拦截Java层系统的指定API,并根据自动解密入口函数对密文的资源文件和代码文件解密后,得到明文的资源文件和代码文件,并存储在所述沙箱环境;
[0018]动态加载明文的代码文件,同时把明文的资源文件添加/替换到资源搜索路径;
[0019]回显明文的资源文件和代码文件,此时被拦截的Java层系统的API会触发加载系统沙箱环境中的明文的资源文件和代码文件,并且在内存中明文显示。
[0020]优选地,利用密文的资源文件和代码文件替换明文的资源文件和代码文件包括:
[0021]加密并替换assets目录资源;
[0022]加密并替换res目录资源;
[0023]加密并替换lib目录资源;
[0024]加密并替换代码文件。
[0025]优选地,拦截Java层系统的指定API包括:
[0026]ResourcesImpl::loadXmlResourceParser,ResourcesImpl::loadDrawableForCookie;
[0027]AssetManager::openXmlResourceParser,AssetManager::open;
[0028]ApkAssets::loadFromPath;
[0029]System::load,System::loadLibrary。
[0030]优选地,自动解密入口函数利用provider实现。
[0031]优选地,gradle脚本在利用密文的资源文件和代码文件替换明文的资源文件和代码文件,获得加密后的安卓软件包的同时,对安卓软件包进行签名。
[0032]本专利技术实施例还提供了一种安卓软件包自动加解密装置,其包括:
[0033]打包单元,用于当检测到对安卓软件包进行打包的指令时,启动预先集成在安卓IDE打包软件中的加解密模块;其中,所述加解密模块包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种安卓软件包自动加解密方法,其特征在于,包括:当检测到对安卓软件包进行打包的指令时,启动预先集成在安卓IDE打包软件中的加解密模块;其中,所述加解密模块包括对资源文件和代码文件自动加密的gradle脚本,自动解密入口函数和用于拦截Java层系统API的拦截函数;根据所述gradle脚本,对所述安卓软件包中明文的资源文件和代码文件进行加密,获得密文的资源文件和代码文件;利用密文的资源文件和代码文件替换明文的资源文件和代码文件,并插入自动解密入口函数和用于拦截Java层系统API的拦截函数,获得加密后的安卓软件包。2.根据权利要求1所述的安卓软件包自动加解密方法,其特征在于,还包括:当检测到对加密后的安卓软件包进行安装的指令时,解压所述加密后的安卓软件包获取密文的资源文件和代码文件,并将密文的资源文件和代码文件解压到安卓系统的沙箱环境;通过拦截函数拦截Java层系统的指定API,并根据自动解密入口函数对密文的资源文件和代码文件解密后,得到明文的资源文件和代码文件,并存储在所述沙箱环境;动态加载明文的代码文件,同时把明文的资源文件添加/替换到资源搜索路径;回显明文的资源文件和代码文件,此时被拦截的Java层系统的API会触发加载系统沙箱环境中的明文的资源文件和代码文件,并且在内存中明文显示。3.根据权利要求1所述的安卓软件包自动加解密方法,其特征在于,利用密文的资源文件和代码文件替换明文的资源文件和代码文件包括:加密并替换assets目录资源;加密并替换res目录资源;加密并替换lib目录资源;加密并替换代码文件。4.根据权利要求1所述的安卓软件包自动加解密方法,其特征在于,拦截Java层系统的指定API包括:ResourcesImpl::loadXmlResourceParser,ResourcesImpl:...

【专利技术属性】
技术研发人员:聂晓阳叶木森施建安庄一波赵友平
申请(专利权)人:厦门市易联众易惠科技有限公司
类型:发明
国别省市:

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

1