[发明专利]一种基于动态加解密的Android应用加固方法在审
申请号: | 201710331858.X | 申请日: | 2017-05-12 |
公开(公告)号: | CN107169324A | 公开(公告)日: | 2017-09-15 |
发明(设计)人: | 罗森林;尚海;潘丽敏;喻露 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/16 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 动态 解密 android 应用 加固 方法 | ||
1.一种Android应用加固方法,在于所述方法包括如下步骤:
步骤1,应用程序加密时,解压需要保护的Android应用APK文件,获取代码文件classes.dex,提取classes.dex中核心的方法代码,采用对称加密方法加密核心代码得到加密数据,将加密数据添加特殊起止标志位后,替换class.dex中关键代码,生成新的dex文件;
步骤2,设定另一密钥K2,将步骤1中生成的dex文件加密,将加密后的文件嵌入资源文件;
步骤3,对嵌入后的资源文件做签名,将两次加密密钥K1、K2,签名验证信息和解密程序、文件提取程序存入到so文件中,重新打包应用程序,签名生成新的APK文件;
步骤4,动态防御。应用程序运行时,主进程检测当前系统运行环境是否为模拟器或调试机、当检测到运行在模拟器和调试机、直接退出程序运行;主进程fork出子进程,主进程和子进程相互ptrace监控;子进程定时检测调试机和模拟器,检测到应用正在被调试,子进程退出,主进程监控到子进程已退出时,退出应用程序;
步骤5,完整性检测。提取so文件中的签名信息、验证签名信息是否正确;
步骤6,动态加载。应用程序运行时,提取资源文件中的加密文件和so库中的密钥K1、K2,利用K2对加密文件解密,得到中间代码,定位到关键代码加密位置,提取关键代码的加密数据,利用K1对关键代码解密,获取原始class.dex代码,加载至内存。
2.根据权利要求1所述的一种Android应用加固方法,其特征在于:步骤1中的关键代码包括Activity、Service生命周期函数、登录等涉及密钥与验证的代码、应用程序核心算法代码。
3.根据权利要求1所述的一种Android应用加固方法,其特征在于:步骤4中动态防御方案主进程和子进程多进程检测调试检测,主进程通过fork创建子进程,并相互ptrace监控。
4.根据权利要求1所述的一种Android应用加固方法,其特征在于:步骤4中主进程通过检测/proc/pid/status中的TracerPid判断是否被调试,检测系统文件/system/bin/qemu-props,/system/lib/libc_malloc_debug_qemu.so文件和目录/sys/qemu_trace判断是否运行在模拟器中。
5.根据权利要求1所述的一种Android应用加固方法,其特征在于:步骤4中子进程通过主进程检测方法以及检测IDA调试端口23946判断是否被IDA调试;检测时间差,判断IDA是否被单步调试。
6.根据权利要求1所述的一种Android应用加固方法,其特征在于:步骤4中,主进程和子进程通过管道pipe通信。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710331858.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种豆汁加工的方法
- 下一篇:一种天然茶油植脂末及其制备方法