[发明专利]基于LLVM的Android应用程序虚拟化保护方法有效
| 申请号: | 202011351267.7 | 申请日: | 2020-11-27 |
| 公开(公告)号: | CN112395614B | 公开(公告)日: | 2023-07-28 |
| 发明(设计)人: | 俞研;吴超;邓芳伟;付安民;苏铓 | 申请(专利权)人: | 南京理工大学 |
| 主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F8/30;G06F8/41;G06F8/73 |
| 代理公司: | 南京理工大学专利中心 32203 | 代理人: | 陈鹏 |
| 地址: | 210094 *** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 llvm android 应用程序 虚拟 保护 方法 | ||
1.一种基于LLVM的Android应用程序虚拟化保护方法,其特征在于,包括如下步骤:
步骤1、将待保护的函数加入到分级保护列表中;
步骤2、将分级保护列表中的函数Native化;
步骤3、将Native化的函数通过Clang编译器编译为LLVM IR,然后定制Pass抽取IR指令;
步骤4、自定义指令集并且通过虚拟指令动态映射方法实现LLVM IR到自定义指令集的动态映射;所述虚拟指令动态映射方法为:根据步骤3抽取的一组IR指令,随机生成一维的质数集合{mi},然后通过扩展欧几里得或者费马小定理将映射关系保存在质数集和一元线性同余方程组的唯一解当中,最后通过中国剩余定理还原出其原始的IR指令;
步骤5、定制Pass进行自定义指令解释,并将所有逻辑封装为动态链接库文件,打包到APK中。
2.根据权利要求1所述的基于LLVM的Android应用程序虚拟化保护方法,其特征在于,所述步骤1中待保护的函数包括:需要敏感权限授权的函数、用户提供的待保护函数、涉及Activity组件的回调函数以及Android应用程序中函数执行时间占比高于设定的门限值的函数。
3.根据权利要求1所述的基于LLVM的Android应用程序虚拟化保护方法,其特征在于,所述步骤2中函数Native化步骤为:
步骤2-1、通过开源工具Androguard构建Dex文件的控制流图;
步骤2-2、基于控制流图直接从抽象语法树中直接构建基于SSA的IR;
步骤2-3、将SSAIR中的变量按照Dalvik指令进行类型推导;
步骤2-4、消除IR中的PHI节点并进行C/C++代码生成。
4.根据权利要求1所述的基于LLVM的Android应用程序虚拟化保护方法,其特征在于,所述步骤3中定制Pass抽取IR指令,包括:编写自定义Pass,遍历模块的每个方法,然后找到每个基本块中的IR指令,将每条IR指令的操作码和操作数保存在自定义数据结构中。
5.根据权利要求1所述的基于LLVM的Android应用程序虚拟化保护方法,其特征在于,所述步骤5中将所有逻辑封装为动态链接库文件,打包到APK中,包括:编写多个Pass实现Android应用程序虚拟化保护的所有程序逻辑,然后将Pass编译成动态链接库文件,使用NDK导出独立工具链,通过Shell脚本控制编译过程,工具链将其打包生成可执行文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学,未经南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011351267.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:成像检测条包烟分离方法
- 下一篇:一种油莎豆翻晒机





