The invention discloses a code reinforcement method and device. The method includes acquiring assembly instructions contained in the original code segment to be strengthened, determining assembly instruction operators in the assembly instructions, determining a virtual instruction conversion set matching the assembly instruction operators in the assembly instructions, generating virtual instructions corresponding to the assembly instructions according to the virtual instruction conversion set, and determining the assembly instruction operators contained in the original code segment. The assembly instructions are replaced by the virtual instructions corresponding to the assembly instructions to obtain the reinforced code segments. By replacing assembly instructions in the original code segment with virtual instructions, the original instructions in the original code segment can be hidden. On the premise that the original instructions are not included in the code segment at all, it is impossible for reverse developers to complete reverse cracking even if they try many times, thus enhancing the security of reinforcement.
【技术实现步骤摘要】
代码加固方法及装置
本专利技术涉及计算机
,具体涉及一种代码加固方法及装置。
技术介绍
随着科学技术与社会的不断发展,各种应用程序的数量也飞速增长。然而,程序逆向开发人员或程序逆向产品可以通过对应用程序的反编译,轻易获得应用程序中的源代码,从而使得对于应用程序盗版及重打包等现象也层出不穷。目前,为了提高应用程序反编译难度,反逆向编译技术人员往往会对应用程序进行加固处理,以提升安全性。例如,可以通过在程序中添加花指令、和/或伪造流程分支等方法进行加固处理。但是,专利技术人在实现本专利技术的过程中发现,传统的应用程序加固方式至少存在下述缺陷:在程序中添加花指令或伪造流程分支等方式无法隐藏真实的程序代码,程序逆向开发人员仍然可能在多次尝试之后依据真实的程序代码完成逆向破解。由此可见,现有的加固方式安全性较低。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的代码加固方法及装置。根据本专利技术的一个方面,提供了代码加固方法,包括:获取待加固的原始代码段中包含的汇编指令,确定所述汇编指令中的汇编指令操作符;确定与所述汇编指令中的汇编指令操作符相匹配的虚拟指令转换集,根据所述虚拟指令转换集生成所述汇编指令对应的虚拟指令;将所述原始代码段中包含的汇编指令替换为所述汇编指令对应的虚拟指令,以得到加固代码段。根据本专利技术的另一个方面,提供了代码加固装置,包括:获取模块,适于获取待加固的原始代码段中包含的汇编指令,确定所述汇编指令中的汇编指令操作符;生成模块,适于确定与所述汇编指令中的汇编指令操作符相匹配的虚拟指令转换集,根 ...
【技术保护点】
1.一种代码加固方法,包括:获取待加固的原始代码段中包含的汇编指令,确定所述汇编指令中的汇编指令操作符;确定与所述汇编指令中的汇编指令操作符相匹配的虚拟指令转换集,根据所述虚拟指令转换集生成所述汇编指令对应的虚拟指令;将所述原始代码段中包含的汇编指令替换为所述汇编指令对应的虚拟指令,以得到加固代码段。
【技术特征摘要】
1.一种代码加固方法,包括:获取待加固的原始代码段中包含的汇编指令,确定所述汇编指令中的汇编指令操作符;确定与所述汇编指令中的汇编指令操作符相匹配的虚拟指令转换集,根据所述虚拟指令转换集生成所述汇编指令对应的虚拟指令;将所述原始代码段中包含的汇编指令替换为所述汇编指令对应的虚拟指令,以得到加固代码段。2.根据权利要求1所述的方法,其中,所述汇编指令中的汇编指令操作符的类型包括多种,则所述方法进一步包括:预先设置多个分别与多种类型的汇编指令操作符相对应的虚拟指令转换集,通过预设的虚拟指令查询表存储各个虚拟指令转换集以及各种类型的汇编指令操作符之间的对应关系;则所述确定与所述汇编指令中的汇编指令操作符相匹配的虚拟指令转换集的步骤具体包括:查询所述虚拟指令查询表,确定与所述汇编指令操作符的类型相匹配的虚拟指令转换集。3.根据权利要求1或2所述的方法,其中,所述汇编指令对应的虚拟指令是由多个虚拟指令组成的虚拟指令组,则所述根据所述虚拟指令转换集生成所述汇编指令对应的虚拟指令具体包括:确定所述虚拟指令转换集中包含的各个虚拟指令操作符;根据所述汇编指令中的汇编指令操作数,确定与各个虚拟指令操作符相对应的虚拟指令操作数;根据各个虚拟指令操作符及其对应的虚拟指令操作数生成所述汇编指令对应的虚拟指令组。4.根据权利要求3所述的方法,其中,用于执行所述汇编指令的汇编指令寄存器的个数为N,则所述方法进一步包括:预先设置S个用于执行所述虚拟指令的虚拟指令寄存器;其中,S=N+M,N、M均为自然数。5.根据权利要求4所述的方法,其中,所述S个用于执行所述虚拟指令的虚拟指令寄存器包括:非...
【专利技术属性】
技术研发人员:何潇潇,潘剑锋,
申请(专利权)人:北京奇虎科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。