一种二进制应用程序安全加固方法和系统技术方案

技术编号:37292264 阅读:32 留言:0更新日期:2023-04-21 03:23
本发明专利技术涉及一种二进制应用程序安全加固方法和系统,属于程序加固技术领域。本发明专利技术将二进制应用程序作为一个整体,通过对其压缩与加密等处理进行多态加固,并将解压与解密等处理流程的多态转换程序放入新的二进制应用程序中,在用户执行二进制应用程序时,本系统自动对加固后的二进制应用程序进行解压与解密处理,将用户的二进制应用程序从加固后二进制应用程序中恢复出来。本发明专利技术安全加固后二进制应用程序体积可控,不会影响程序的执行效率;未添加花指令,与处理器架构无关;可为每个应用程序单独设计密码,提高程序安全性。提高程序安全性。提高程序安全性。

【技术实现步骤摘要】
一种二进制应用程序安全加固方法和系统


[0001]本专利技术属于程序加固
,具体涉及一种二进制应用程序安全加固方法和系统。

技术介绍

[0002]近年来,随着计算机技术的不断发展,针对软件的破解、逆向分析等软件层出不穷。一些恶意破解、盗版软件产品的人员,可以轻易地获取软件的逻辑流程、算法,这些软件一旦遭受攻击,将给人民带来不可承受的损失。为了保障二进制软件的安全,安全加固技术应用而生。
[0003]北京邮电大学张清泉的论文“基于Clang的C++代码混淆工具设计与实现”将已有的代码混淆技术与C++语言结合,将抽象的研究成果进行适配,应用到C++这种具体的语言上,实现针对C++的代码混淆工具。
[0004]广东工业大学的王志月的论文“C/C++程序的控制流混淆技术研究”研究工作如下:1、针对程序切片攻击,本文提出了一种基于程序切片的控制流混淆技术。基于C/C++源程序的控制流分析,该技术通过计算程序的静态切片及冗余切片,对程序中需要保护的敏感信息片段进行变量编码、增加循环变量等混淆操作,增强程序的数据依赖关系,提高控制流程的复杂度,从而确保程序能有效抵御程序切片攻击。2、针对控制流压缩算法存在的缺陷,提出一种基于伪别名的控制流压缩算法。首先利用数组伪别名算法加密控制流压缩中的派遣变量(控制流压缩后决定代码块执行顺序的next变量),再根据C/C++指针的特性,提出了指针伪别名的不透明谓词构造算法,对控制流压缩后每个case语句中的控制块进行谓词插入,以对抗反汇编工具的攻击,使得攻击者无法重构控制流
[0005]张清泉的论文的目的是提出具有实用性的C++代码混淆思路,并设计实现具体的Clang工具,重点解决的是C++语言的代码混淆。由于处理器指令集不兼容,操作系统更新升级速度较快,导致用户需要在新环境中适配Clang工具,才能进行代码混淆,在一定程度上增加了实现混淆的难度,限制该方法的推广。
[0006]王志月的论文提出的基于伪别名的控制流压缩算法,针对的是C/C++语言,在程序中的控制块进行谓词插入,即写入与程序无关的指令增加反汇编后程序理解的难度,然而该种加固方法常常会引起程序膨胀。

技术实现思路

[0007](一)要解决的技术问题
[0008]本专利技术要解决的技术问题是如何提供一种二进制应用程序安全加固方法和系统,以解决代码混淆难度高,常常会引起程序膨胀等方面的问题。
[0009](二)技术方案
[0010]为了解决上述技术问题,本专利技术提出一种二进制应用程序安全加固方法,该方法包括如下步骤:
[0011]S11、命令处理模块处理用户的命令,需要用户输入待加固的二进制应用程序的参数,包括名称、加固后程序名称和加密密码;
[0012]S12、读取二进制应用程序
[0013]根据第一步获取到的参数,从磁盘中读取待加固二进制应用程序到内存中;
[0014]S13、加固二进制应用程序
[0015]利用多态转换程序和密码对读取到内存的二进制应用程序进行多态加固,形成经过多态转换后的二进制应用程序;
[0016]S14、形成安全加固后的二进制应用程序
[0017]读取多态转换程序到内存中,将读取到的多态转换程序、密码数据与经过多态转换后的二进制应用程序合并,形成安全加固后的二进制应用程序。
[0018]进一步地,所述步骤S13中,多态转换程序包括压缩与加密两个处理过程,通过压缩与加密对用户二进制应用程序进行多态转换。
[0019]进一步地,在进行压缩处理时,选择Zlib程序。
[0020]进一步地,在进行加密处理时,根据输入的加密密码,对程序进行加密处理;如果密码为空,将分配一个默认密码,此时密码安全级别较低。
[0021]进一步地,加密算法使用AES算法。
[0022]进一步地,梭梭树步骤S14中二进制应用程序合并的顺序是:首先多态转换程序,其次密码数据,最后是用户二进制应用程序。
[0023]一种二进制应用程序安全加固方法,该方法包括如下步骤:
[0024]S21、命令处理模块处理用户的命令,包括二进制应用程序参数和解密密码;
[0025]S22、分离程序
[0026]将多态转换程序、密码数据以及经过多态转换后二进制应用程序依次从加固后的二进制应用程序中分离;
[0027]S23、解码二进制应用程序
[0028]执行多态转换程序,首先将上一个步骤读取的经过多态转换后二进制应用程序进行解压缩,然后校验密码,密码正确后进行解密处理,得到用户的二进制应用程序;
[0029]S24、执行二进制应用程序
[0030]根据用户输入的二进制应用程序参数,设置二进制应用程序的权限,执行该二进制应用程序。
[0031]进一步地,所述步骤S22中,分离方法是按照每一个组成部分的大小,调用操作系统的文件处理函数,依次从加固后的二进制应用程序文件中读取。
[0032]进一步地,假设加固后的二进制应用程序文件大小为M字节,首先从文件开始位置读取多态转换程序存放的区域,该区域的大小是固定的,假设为N字节,则从加固后二进制应用程序文件读取的长度是N字节;密码数据区域根据加密算法以及密码的要求设定区域大小,假设为P字节,则从加固后二进制应用程序文件中继续读取P字节;加固后二进制应用程序文件剩余的部分长度为M

N

P字节,为经过多态转换后的二进制应用程序存放区域。
[0033]一种二进制应用程序安全加固系统,该系统包括二进制应用程序加固模块与多态转换模块;
[0034]二进制应用程序加固模块用于压缩和加密二进制应用程序,并将二进制应用程序
与多态转换程序合并后,形成安全加固后的二进制应用程序;
[0035]多态转换模块将加固后的二进制应用程序进行反向处理,将用户的二进制应用程序从安全加固后二进制应用程序中恢复。
[0036](三)有益效果
[0037]本专利技术提出一种二进制应用程序安全加固方法和系统,本专利技术设计了一种二进制应用程序安全加固方法,将用户二进制应用程序作为一个整体进行多态转换,无需写入花指令,本专利技术做到与处理器架构无关,并且可为每个二进制应用程序设置单独的密码。
[0038]经过本系统加固后的二进制应用程序,由于用户的二进制应用程序被压缩以及加密,一般的市面的反汇编软件无法读取与解析二进制应用程序。通过这种方法加固的二进制应用程序,由于没有添加与程序无关的指令到二进制应用程序中,因此加固后的程序体积可控,执行效率没有影响。并且每个二进制应用程序均可设置单独密码,二进制应用被破解难度更大。
[0039]本专利技术提供一种二进制应用程序安全加固方法,与现有技术相比,本专利技术的优势在于:安全加固后二进制应用程序体积可控,不会影响程序的执行效率;未添加花指令,与处理器架构无关;可为每个应用程序单独设计密码,提高程序安全性。
附图说明...

【技术保护点】

【技术特征摘要】
1.一种二进制应用程序安全加固方法,其特征在于,该方法包括如下步骤:S11、命令处理模块处理用户的命令,需要用户输入待加固的二进制应用程序的参数,包括名称、加固后程序名称和加密密码;S12、读取二进制应用程序根据第一步获取到的参数,从磁盘中读取待加固二进制应用程序到内存中;S13、加固二进制应用程序利用多态转换程序和密码对读取到内存的二进制应用程序进行多态加固,形成经过多态转换后的二进制应用程序;S14、形成安全加固后的二进制应用程序读取多态转换程序到内存中,将读取到的多态转换程序、密码数据与经过多态转换后的二进制应用程序合并,形成安全加固后的二进制应用程序。2.如权利要求1所述的二进制应用程序安全加固方法,其特征在于,所述步骤S13中,多态转换程序包括压缩与加密两个处理过程,通过压缩与加密对用户二进制应用程序进行多态转换。3.如权利要求2所述的二进制应用程序安全加固方法,其特征在于,在进行压缩处理时,选择Zlib程序。4.如权利要求2所述的二进制应用程序安全加固方法,其特征在于,在进行加密处理时,根据输入的加密密码,对程序进行加密处理;如果密码为空,将分配一个默认密码,此时密码安全级别较低。5.如权利要求4所述的二进制应用程序安全加固方法,其特征在于,加密算法使用AES算法。6.如权利要求1

5任一项所述的二进制应用程序安全加固方法,其特征在于,梭梭树步骤S14中二进制应用程序合并的顺序是:首先多态转换程序,其次密码数据,最后是用户二进制应用程序。7.一种二进制应用程序安全加固方法,其特征在于,该方法包括如下步骤:S21、命令处理模块处理用户的命令,包括二进制应用程序参数和解密密...

【专利技术属性】
技术研发人员:张记强金玉川张广申蒋萧猛王辉
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:

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

1