CN113282892A - 代码混淆方法、装置、计算机设备和存储介质 - Google Patents

代码混淆方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113282892A
CN113282892A CN202110410240.9A CN202110410240A CN113282892A CN 113282892 A CN113282892 A CN 113282892A CN 202110410240 A CN202110410240 A CN 202110410240A CN 113282892 A CN113282892 A CN 113282892A
Authority
CN
China
Prior art keywords
plaintext
code
function
obfuscation
ciphertext
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110410240.9A
Other languages
English (en)
Inventor
母天石
林克全
王健
冯国聪
林志达
衡星辰
张华兵
李慧娟
毕凯峰
邓子杰
周磊
叶思斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Southern Power Grid Digital Platform Technology Guangdong Co ltd
Original Assignee
Southern Power Grid Digital Grid Research Institute Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southern Power Grid Digital Grid Research Institute Co Ltd filed Critical Southern Power Grid Digital Grid Research Institute Co Ltd
Priority to CN202110410240.9A priority Critical patent/CN113282892A/zh
Publication of CN113282892A publication Critical patent/CN113282892A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请涉及一种代码混淆方法、装置、计算机设备和存储介质。所述方法包括:通过获取待混淆代码中的明文;根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;利用解密函数替换待混淆代码中的明文。采用本方法能够达到提高混淆代码的复杂程度、增强代码安全性的目的。

Description

代码混淆方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据保护技术领域,特别是涉及一种代码混淆方法、装置、计算机设备和存储介质。
背景技术
当前互联网技术发展迅速,PC端、移动端互联网应用技术呈指数增长,与此同时带来了关键技术代码泄漏问题。对于大多数WEB项目,可分为独立的前端、后端两部分,后端代码通常由编译器编译为字节码文件后运行,如Java的.class文件,使用者无法直接看到源代码实现,从而保护了代码的安全。
然而对于前端代码,Javascript是由浏览器直接解释执行,可以轻易的通过F12或Ctrl+U查看源代码,即使是移动端应用,也可以通过解压apk安装包的方式获取源代码,因此,Javascript代码非常容易泄露,容易被窃取和篡改,安全性低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高代码安全性的代码混淆方法、装置、计算机设备和存储介质。
一种代码混淆方法,方法包括:
获取待混淆代码中的明文;
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;
利用解密函数替换待混淆代码中的明文。
在其中一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文;
根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文;
整合密文和函数关系得到解密函数。
在其中一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文包括:
若明文是字符串或常量类别,则获取一个数组;
将明文中的字符串或常量转换为函数调用的形式,并放入数组中;
将数组转换为第一字符串;
对第一字符串进行加密处理得到第二字符串;
对第二字符串进行编码,得到密文。
在其中一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文包括:
若明文是字符串、常量或布尔类别,则对明文进行加密处理,得到密文。
在其中一个实施例中,根据明文的类别,对明文进行加密处理,得到密文包括:
若明文是运算表达式类别,则获取明文中表达式的左值和右值;
根据明文中表达式的运算关系建立运算函数;
将左值和右值放入运算函数中,得到密文。
在其中一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
若明文是字符串、常量或布尔类别,将明文放入函数关系中得到解密函数,函数关系用于被调用时直接返回明文。
在其中一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
若明文是函数调用类别,将明文放入函数关系中得到解密函数;
方法还包括:
获取明文在函数关系中的位置,根据位置得到对应的相关参数,相关参数用于在解密时确定明文在待混淆代码中的位置。
一种代码混淆装置,装置包括:
明文获取模块,用于获取待混淆代码中的明文;
解密构建模块,用于根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;
代码混淆模块,用于利用解密函数替换待混淆代码中的明文。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取待混淆代码中的明文;
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;
利用解密函数替换待混淆代码中的明文。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待混淆代码中的明文;
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;
利用解密函数替换待混淆代码中的明文。
上述代码混淆方法、装置、计算机设备和存储介质,通过获取待混淆代码中的明文;根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;利用解密函数替换待混淆代码中的明文。能够达到提高混淆代码的复杂程度、增强代码安全性的目的。
附图说明
图1为一个实施例中代码混淆方法的流程示意图;
图2为一个实施例中得到解密函数方法的流程示意图;
图3为一个实施例中得到密文方法的流程示意图;
图4为另一个实施例中得到密文方法的流程示意图;
图5为一个实施例中代码混淆装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种代码混淆方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的***,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤102,获取待混淆代码中的明文。
具体地,处理器通过词法分析语法对待混淆代码进行分析,生成抽象语法树;根据抽象语法树中不同类别的明文节点提取明文。明文的类别包括字符串、常量、布尔、函数调用和运算表达式中至少一种,其中,运算表达式包括'+'、'-'、'*'、'/'、'%'、'>'、'<'、'>='、'<='、'=='、'!='、'==='、'!=='。
其中,在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构;明文就是源代码中未经过混淆处理的代码。待混淆代码是指未经过混淆处理的源代码。
步骤104,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数。
具体的,处理器根据明文的类别,采用预设的混淆方式对明文进行混淆处理,从而得到解密函数。其中,一种混淆方式是将明文通过预设的加密方法转换成密文,然后构建一个解密函数,将密文放入解密函数中,解密函数被调用时,能够将密文转换为明文;另一种混淆方式是不对明文进行加密处理,直接构建一个解密函数,将明文直接放入解密函数中,该解密函数被调用时,能够直接返回明文。
步骤106,利用解密函数替换待混淆代码中的明文。
具体的,利用抽象语法树得到明文在待混淆代码中的位置信息,根据位置关系将解密函数替换待混淆代码中的明文。
上述代码混淆方法中,通过获取待混淆代码中的明文;根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;利用解密函数替换待混淆代码中的明文。能够达到提高混淆代码的复杂程度、增强代码安全性的目的。
在一个实施例中,如图2所示,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
步骤202,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文。
具体的,当明文是字符串、常量、布尔和和运算表达式类别时,可以对明文进行混淆处理得到密文,根据代码混淆需求选择预设的混淆方式,不同的混淆方式得到的密文的复杂程度不同,解密的难易程度不同。
步骤204,根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文。
具体的,处理器根据混淆方式,从预设的混淆方式和解密函数的映射关系中,选择对应的函数关系,之后将密文放入该函数关系中。
步骤206,整合密文和函数关系得到解密函数。
具体的,根据函数关系,将密文转换为函数调用的形式,该函数关系和密文共同构成解密函数;混淆代码在被解密时,调用解密函数,解密函数对密文进行转换处理,得到待混淆代码(即源代码)中的明文。例如,待混淆代码里面是var name=“jim”转换成var name=getstring(“aaaaaa”);这个aaaaa就是把jim加密后的密文,这个getstring就是构建的函数关系,getstring(“aaaaaa”)就是解密函数。
进一步的,在混淆代码解密时,调用解密函数getstring(“aaaaaa”),能够得到jim。
本实施例中,通过根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文;根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文;整合密文和函数关系得到解密函数。进一步提高了混淆代码的复杂程度、增强了代码安全性。
在一个实施例中,如图3所示,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文包括:
步骤302,若明文是字符串或常量类别,则获取一个数组。
具体的,若明文是字符串或常量类别,则定义一个数组。其中,数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按有序的形式组织起来的一种形式,是用于储存多个相同类型数据的集合。
步骤304,将明文中的字符串或常量转换为函数调用的形式,并放入数组中。
具体的,将字符串或常量转换为函数调用的形式,比如:var name=“jim”;变为:var name=getstring(110),其中,jim是明文中的字符串,getstring(110)是转换后的函数调用,当调用getstring(110)时,返回字符串jim;将明文中的所有的字符串或常量转换为函数调用的形式后,全部放入数组中,每一个字符串或常量转换的函数调用就是数组中的一个元素,为每个元素设置下标参数,其中,下标参数用于区分数组中的每一个元素,可用于解密时提取数组中的每一个元素。
步骤306,将数组转换为第一字符串。
具体的,将整个数组转换为字符串的数据类型,以便于进一步的加密处理。
步骤308,对第一字符串进行加密处理得到第二字符串。
具体的,选择满足需求的加密方法将第一字符串加密处理得到第二字符串。其中,加密方法包括异或运算加密、base64加密,对称算法加密、非对称算法加密或自定义的算法加密。
步骤310,对第二字符串进行编码,得到密文。
具体的,对第二字符串进行编码加密处理,得到密文。例如,使用JavaScript内置API encodeURIComponent函数,对第二字符串进行编码,得到编码过后新的字符串,若不再做进一步的加密处理,则此时得到密文。
本实施例中,通过若明文是字符串或常量类别,则获取一个数组;将明文中的字符串或常量转换为函数调用的形式,并放入数组中;将数组转换为第一字符串;对第一字符串进行加密处理得到第二字符串;对第二字符串进行编码,得到密文。进一步提高了混淆代码的复杂程度、增强了代码安全性。
在一个实施例中,一种代码混淆方法,包括:获取待混淆代码中的明文,若明文是字符串或常量类别,则获取一个数组;将明文中的字符串或常量转换为函数调用的形式,并放入数组中;将数组转换为第一字符串;对第一字符串进行加密处理得到第二字符串;对第二字符串进行编码,得到密文;根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文;整合密文和函数关系得到解密函数;利用解密函数替换待混淆代码中的明文。混淆代码解密时,调用解密函数,解密函数先对密文进行解编码处理得到第二字符串,然后对第二字符串进行解密处理得到第一字符串。解密方法与上述几种加密方法相对应,将第一字符串反转换后得到数组;根据数组中的下标参数,从数组中提取出明文,并找到明文在源代码中的位置,将明文替换解密函数,解密完成。
在一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文包括:若明文是字符串、常量或布尔类别,则对明文进行加密处理,得到密文。
具体的,若明文是字符串、常量或布尔类别,可以直接选择满足需求的加密方法将明文加密处理得到密文。其中,加密方法包括异或运算加密、base64加密,对称算法加密、非对称算法加密或自定义的算法加密。
本实施例中,通过若明文是字符串、常量或布尔类别,则对明文进行加密处理,得到密文。进一步提高了混淆代码的复杂程度、增强了代码安全性。
在一个实施例中,如图4所示,根据明文的类别,对明文进行加密处理,得到密文包括:
步骤402,若明文是运算表达式类别,则获取明文中表达式的左值和右值。
具体的,例如待混淆代码中存在明文2+3,则获取明文中的左值2和右值3。
步骤404,根据明文中表达式的运算关系建立运算函数。
具体的,接上例,根据加法运算关系建立运算函数add()。
步骤406,将左值和右值放入运算函数中,得到密文。
具体的,接上例,将左值2和右值3放入运算函数中,得到add(2,3),add(2,3)就是密文。
进一步的,混淆代码解密时,调用解密函数,例如,解密函数是function add(a,b){return a+b;},调用解密函数得到明文运算表达式的结果5。
本实施例中,通过若明文是运算表达式类别,则获取明文中表达式的左值和右值;根据明文中表达式的运算关系建立运算函数;将左值和右值放入运算函数中,得到密文。进一步提高了混淆代码的复杂程度、增强了代码安全性。
在一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:若明文是字符串、常量或布尔类别,将明文添加在函数关系得到解密函数,函数关系用于被调用时直接返回明文。
具体的,若明文是字符串、常量或布尔类别,可以构建一个函数关系,然后直接将明文放入函数关系中得到解密函数。
进一步的,混淆代码解密时,调用解密函数,解密函数直接返回函数关系中的明文。
在一个实施例中,根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:若明文是函数调用类别,将明文放置在函数关系中得到解密函数;方法还包括:获取明文在函数关系中的位置,根据位置得到对应的相关参数,相关参数用于在解密时确定明文在待混淆代码中的位置。
具体的,若明文是函数调用类别,构建一个函数关系,然后将明文放入函数关系中得到解密函数。例如,明文是函数调用functiong getClass(arg1){},构建函数关系为:varmclass=getClass(“sss”),将明文放入函数关系中得到解密函数:var mclass=callfunction(100,”sss”)。
进一步的,混淆代码解密时,调用解密函数,解密函数直接返回函数关系中的明文,然后根据相关参数,找到明文在代码中所属的位置。
应该理解的是,虽然图1-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种代码混淆装置500,包括:明文获取模块501、解密构建模块502和代码混淆模块503,其中:
明文获取模块501,用于获取待混淆代码中的明文。
解密构建模块502,用于根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数。
代码混淆模块503,用于利用解密函数替换待混淆代码中的明文。
上述代码混淆装置中,通过明文获取模块501获取待混淆代码中的明文;解密构建模块502根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;代码混淆模块503利用解密函数替换待混淆代码中的明文。能够达到提高混淆代码的复杂程度、增强代码安全性的目的。
在一个实施例中,解密构建模块502包括密文生成子模块、函数构建子模块和函数整合子模块,其中:
密文生成子模块,用于根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文。
函数构建子模块,用于根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文。
函数整合子模块,用于整合密文和函数关系得到解密函数。
在一个实施例中,密文生成子模块包括数组获取单元、形式转换单元、数组转换单元、加密处理单元和编码加密单元,其中:
数组获取单元,用于若明文是字符串或常量类别,则获取一个数组。
形式转换单元,用于将明文中的字符串或常量转换为函数调用的形式,并放入数组中。
具体的,将字符串或常量转换为函数调用的形式,比如:var name=“jim”;变为:var name=getstring(110),其中,jim是明文中的字符串,getstring(110)是转换后的函数调用,当调用getstring(110)时,返回字符串jim;将明文中的所有的字符串或常量转换为函数调用的形式后,全部放入数组中,每一个字符串或常量转换的函数调用就是数组中的一个元素,为每个元素设置下标参数,其中,下标参数用于区分数组中的每一个元素,可用于解密时提取数组中的每一个元素。
数组转换单元,用于将数组转换为第一字符串。
加密处理单元,用于对第一字符串进行加密处理得到第二字符串。
具体的,选择满足需求的加密方法将第一字符串加密处理得到第二字符串。其中,加密方法包括异或运算加密、base64加密,对称算法加密、非对称算法加密或自定义的算法加密。
编码加密单元,用于对第二字符串进行编码,得到密文。
具体的,编码加密单元还用于使用JavaScript内置API encodeURIComponent函数,对第二字符串进行编码,得到编码过后新的字符串,若不再做进一步的加密处理,则此时得到密文。
在一个实施例中,加密处理单元还用于若明文是字符串、常量或布尔类别,则对明文进行加密处理,得到密文。
具体的,加密方法包括异或运算加密、base64加密,对称算法加密、非对称算法加密或自定义的算法加密。
在一个实施例中,密文生成子模块还包括左右值获取单元、运算函数建立单元和运算函数整合单元,其中:
左右值获取单元,用于若明文是运算表达式类别,则获取明文中表达式的左值和右值。
具体的,例如待混淆代码中存在明文2+3,则获取明文中的左值2和右值3。
运算函数建立单元,用于根据明文中表达式的运算关系建立运算函数。
具体的,接上例,根据加法运算关系建立运算函数add()。
运算函数整合单元,用于将左值和右值放入运算函数中,得到密文。
具体的,接上例,将左值2和右值3放入运算函数中,得到add(2,3),add(2,3)就是密文。
在一个实施例中,函数整合子模块还用于若明文是字符串、常量或布尔类别,将明文放入函数关系中得到解密函数,函数关系用于被调用时直接返回明文。
在其中一个实施例中,函数整合子模块还用于若明文是函数调用类别,将明文放入函数关系中得到解密函数;还用于获取明文在函数关系中的位置,根据位置得到对应的相关参数,相关参数用于在解密时确定明文在待混淆代码中的位置。
关于代码混淆装置的具体限定可以参见上文中对于代码混淆方法的限定,在此不再赘述。上述代码混淆装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种代码混淆方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
一种代码混淆方法,方法包括:
获取待混淆代码中的明文;
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;
利用解密函数替换待混淆代码中的明文。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文;
根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文;
整合密文和函数关系得到解密函数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若明文是字符串或常量类别,则获取一个数组;
将明文中的字符串或常量转换为函数调用的形式,并放入数组中;
将数组转换为第一字符串;
对第一字符串进行加密处理得到第二字符串;
对第二字符串进行编码,得到密文。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若明文是字符串、常量或布尔类别,则对明文进行加密处理,得到密文。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若明文是运算表达式类别,则获取明文中表达式的左值和右值;
根据明文中表达式的运算关系建立运算函数;
将左值和右值放入运算函数中,得到密文。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若明文是字符串、常量或布尔类别,将明文放入函数关系中得到解密函数,函数关系用于被调用时直接返回明文。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若明文是函数调用类别,将明文放入函数关系中得到解密函数;
方法还包括:
获取明文在函数关系中的位置,根据位置得到对应的相关参数,相关参数用于在解密时确定明文在待混淆代码中的位置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
一种代码混淆方法,方法包括:
获取待混淆代码中的明文;
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到解密函数;
利用解密函数替换待混淆代码中的明文。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据明文的类别,对明文采用预设的混淆方式进行混淆处理,得到密文;
根据混淆方式,构建函数关系,函数关系用于对密文进行解密处理得到明文;
整合密文和函数关系得到解密函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若明文是字符串或常量类别,则获取一个数组;
将明文中的字符串或常量转换为函数调用的形式,并放入数组中;
将数组转换为第一字符串;
对第一字符串进行加密处理得到第二字符串;
对第二字符串进行编码,得到密文。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若明文是字符串、常量或布尔类别,则对明文进行加密处理,得到密文。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若明文是运算表达式类别,则获取明文中表达式的左值和右值;
根据明文中表达式的运算关系建立运算函数;
将左值和右值放入运算函数中,得到密文。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若明文是字符串、常量或布尔类别,将明文放入函数关系中得到解密函数,函数关系用于被调用时直接返回明文。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若明文是函数调用类别,将明文放入函数关系中得到解密函数;
方法还包括:
获取明文在函数关系中的位置,根据位置得到对应的相关参数,相关参数用于在解密时确定明文在待混淆代码中的位置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种代码混淆方法,其特征在于,所述方法包括:
获取待混淆代码中的明文;
根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到解密函数;
利用所述解密函数替换所述待混淆代码中的所述明文。
2.根据权利要求1所述的代码混淆方法,其特征在于,所述根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到密文;
根据所述混淆方式,构建函数关系,所述函数关系用于对所述密文进行解密处理得到所述明文;
整合所述密文和所述函数关系得到解密函数。
3.根据权利要求2所述的代码混淆方法,其特征在于,所述根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到密文包括:
若所述明文是字符串或常量类别,则获取一个数组;
将所述明文中的字符串或常量转换为函数调用的形式,并放入所述数组中;
将所述数组转换为第一字符串;
对所述第一字符串进行加密处理得到第二字符串;
对所述第二字符串进行编码,得到所述密文。
4.根据权利要求2所述的代码混淆方法,其特征在于,所述根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到密文包括:
若所述明文是字符串、常量或布尔类别,则对所述明文进行加密处理,得到所述密文。
5.根据权利要求2所述的代码混淆方法,其特征在于,所述根据所述明文的类别,对所述明文进行加密处理,得到密文包括:
若所述明文是运算表达式类别,则获取所述明文中表达式的左值和右值;
根据所述明文中表达式的运算关系建立运算函数;
将所述左值和右值放入所述运算函数中,得到所述密文。
6.根据权利要求1所述的代码混淆方法,其特征在于,所述根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
若所述明文是字符串、常量或布尔类别,将所述明文放入函数关系中得到解密函数,所述函数关系用于被调用时直接返回所述明文。
7.根据权利要求1所述的代码混淆方法,其特征在于,所述根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到解密函数,包括:
若所述明文是函数调用类别,将所述明文放入函数关系中得到解密函数;
所述方法还包括:
获取所述明文在所述函数关系中的位置,根据所述位置得到对应的相关参数,所述相关参数用于在解密时确定所述明文在所述待混淆代码中的位置。
8.一种代码混淆装置,其特征在于,所述装置包括:
明文获取模块,用于获取待混淆代码中的明文;
解密构建模块,用于根据所述明文的类别,对所述明文采用预设的混淆方式进行混淆处理,得到解密函数;
代码混淆模块,用于利用所述解密函数替换所述待混淆代码中的所述明文。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的代码混淆方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的代码混淆方法的步骤。
CN202110410240.9A 2021-04-16 2021-04-16 代码混淆方法、装置、计算机设备和存储介质 Pending CN113282892A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110410240.9A CN113282892A (zh) 2021-04-16 2021-04-16 代码混淆方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110410240.9A CN113282892A (zh) 2021-04-16 2021-04-16 代码混淆方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN113282892A true CN113282892A (zh) 2021-08-20

Family

ID=77276765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110410240.9A Pending CN113282892A (zh) 2021-04-16 2021-04-16 代码混淆方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113282892A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946804A (zh) * 2021-12-21 2022-01-18 深圳市活力天汇科技股份有限公司 一种源代码的混淆方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104091100A (zh) * 2014-07-15 2014-10-08 电子科技大学 一种基于编译中间结果的软件保护方法
CN104951674A (zh) * 2014-03-28 2015-09-30 ***股份有限公司 用于应用程序的信息隐藏方法
CN107908933A (zh) * 2017-11-08 2018-04-13 北京顶象技术有限公司 一种基于中间语言的字符串加密方法
CN108595921A (zh) * 2018-03-22 2018-09-28 北京奇艺世纪科技有限公司 一种源代码中字符串的混淆方法和装置
CN110309631A (zh) * 2019-07-12 2019-10-08 北京智游网安科技有限公司 一种编程语言结构混淆处理方法、智能终端及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951674A (zh) * 2014-03-28 2015-09-30 ***股份有限公司 用于应用程序的信息隐藏方法
CN104091100A (zh) * 2014-07-15 2014-10-08 电子科技大学 一种基于编译中间结果的软件保护方法
CN107908933A (zh) * 2017-11-08 2018-04-13 北京顶象技术有限公司 一种基于中间语言的字符串加密方法
CN108595921A (zh) * 2018-03-22 2018-09-28 北京奇艺世纪科技有限公司 一种源代码中字符串的混淆方法和装置
CN110309631A (zh) * 2019-07-12 2019-10-08 北京智游网安科技有限公司 一种编程语言结构混淆处理方法、智能终端及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946804A (zh) * 2021-12-21 2022-01-18 深圳市活力天汇科技股份有限公司 一种源代码的混淆方法和装置
CN113946804B (zh) * 2021-12-21 2022-05-20 深圳市活力天汇科技股份有限公司 一种源代码的混淆方法和装置

Similar Documents

Publication Publication Date Title
JP6257754B2 (ja) データの保護
CN107908392B (zh) 数据采集工具包定制方法、装置、终端和存储介质
US9471288B2 (en) Compile based obfuscation
JP5990654B2 (ja) アプリケーションコード難読化装置及びその方法
JP5996810B2 (ja) 自己書換え基盤のアプリケーションコード難読化装置及びその方法
CN109918917B (zh) 防止h5源码泄漏的方法、计算机设备和存储介质
CN107871066B (zh) 基于安卓***的代码编译方法及装置
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
CN110569628A (zh) 一种代码的混淆方法以及装置、计算机设备、存储介质
JP6554103B2 (ja) 暗号アルゴリズムで使用されるときに秘密データを保護する方法
CN113282892A (zh) 代码混淆方法、装置、计算机设备和存储介质
CN117093964A (zh) 一种源代码的加密方法、装置、存储介质及电子设备
JP4675642B2 (ja) プログラム難読化装置およびその方法ならびにプログラム
EP3876119A1 (en) Method for protecting a data in a software application
JP2005049925A (ja) プログラム難読化装置、プログラム難読化プログラム及びプログラム難読化方法
CN114968206A (zh) 一种编程语言代码动态混淆方法及***
CN111651781B (zh) 日志内容保护方法、装置、计算机设备和存储介质
JP3970856B2 (ja) プログラム難読化装置、プログラム配布システム、コンピュータプログラム
CN105095698A (zh) 基于最近执行的程序代码的程序代码模糊处理
CN113946804B (zh) 一种源代码的混淆方法和装置
CN113360859B (zh) 基于Python解释器的加密文件安全控制方法和装置
Otsuki et al. Overcoming the obfuscation method of the dynamic name resolution
CN106951744B (zh) 可执行程序的保护方法及装置
Oh et al. Mutational Obfuscation System: A Novel Approach to Source Code Protection for Web Application
CN116108460A (zh) 一种适用于Electron的源码文件安全加密方法、装置及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20230810

Address after: 518000 building 501, 502, 601, 602, building D, wisdom Plaza, Qiaoxiang Road, Gaofa community, Shahe street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: China Southern Power Grid Digital Platform Technology (Guangdong) Co.,Ltd.

Address before: Room 86, room 406, No.1, Yichuang street, Zhongxin Guangzhou Knowledge City, Huangpu District, Guangzhou City, Guangdong Province

Applicant before: Southern Power Grid Digital Grid Research Institute Co.,Ltd.

TA01 Transfer of patent application right