一种代码保护虚拟机KVM系统实现方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:20993016 阅读:30 留言:0更新日期:2019-04-29 22:52
本发明专利技术公开了一种代码保护虚拟机KVM系统实现方法、装置、计算机设备及存储介质,包括以下步骤:步骤一,生成伪代码字节流;步骤二,生成核心代码的虚拟机指令;步骤三,生成虚拟机运行环境和虚拟机解释引擎;步骤四,应用打包;步骤五,在虚拟机中采取读取‑分派的方式执行核心代码;本发明专利技术所提供的代码保护虚拟机KVM系统方法,将函数级别的代码完全虚拟化后编码为自由指令集格式,代码一旦虚拟化,永不解密,安全强度高;本KVM系统在编译器内部产生平台依赖代码之前对代码进行虚拟化,不依赖特定系统环境,兼容性好。

A Code Protection Virtual Machine KVM System Implementation Method, Device, Computer Equipment and Storage Media

The invention discloses a code protection virtual machine KVM system implementation method, device, computer equipment and storage medium, including the following steps: step 1, generating pseudocode byte stream; step 2, generating virtual machine instructions for core code; step 3, generating virtual machine operating environment and virtual machine interpretation engine; step 4, application packaging; step 5, taking steps in virtual machine. The core code is read and dispatched; the code protection method of the virtual machine KVM system provided by the present invention encoding function-level code into free instruction set format after full virtualization; once virtualized, the code will never be decrypted, and the security intensity is high; The KVM system virtualizes the code before the platform-dependent code is generated in the compiler, and does not depend on the specific system ring. Environments, good compatibility.

【技术实现步骤摘要】
一种代码保护虚拟机KVM系统实现方法、装置、计算机设备及存储介质
本专利技术涉及计算机代码保护领域,具体涉及代码保护虚拟机KVM系统实现方法。
技术介绍
随着移动互联网的飞速发展,其广泛的应用充斥着人们的生活,移动应用市场急剧膨胀扩张。但是在应用安全性方面的缺失,直接导致企业应用被逆向破解,业务执行逻辑被阻断,病毒植入、仿冒侵权、信息截取等黑客攻击,严重影响了企业收益与用户体验。攻击者的攻击手法主要有针对端和链路的攻击。由于移动应用运行在用户终端之上,攻击者只需要逆向破解端应用,就可以非法利用程序漏洞分析程序的脆弱性。基于此,端和链路的防护技术也是层出不穷,从加壳、代码混淆到Java2C,基于代码加密强度和兼容性,代码虚拟化技术被提出。通过代码虚拟化技术,对代码进行转换加密,使得攻击者无法得知具体的转换指令,进而达到保护代码信息的目的。其不可逆的特性防止攻击者逆向分析客户端代码,从而保证客户端代码安全。传统代码虚拟化技术必须通过Java虚拟机提供的JNI接口与java虚拟机进行交互,攻击者可以直接将代码虚拟化方案当作黑盒,通过自定义的JNI接口对象,对黑盒内部进行探测、记录和分析,进而得到完整DEX程序。因此,为解决现有技术中存在的不足,设计一种加固强度更高、可移植性更好、兼容性更好的代码保护虚拟机KVM系统是亟待解决的技术问题。
技术实现思路
本专利技术的目的在于针对现有技术的缺陷和不足,提供一种代码保护虚拟机KVM系统方法、装置、计算机设备及存储介质。一种代码保护虚拟机KVM系统实现方法,包括以下步骤:步骤1,生成伪代码字节流:把用户待保护的核心代码通过编译器翻译为伪代码字节流;所述步骤1的编译器为LLVM编译器,所述LLVM编译器是模块化、可复用的编译器工具链集合。步骤2,生成虚拟机指令:将伪代码字节流转换为核心代码的虚拟机指令;所述虚拟机指令的生成,是通过虚拟机工具链将伪代码字节流直译为自定义构造的虚拟机指令。步骤3,生成虚拟机:源包中插入软件开发工具包生成虚拟机运行环境和虚拟机解释引擎;所述步骤3中的虚拟机运行环境包括感知环境变化的探针,所述探针可以实时探测虚拟机环境的非正常流程变化。步骤4,应用打包:待步骤2和步骤3完成之后,在代码研发平台进行应用打包,生成目标代码;步骤5,在虚拟机中执行核心代码:核心代码的虚拟机指令由内嵌入虚拟机运行环境中的虚拟机解释引擎,采取读取-分派的方式执行。一种代码保护虚拟机KVM系统装置,其中包括以下模块:编译模块,用于将待保护的核心代码通过编译器翻译为伪代码字节流;虚拟机模块,包括用于生成虚拟机运行环境和虚拟机解释引擎,以及将伪代码字节流生成核心代码的虚拟机指令;所述虚拟机指令是通过虚拟机工具链将伪代码字节流转换得到,所述虚拟机工具链包括虚拟CPU解释引擎以及完备虚拟指令,虚拟机模块在代码研发平台进行应用打包,生成目标代码。运行模块:用于在APP内部隔离出独立的执行环境中,将核心代码的虚拟机指令由虚拟机解释引擎采取读取-分派的方式执行。一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述代码保护虚拟机KVM方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现所述代码保护虚拟机KVM方法的步骤。采用上述技术方案,本专利技术有益效果为:本专利技术提供的代码保护虚拟机KVM方法、系统是通过自定义的虚拟CPU指令,将函数级别的代码完全虚拟化后编码为自由指令集格式,代码一旦虚拟化,永不解密,其不可逆的特性可避免核心技术被逆向分析,从而达到非常高的安全强度;本代码保护虚拟机KVM系统实现方法通过对源文件的函数单位进行选择性虚拟化,具备粒度细,可控性高,隐蔽性强等特点;本代码保护虚拟机KVM实现方法通过在编译器内部产生平台依赖代码之前对代码进行虚拟化,不依赖特定系统环境,无兼容性问题,天然兼容所有CPU架构;本代码保护虚拟机KVM系统基于LLVM-IR中间代码进行虚拟化,成功后再生成目标代码,不干预正常APP运行。附图说明为了更清楚地说明本专利技术的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的KVM系统实现方法流程示意图;图2为本申请实施例提供的KVM系统的虚拟机指令流程示意图;图3为本申请实施例提供的KVM系统打包成目标文件的一示意图;图4为本申请实施例提供的KVM系统虚拟机执行示意图。图5为本申请实施例提供的KVM系统装置模块图;图6是本专利技术一实施例中计算机设备的一示意图。具体实施方式下面结合附图对本专利技术作进一步的说明。传统加固防护技术在不断演进,从加壳、代码混淆到Java2C,大家都在努力探索行之有效的防御技术和产品,以应对日益严峻的黑灰产威胁。不容乐观的是,针对传统防御技术的破解工具层出不穷,防御效果大打折扣,同时,传统的加固技术也满足不了IoT行业的需求。为解决现有技术中加固强度不足、可移植性差、兼容性差等问题,本申请提供一种代码虚拟化技术。下文以该技术的执行主体为代码虚拟化模块为例,对该技术的实施方式进行介绍。可以理解,该技术的执行主体为代码虚拟化模块只是一种示例性的说明,并不应理解为对该技术的限定。如图1-图3所示,本代码保护虚拟机KVM系统实现方法,其实现主要包括以下步骤:S1生成伪代码字节流:把用户待保护的核心代码通过编译器翻译为伪代码字节流;S2,生成虚拟机指令:将伪代码字节流转换为核心代码的虚拟机指令;S3,生成虚拟机:源包中插入软件开发工具包生成虚拟机运行环境和虚拟机解释引擎;S4,应用打包:待步骤2和步骤3完成之后,在代码研发平台进行应用打包,生成目标代码;S5,在虚拟机中执行核心代码:核心代码的虚拟机指令由内嵌入虚拟机运行环境中的虚拟机解释引擎,采取读取-分派的方式执行。可选的,所述虚拟机指令的生成,是通过虚拟机工具链将伪代码字节流直译为自定义构造的虚拟机指令。所述虚拟机工具链包括编译器、软件开发工具包、虚拟机解释引擎以及完备虚拟指令。所述完备虚拟机指令,在本实施例中可以理解为将所有的伪代码字节流全部转换为虚拟机指令,包括所有的mov/push/add指令等以及指令与指令的交叉互用,所有源arm/arm64/x86/x64架构系统机器的语言映射,都一一做了自定义和优化,相当于重新做了一套系统,实现了源系统的所有指令,以及指令与指令的交叉互用的指令转换。可选的,编译器为LLVM编译器,所述LLVM编译器是模块化、可复用的编译器工具链集合,同时所述LLVM编译器参与步骤2的虚拟机指令,步骤3的虚拟机的生成。可选的,虚拟机运行环境包括感知环境变化的探针,所述探针可以实时探测虚拟机环境的非正常流程变化。如图1-2所示,以下实施例详细的介绍本专利技术所述方法的具体步骤,S1中,一种实施中,生成伪代码字节流是通过编译器套件LLVM编译器将待保护的源代码(如C、C++、Objective-C)通过编译器前端等价转换为中间二进制文件(也称本文档来自技高网...

【技术保护点】
1.一种代码保护虚拟机KVM系统实现方法,其特征在于:包括以下步骤:步骤1,生成伪代码字节流:把用户待保护的核心代码通过编译器翻译为伪代码字节流;步骤2,生成虚拟机指令:将伪代码字节流转译为核心代码的虚拟机指令;步骤3,生成虚拟机:源包中插入软件开发工具包生成虚拟机运行环境和虚拟机解释引擎;步骤4,应用打包:待步骤2和步骤3完成之后,在代码研发平台进行应用打包,生成目标代码;步骤5,在虚拟机中执行核心代码:运行目标代码时,核心代码的虚拟机指令由内嵌入虚拟机运行环境中的虚拟机解释引擎,采取读取‑分派的方式执行。

【技术特征摘要】
1.一种代码保护虚拟机KVM系统实现方法,其特征在于:包括以下步骤:步骤1,生成伪代码字节流:把用户待保护的核心代码通过编译器翻译为伪代码字节流;步骤2,生成虚拟机指令:将伪代码字节流转译为核心代码的虚拟机指令;步骤3,生成虚拟机:源包中插入软件开发工具包生成虚拟机运行环境和虚拟机解释引擎;步骤4,应用打包:待步骤2和步骤3完成之后,在代码研发平台进行应用打包,生成目标代码;步骤5,在虚拟机中执行核心代码:运行目标代码时,核心代码的虚拟机指令由内嵌入虚拟机运行环境中的虚拟机解释引擎,采取读取-分派的方式执行。2.根据权利要求1所述的一种代码保护虚拟机KVM系统实现方法,其特征在于:所述步骤2中的所述虚拟机指令的生成,是通过虚拟机工具链将伪代码字节流直译为自定义构造的虚拟机指令。3.根据权利要求1所述的一种代码保护虚拟机KVM系统实现方法,其特征在于:所述步骤1的编译器为LLVM编译器,所述LLVM编译器是模块化、可复用的编译器工具链集合,同时所述LLVM编译器参与步骤2的虚拟机指令,步骤3的虚拟机的生成。4.根据权利要求1所述的一种代码保护虚拟机KVM系统实现方法,其特征在于:所述步骤3中的虚拟机运行环境包括感知环境变化的探针,所述探针可以实时探测虚拟机环境的非正常流程变化。5.一种...

【专利技术属性】
技术研发人员:刘柏江范俊伟
申请(专利权)人:成都盈海益讯科技有限公司
类型:发明
国别省市:四川,51

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

1