[发明专利]一种安卓端VMP保护的实现方法及系统有效
申请号: | 202110491133.3 | 申请日: | 2021-05-06 |
公开(公告)号: | CN113127004B | 公开(公告)日: | 2022-08-16 |
发明(设计)人: | 刘德建;丁铖;何巍巍;陈宏展 | 申请(专利权)人: | 福建省天奕网络科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/70 |
代理公司: | 福州旭辰知识产权代理事务所(普通合伙) 35233 | 代理人: | 程勇 |
地址: | 350212 福*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 安卓端 vmp 保护 实现 方法 系统 | ||
1.一种安卓端VMP保护的实现方法,其特征在于,所述实现方法包括以下步骤:
步骤S1、使用JAVA函数开发应用的功能,并且引入JNI函数,将JAVA函数或JNI函数编译后生成so文件的.cpp格式文件命名为pro.cpp;
步骤S2、定义一个函数A,查看函数A的CodeItem,并且将函数A的CodeItem进行复制;
步骤S3、将函数A的代码全部删除,且在函数A所在的类别下定义函数A同名的JNI函数,使其参数类型保持一致;
步骤S4、在pro.cpp中将CodeItem的全部16进制数据定义为字节数组,将安卓系统源代码中CodeItem的定义复制到该cpp文件中;
步骤S5、在cpp文件定义函数A和解释器函数,且在函数A中调用解释器函数;
步骤S6、在解释器函数中将CodeItem的字节数组转换成该cpp文件中定义的CodeItem然后定义虚拟寄存器,申请成功之后分配参数;
步骤S7、逐条取出CodeItem中的指令,根据指令的不同建立选择表,再根据指令的opcode来编写C++代码完成对应的译码工作;
步骤S8、完成代码编写后,通过编译器对APK进行编译,在开发过程中实现VMP对APK的保护作用;所述步骤S5进一步具体为:函数A能够便于传递参数到解释器里面和得到解释器函数的返回值,且便于调用;解释器函数能够对原来的函数A进行取值,译码实现最初函数A实现的功能,函数A和解释器函数参数个数和类型保持和JAVA代码中的函数A一致。
2.一种安卓端VMP保护的实现系统,其特征在于:包括引用模块、定义模块、保持模块、复制模块、调用模块、分配模块、译码模块和编译模块;所述引用模块,即使用JAVA函数开发应用的功能,并且引入JNI函数,将JAVA函数或JNI函数编译后生成so文件的.cpp格式文件命名为pro.cpp;所述定义模块,即定义一个函数A,查看函数A的CodeItem,并且将函数A的CodeItem进行复制;所述保持模块,即将函数A的代码全部删除,且在函数A所在的类别下定义函数A同名的JNI函数,使其参数类型保持一致;所述复制模块,即在pro.cpp中将CodeItem的全部16进制数据定义为字节数组,将安卓系统源代码中CodeItem的定义复制到该cpp文件中;所述调用模块,即在cpp文件定义函数A和解释器函数,且在函数A中调用解释器函数;所述分配模块,即在解释器函数中将CodeItem的字节数组转换成该cpp文件中定义的CodeItem然后定义虚拟寄存器,申请成功之后分配参数;所述译码模块,即逐条取出CodeItem中的指令,根据指令的不同建立选择表,再根据指令的opcode来编写C++代码完成对应的译码工作;所述编译模块,即完成代码编写后,通过编译器对APK进行编译,在开发过程中实现VMP对APK的保护作用;所述调用模块进一步具体为:函数A能够便于传递参数到解释器里面和得到解释器函数的返回值,且便于调用;解释器函数能够对原来的函数A进行取值,译码实现最初函数A实现的功能;函数A和解释器函数参数个数和类型保持和JAVA代码中的函数A一致。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建省天奕网络科技有限公司,未经福建省天奕网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110491133.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种线束用两片式橡胶件
- 下一篇:半波回折式定向微波探测天线