CN113282893A - 源代码加固方法、装置、计算机设备和存储介质 - Google Patents
源代码加固方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113282893A CN113282893A CN202110459729.5A CN202110459729A CN113282893A CN 113282893 A CN113282893 A CN 113282893A CN 202110459729 A CN202110459729 A CN 202110459729A CN 113282893 A CN113282893 A CN 113282893A
- Authority
- CN
- China
- Prior art keywords
- code
- module
- source code
- fragments
- function
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 230000003014 reinforcing effect Effects 0.000 title claims abstract description 13
- 239000012634 fragment Substances 0.000 claims abstract description 100
- 238000012790 confirmation Methods 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 133
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 12
- 230000014509 gene expression Effects 0.000 claims description 7
- 230000002787 reinforcement Effects 0.000 claims description 3
- 238000010200 validation analysis Methods 0.000 claims description 2
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000005728 strengthening Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting 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)
- Stored Programmes (AREA)
Abstract
本申请涉及信息安全技术领域,提供了一种源代码加固方法、装置、计算机设备和存储介质。本申请能够综合提高源代码安全性。该方法包括:获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入该初始源代码得到二代源代码,然后将二代源代码进行代码模块化得到多个代码功能模块,将各代码功能模块分割成多个模块碎片,并基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,该重组的各代码功能模块由位置调整后的多个模块碎片组成,位置调整后的多个模块碎片之间插入功能链接代码;接着根据该重组的各代码功能模块得到三代源代码,对三代源代码进行代码混淆后编译。
Description
技术领域
本申请涉及信息安全技术领域,特别是涉及一种源代码加固方法、装置、计算机设备和存储介质。
背景技术
随着互联网技术的发展,结合H5(HTML5)的跨平台优势,用户只需点开就可以访问H5界面的内容,内容传播效率得到提高,而H5的优势得益于JavaScript(简称“JS”)赋予其强大的功能。其中,JS是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言,是基于原型编程、多范式的动态脚本语言。
然而,H5在其应用场景中存在着一些安全问题,例如:电商、金融、小游戏、小程序等应用场景,会存在例如注册、登录、支付、信息展示等功能。如果这些业务所依赖的源代码被轻易破解,将会产生例如商品信息被恶意爬取、原创内容盗取、广告点击欺诈等安全问题。由此,例如对JS等源代码的保护对于保障应用程序的安全具有重要意义。
目前的技术中所采用的源代码加固方式主要是压缩。压缩是指让最终代码传输量(不代表代码量,也不代表文件体积)尽可能小,通常在代码压缩的过程中,只改变代码的语法,代码的语义和控制流不会有太大改变,常见做法是把局部变量缩短,把一些运算进行等价替换等,此种方式对于代码有一定的帮助,但由于语义和控制流不会有太大改变,所以所起到的作用并不大。但是,压缩的加固方式容易被逆向工程破解,通过反编译器得到相应的高级语言表达形式从而获取具有可读性的源代码,导致源代码安全性较低。
发明内容
基于此,有必要针对上述技术问题,提供一种源代码加固方法、装置、计算机设备和存储介质。
在一个实施例中,提供一种源代码加固方法,所述方法包括:
获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;
将所述二代源代码进行代码模块化,得到多个代码功能模块;
将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;
根据所述重组的各代码功能模块,得到三代源代码;
对所述三代源代码进行代码混淆后编译。
在一个实施例中,提供一种源代码加固装置,包括:
二代代码获取模块,用于获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;
代码模块化模块,用于将所述二代源代码进行代码模块化,得到多个代码功能模块;
模块碎片处理模块,用于将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;
三代代码获取模块,用于根据所述重组的各代码功能模块,得到三代源代码;
混淆编译模块,用于对所述三代源代码进行代码混淆后编译。
在一个实施例中,提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;将所述二代源代码进行代码模块化,得到多个代码功能模块;将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;根据所述重组的各代码功能模块,得到三代源代码;对所述三代源代码进行代码混淆后编译。
在一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;将所述二代源代码进行代码模块化,得到多个代码功能模块;将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;根据所述重组的各代码功能模块,得到三代源代码;对所述三代源代码进行代码混淆后编译。
上述源代码加固方法、装置、计算机设备和存储介质,获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入该初始源代码得到二代源代码,然后将二代源代码进行代码模块化得到多个代码功能模块,将各代码功能模块分割成多个模块碎片,并基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,该重组的各代码功能模块由位置调整后的多个模块碎片组成,位置调整后的多个模块碎片之间插入功能链接代码;接着根据该重组的各代码功能模块得到三代源代码,对三代源代码进行代码混淆后编译。该方案通过插入服务器IP记录进程代码及服务器IP确认进程代码,可有效防止代理软件修改服务器IP进行抓包,防止反编译获取源代码,还通过功能链接代码及模块碎片的位置调整使得源代码的顺序被打乱,从而即便源代码被反编译获取,由于其读取难度大,能在一定程度上提高源代码的安全性,还在三代源代码基础上进行代码混淆以进一步提高源代码的读取难度,综合提高源代码安全性。
附图说明
图1为一个实施例中源代码加固方法的流程示意图;
图2为另一个实施例中源代码加固方法的流程示意图;
图3为一个实施例中源代码加固装置的结构框图;
图4为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种源代码加固方法,该方法可以应用于如服务器等计算机设备,该方法主要包括以下步骤:
步骤S101,获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入初始源代码,得到二代源代码;
具体的,可以预先编写好服务器IP记录进程代码及服务器IP确认进程代码,在初始源代码编写完成后,在初始源代码中插入该预先编写好的服务器IP记录进程代码和服务器IP确认进程代码,并进行初始源代码备份,得到二代源代码。其中,服务器IP记录进程代码可只记录第一次运行时的服务器IP,更换服务器需重新插入;服务器IP确认进程代码可以用于确认运行时服务器IP未被篡改,若被篡改,程序将闪退。
步骤S102,将二代源代码进行代码模块化,得到多个代码功能模块;
本步骤主要是将二代源代码按照功能进行代码模块化,生成多个代码功能模块。
步骤S103,将各代码功能模块分割成多个模块碎片,并基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块。
其中,重组的各代码功能模块由位置调整后的多个模块碎片组成,且位置调整后的多个模块碎片之间被插入了功能链接代码。具体的,本步骤中,可以逐一将每个代码功能模块分割成多个模块碎片,可以分别表示为模块碎片1、模块碎片2、……、模块碎片N,进行模块碎片位置调整和在模块碎片之间插入功能链接代码,得到重组的各代码功能模块。其中,对于无法分割的代码功能模块可保持原状。
步骤S104,根据重组的各代码功能模块,得到三代源代码。
本步骤主要是根据步骤S103的将代码功能模块分割成多个模块碎片进行位置调整和功能链接代码插入得到重组的各代码功能模块,生成三代源代码。
步骤S105,对三代源代码进行代码混淆后编译。
本步骤中,计算机设备可对三代源代码进行代码混淆,再对代码混淆后的三代源代码进行编译。
在一些实施例中,步骤S105中的对三代源代码进行代码混淆后编译,具体包括:
在三代源代码中插入虚假代码,得到四代源代码;对四代源代码进行代码混淆,对代码混淆后的四代源代码进行编译。
本实施例,可在三代源代码之中插入虚假代码,该虚假代码可以用于引入多余控制流,从而增大反编译的难度,在三代源代码中插入虚假代码以生成四代源代码,而后将四代源代码进行代码混淆,对代码混淆后的四代源代码进行编译,提高源代码安全性。
在一些实施例中,在上述对代码混淆后的四代源代码进行编译之前,还可以包括如下步骤:
对代码混淆后的四代源代码进行加壳处理。
本实施例中,在对四代源代码进行代码混淆后,计算机设备可通过对该代码混淆后的四代源代码的整体进行加壳处理,隐藏整体代码结构,进一步提高源代码安全性。
进一步的,在一些实施例中,代码混淆可以包括:对常量字符串进行混淆和加密、对常量数字进行混淆和加密和/或对函数名称、变量名称进行混淆。
其中,对于对常量字符串进行混淆和加密,计算机设备可对源代码(三代源代码、四代源代码)进行语法分析和逻辑分析,解析出源代码中常量字符串的位置,然后对常量字符串进行混淆以及加密,可使破解者无法使用它来快速定位程序核心代码的位置。
对于对常量数字进行混淆和加密,计算机设备可对源代码(三代源代码、四代源代码)进行语法分析和逻辑分析,解析出源代码中常量数字的位置,对常量数字进行混淆以及加密,以进一步提高源代码安全性。
对于对函数名称、变量名称进行混淆,计算机设备可将如JavaScript等源代码(三代源代码、四代源代码)中的函数名称、变量名称进行混淆,防止被人轻易使用,使处理后的源代码不具备可识性。
上述源代码加固方法,获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入该初始源代码得到二代源代码,然后将二代源代码进行代码模块化得到多个代码功能模块,将各代码功能模块分割成多个模块碎片,并基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,该重组的各代码功能模块由位置调整后的多个模块碎片组成,位置调整后的多个模块碎片之间插入功能链接代码;接着根据该重组的各代码功能模块得到三代源代码,对三代源代码进行代码混淆后编译。该方案通过插入服务器IP记录进程代码及服务器IP确认进程代码,可有效防止代理软件修改服务器IP进行抓包,防止反编译获取源代码,还通过功能链接代码及模块碎片的位置调整使得源代码的顺序被打乱,从而即便源代码被反编译获取,由于其读取难度大,能在一定程度上提高源代码的安全性,还在三代源代码基础上进行代码混淆以进一步提高源代码的读取难度,综合提高源代码安全性。
在其中一些实施例中,在步骤S101中的获取初始源代码后,上述方法还可以包括如下步骤:
将该初始源代码的二元表达式转换成等价函数调用形式。
具体的,计算机设备可将如JavaScript等初始源代码中的二元表达式转换成等价函数调用形式,从而增大破解者分析难度,达到有效隐藏、保护核心算法的原始逻辑的目的。
在另外一些实施例中,在步骤S101中的获取初始源代码后,上述方法还可以包括如下步骤:
将信息输出控制指令插入该初始源代码。
本实施例中,信息输出控制指令用于指示输出打印函数不将代码输出内容输出至控制台。具体的,计算机设备在初始源代码生成之后,在其中插入信息输出控制指令,使输出打印函数不将代码输出内容直接输出到控制台,从而隐藏代码输出内容,增加攻击者分析难度,进一步提高源代码安全性。
在一个实施例中,步骤S101中的将服务器IP记录进程代码和服务器IP确认进程代码插入初始源代码,得到二代源代码,进一步包括:
将服务器IP记录进程代码和服务器IP确认进程代码插入初始源代码,并将初始源代码的控制流进行扁平化处理,得到二代源代码。
本实施例中,计算机设备除在初始源代码中插入服务器IP记录进程代码和服务器IP确认进程代码以外,还会对初始源代码的如循环、条件转移语句等控制流进行扁平化处理,得到二代源代码。由此可使如JavaScript等源代码的可读性差,攻击者无法从中获取到有价值的信息,从而达到保护代码、防止应用盗版的目的。
在其中一些实施例中,步骤S103中的基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,可以包括:
针对每一代码功能模块,将多个模块碎片进行位置调整,在位置调整后的各模块碎片之间插入功能链接代码,得到重组的代码功能模块。
本实施例提供的重组代码功能模块以获得三代源代码的方式,主要是针对每一代码功能模块,先行调整各自所包含的多个模块碎片的位置,而后计算机设备可以通过调整后的位置修改预先编写好的功能链接代码中的参数,插入至位置调整后的各模块碎片之间,使各模块碎片之间可以按照顺序建立有机连接,得到重组的代码功能模块,以及由此混淆并编译后的代码可以正常运行。
在另外一些实施例中,步骤S103中的基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,可以包括:
针对每一代码功能模块,在各模块碎片之间插入功能链接代码后调整各模块碎片中一个或多个模块碎片的位置,得到重组的代码功能模块。
本实施例提供的重组代码功能模块以获得三代源代码的方式,侧重于对于每一代码功能模块,在各自所包含的多个模块碎片之间插入功能链接代码,以先行建立各个模块碎片之间的有机连接,而后再行调整其中一个或多个模块碎片的位置,从而得到重组的代码功能模块。
如上实施例所提供的两种方式可根据实际情况进行选择,亦可结合应用于同一代码功能模块中的多个模块碎片之间的连接,或者多个代码功能模块之间的连接。
在一个实施例中,还提供一种源代码加固方法,如图2所示,该方法具体包括如下步骤:
步骤S201,获取初始源代码后,将初始源代码的二元表达式转换成等价函数调用形式,将信息输出控制指令插入初始源代码,将服务器IP记录进程代码和服务器IP确认进程代码插入初始源代码,以及将初始源代码的控制流进行扁平化处理,得到二代源代码;
步骤S202,将二代源代码进行代码模块化,得到多个代码功能模块;
步骤S203,将各代码功能模块分割成多个模块碎片,并基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;
其中,重组的各代码功能模块由位置调整后的多个模块碎片组成,位置调整后的多个模块碎片之间插入功能链接代码。
本步骤中,基于各代码功能模块自身的多个模块碎片获取重组的各代码功能模块可具体包括:针对每一代码功能模块,将多个模块碎片进行位置调整,在位置调整后的各模块碎片之间插入功能链接代码,得到重组的代码功能模块;和/或,针对每一代码功能模块,在各模块碎片之间插入功能链接代码后调整各模块碎片中一个或多个模块碎片的位置,得到重组的代码功能模块。
步骤S204,根据重组的各代码功能模块,得到三代源代码;
步骤S205,在三代源代码中插入虚假代码得到四代源代码,对四代源代码进行代码混淆,对代码混淆后的四代源代码进行编译。
其中,代码混淆可以包括对常量字符串进行混淆和加密、对常量数字进行混淆和加密和/或对函数名称、变量名称进行混淆。而在对代码混淆后的四代源代码进行编译之前,还可以先对该代码混淆后的四代源代码进行加壳处理。
从整体上看,本申请提供的源代码加固方法,在初始源代码编写完成后,在初始源代码中插入服务器IP记录进程代码(只记录第一次运行时的服务器IP,更换服务器需重新插入)及服务器IP确认进程代码(确认运行时服务器IP未被篡改,若被篡改,程序将闪退),而后将插入进程代码后的二代源代码按照功能进行代码模块化,生成代码功能模块,然后将各代码功能模块分割成多个模块碎片,用预先设置好的功能链接代码将分割出的多个模块碎片链接起来,并调整各模块碎片的位置,将同一代码功能模块的各模块碎片从位置上分割开来,最后进行代码混淆后进行编译。
本申请提供的源代码加固方法可具有如下有益效果:通过插入服务器IP记录进程代码及服务器IP确认进程代码,可有效防止代理软件修改服务器IP进行抓包,当服务器IP被修改时,将停止运行,防止反编译获取源代码;还通过功能链接代码及模块碎片的位置调整,使得源代码的顺序被打乱,即便源代码被反编译获取,由于读取难度大,也能在一定程度上提高源代码的安全性;而在三代或四代源代码的基础上进行混淆处理可进一步提高源代码的读取难度,进一步提高源代码的安全性;通过虚假代码的插入,可增大反编译的难度及反编译后的代码读取难度;对控制流进行扁平化处理,可使如JavaScript等源代码的可读性差,让攻击者无法从中获取到有价值的信息,从而达到保护代码、防止应用盗版的目的;对于常量字符串及常量数字的混淆及加密,可使破解者无法使用它来快速定位程序核心代码的位置,对于函数名称、变量名称的混淆,可防止被人轻易使用,使处理后的如JavaScript等源代码不具备可识性;对整体代码进行加壳处理,可隐藏整体代码结构;将如JavaScript等源代码中的二元表达式转换成等价函数调用形式,可增大破解者分析难度,达到有效隐藏、保护核心算法的原始逻辑的目的,而让输出打印函数不将代码输出内容直接输出到控制台,从而隐藏代码输出内容,增加攻击者分析难度,从而达到综合提高源代码安全性的效果。
应该理解的是,虽然如上流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图3所示,提供了一种源代码加固装置,该装置300可以包括:
二代代码获取模块301,用于获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;
代码模块化模块302,用于将所述二代源代码进行代码模块化,得到多个代码功能模块;
模块碎片处理模块303,用于将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;
三代代码获取模块304,用于根据所述重组的各代码功能模块,得到三代源代码;
混淆编译模块305,用于对所述三代源代码进行代码混淆后编译。
在一个实施例中,模块碎片处理模块303,用于针对每一代码功能模块,将所述多个模块碎片进行位置调整,在位置调整后的各模块碎片之间插入功能链接代码,得到重组的代码功能模块。
在一个实施例中,模块碎片处理模块303,用于针对每一代码功能模块,在各模块碎片之间插入功能链接代码后调整所述各模块碎片中一个或多个模块碎片的位置,得到重组的代码功能模块。
在一个实施例中,混淆编译模块305,用于在所述三代源代码中插入虚假代码,得到四代源代码;对所述四代源代码进行代码混淆,对代码混淆后的四代源代码进行编译。
在一个实施例中,混淆编译模块305,还用于对所述代码混淆后的四代源代码进行加壳处理。
在一个实施例中,二代代码获取模块301,用于将所述服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,并将所述初始源代码的控制流进行扁平化处理,得到所述二代源代码。
在一个实施例中,二代代码获取模块301,还用于获取初始源代码后,将所述初始源代码的二元表达式转换成等价函数调用形式。
在一个实施例中,二代代码获取模块301,还用于获取初始源代码后,将信息输出控制指令插入所述初始源代码;所述信息输出控制指令用于指示输出打印函数不将代码输出内容输出至控制台。
在一个实施例中,所述代码混淆,包括对常量字符串进行混淆和加密、对常量数字进行混淆和加密和/或对函数名称、变量名称进行混淆。
关于源代码加固装置的具体限定可以参见上文中对于源代码加固方法的限定,在此不再赘述。上述源代码加固装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储源代码等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种源代码加固方法。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种源代码加固方法,其特征在于,所述方法包括:
获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;
将所述二代源代码进行代码模块化,得到多个代码功能模块;
将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;
根据所述重组的各代码功能模块,得到三代源代码;
对所述三代源代码进行代码混淆后编译。
2.根据权利要求1所述的方法,其特征在于,
所述基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,包括:
针对每一代码功能模块,将所述多个模块碎片进行位置调整,在位置调整后的各模块碎片之间插入功能链接代码,得到重组的代码功能模块;
和/或,
所述基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块,包括:
针对每一代码功能模块,在各模块碎片之间插入功能链接代码后调整所述各模块碎片中一个或多个模块碎片的位置,得到重组的代码功能模块。
3.根据权利要求1所述的方法,其特征在于,所述对所述三代源代码进行代码混淆后编译,包括:
在所述三代源代码中插入虚假代码,得到四代源代码;
对所述四代源代码进行代码混淆,对代码混淆后的四代源代码进行编译。
4.根据权利要求3所述的方法,其特征在于,所述对代码混淆后的四代源代码进行编译之前,所述方法还包括:
对所述代码混淆后的四代源代码进行加壳处理。
5.根据权利要求1所述的方法,其特征在于,所述将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码,包括:
将所述服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,并将所述初始源代码的控制流进行扁平化处理,得到所述二代源代码。
6.根据权利要求1所述的方法,其特征在于,
所述获取初始源代码后,所述方法还包括:
将所述初始源代码的二元表达式转换成等价函数调用形式;
和/或,
所述获取初始源代码后,所述方法还包括:
将信息输出控制指令插入所述初始源代码;所述信息输出控制指令用于指示输出打印函数不将代码输出内容输出至控制台。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述代码混淆,包括对常量字符串进行混淆和加密、对常量数字进行混淆和加密和/或对函数名称、变量名称进行混淆。
8.一种源代码加固装置,其特征在于,包括:
二代代码获取模块,用于获取初始源代码后,将服务器IP记录进程代码和服务器IP确认进程代码插入所述初始源代码,得到二代源代码;
代码模块化模块,用于将所述二代源代码进行代码模块化,得到多个代码功能模块;
模块碎片处理模块,用于将各代码功能模块分割成多个模块碎片,并基于所述各代码功能模块自身的多个模块碎片获取重组的各代码功能模块;所述重组的各代码功能模块由位置调整后的多个模块碎片组成,所述位置调整后的多个模块碎片之间插入功能链接代码;
三代代码获取模块,用于根据所述重组的各代码功能模块,得到三代源代码;
混淆编译模块,用于对所述三代源代码进行代码混淆后编译。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110459729.5A CN113282893B (zh) | 2021-04-27 | 2021-04-27 | 源代码加固方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110459729.5A CN113282893B (zh) | 2021-04-27 | 2021-04-27 | 源代码加固方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282893A true CN113282893A (zh) | 2021-08-20 |
CN113282893B CN113282893B (zh) | 2024-07-19 |
Family
ID=77277415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110459729.5A Active CN113282893B (zh) | 2021-04-27 | 2021-04-27 | 源代码加固方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282893B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946804A (zh) * | 2021-12-21 | 2022-01-18 | 深圳市活力天汇科技股份有限公司 | 一种源代码的混淆方法和装置 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005043418A1 (ja) * | 2003-10-31 | 2005-05-12 | Fujitsu Limited | 設計支援装置、設計支援方法、設計支援プログラムおよび記録媒体 |
EP2222048A1 (en) * | 2009-02-24 | 2010-08-25 | BRITISH TELECOMMUNICATIONS public limited company | Detecting malicious behaviour on a computer network |
US20110060895A1 (en) * | 2009-09-09 | 2011-03-10 | Neal Solomon | System and methods for generating and organizing modular program code components |
CN103309795A (zh) * | 2012-03-08 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 软件测试方法和系统 |
KR101416618B1 (ko) * | 2013-01-24 | 2014-07-09 | 한남대학교 산학협력단 | 리눅스 커널 보안 기반 침입방지 시스템 |
US20140380270A1 (en) * | 2002-11-06 | 2014-12-25 | Code Valley Corp Pty Ltd | Code generation |
CN106485131A (zh) * | 2016-11-02 | 2017-03-08 | 黄松柏 | 互动式混淆型动态加密锁控体系 |
US20170083302A1 (en) * | 2015-09-17 | 2017-03-23 | International Business Machines Cororation | Downloading a package of code |
CN106570354A (zh) * | 2016-10-18 | 2017-04-19 | 国家电网公司 | 移动应用的重构方法和装置、运行方法和装置 |
CN107203707A (zh) * | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种实现程序代码混淆的方法和系统 |
CN108509373A (zh) * | 2018-03-19 | 2018-09-07 | 复旦大学 | 一种面向SoC软件研发的全系统模拟平台 |
CN108664559A (zh) * | 2018-03-30 | 2018-10-16 | 中山大学 | 一种网站网页源代码自动爬取方法 |
CN109391635A (zh) * | 2018-12-17 | 2019-02-26 | 北京奇安信科技有限公司 | 基于双向网闸的数据传输方法、装置、设备及介质 |
CN109756501A (zh) * | 2019-01-02 | 2019-05-14 | 中国科学院信息工程研究所 | 一种基于http协议的高隐匿网络代理方法及系统 |
CN111209029A (zh) * | 2020-01-14 | 2020-05-29 | 武汉极意网络科技有限公司 | 一种代码修改确定方法、装置、电子设备及存储介质 |
CN111914225A (zh) * | 2020-07-15 | 2020-11-10 | 广东电网有限责任公司 | 一种源代码保护系统及源代码加密方法 |
CN112052160A (zh) * | 2020-08-06 | 2020-12-08 | 中信银行股份有限公司 | 一种代码的用例获取方法、装置、电子设备及介质 |
CN112650487A (zh) * | 2020-12-31 | 2021-04-13 | 南方电网数字电网研究院有限公司 | 混合应用程序开发方法、系统、计算机设备和存储介质 |
-
2021
- 2021-04-27 CN CN202110459729.5A patent/CN113282893B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140380270A1 (en) * | 2002-11-06 | 2014-12-25 | Code Valley Corp Pty Ltd | Code generation |
WO2005043418A1 (ja) * | 2003-10-31 | 2005-05-12 | Fujitsu Limited | 設計支援装置、設計支援方法、設計支援プログラムおよび記録媒体 |
EP2222048A1 (en) * | 2009-02-24 | 2010-08-25 | BRITISH TELECOMMUNICATIONS public limited company | Detecting malicious behaviour on a computer network |
US20110060895A1 (en) * | 2009-09-09 | 2011-03-10 | Neal Solomon | System and methods for generating and organizing modular program code components |
CN103309795A (zh) * | 2012-03-08 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 软件测试方法和系统 |
KR101416618B1 (ko) * | 2013-01-24 | 2014-07-09 | 한남대학교 산학협력단 | 리눅스 커널 보안 기반 침입방지 시스템 |
US20170083302A1 (en) * | 2015-09-17 | 2017-03-23 | International Business Machines Cororation | Downloading a package of code |
CN107203707A (zh) * | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种实现程序代码混淆的方法和系统 |
CN106570354A (zh) * | 2016-10-18 | 2017-04-19 | 国家电网公司 | 移动应用的重构方法和装置、运行方法和装置 |
CN106485131A (zh) * | 2016-11-02 | 2017-03-08 | 黄松柏 | 互动式混淆型动态加密锁控体系 |
CN108509373A (zh) * | 2018-03-19 | 2018-09-07 | 复旦大学 | 一种面向SoC软件研发的全系统模拟平台 |
CN108664559A (zh) * | 2018-03-30 | 2018-10-16 | 中山大学 | 一种网站网页源代码自动爬取方法 |
CN109391635A (zh) * | 2018-12-17 | 2019-02-26 | 北京奇安信科技有限公司 | 基于双向网闸的数据传输方法、装置、设备及介质 |
CN109756501A (zh) * | 2019-01-02 | 2019-05-14 | 中国科学院信息工程研究所 | 一种基于http协议的高隐匿网络代理方法及系统 |
CN111209029A (zh) * | 2020-01-14 | 2020-05-29 | 武汉极意网络科技有限公司 | 一种代码修改确定方法、装置、电子设备及存储介质 |
CN111914225A (zh) * | 2020-07-15 | 2020-11-10 | 广东电网有限责任公司 | 一种源代码保护系统及源代码加密方法 |
CN112052160A (zh) * | 2020-08-06 | 2020-12-08 | 中信银行股份有限公司 | 一种代码的用例获取方法、装置、电子设备及介质 |
CN112650487A (zh) * | 2020-12-31 | 2021-04-13 | 南方电网数字电网研究院有限公司 | 混合应用程序开发方法、系统、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
胡钊等: "关于威胁情报的研究分析", 科技资讯, vol. 19, no. 5, 13 February 2021 (2021-02-13), pages 63 - 65 * |
葛雨玮;康绯;彭小详;: "基于动态BP神经网络的恶意代码同源性分析", 小型微型计算机系统, no. 11, 15 November 2016 (2016-11-15), pages 2527 - 2531 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946804A (zh) * | 2021-12-21 | 2022-01-18 | 深圳市活力天汇科技股份有限公司 | 一种源代码的混淆方法和装置 |
CN113946804B (zh) * | 2021-12-21 | 2022-05-20 | 深圳市活力天汇科技股份有限公司 | 一种源代码的混淆方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113282893B (zh) | 2024-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Behera et al. | Different obfuscation techniques for code protection | |
US7254586B2 (en) | Secure and opaque type library providing secure data protection of variables | |
US7757097B2 (en) | Method and system for tamperproofing software | |
US8510726B2 (en) | System and method for generating white-box implementations of software applications | |
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
US7287166B1 (en) | Guards for application in software tamperproofing | |
Mavrogiannopoulos et al. | A taxonomy of self-modifying code for obfuscation | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
US20170116410A1 (en) | Software protection | |
CN109918917B (zh) | 防止h5源码泄漏的方法、计算机设备和存储介质 | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
Kovacheva | Efficient code obfuscation for Android | |
JP5851074B2 (ja) | 関数の計算のためのルックアップテーブルを記憶した計算装置 | |
US9594769B2 (en) | Computing device configured with a table network | |
JP2012526310A (ja) | ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 | |
CN104463002A (zh) | 一种加固apk的方法和装置以及apk加固客户端和服务器 | |
CN102236757A (zh) | 一种适用于Android系统的软件保护方法及系统 | |
US20170169737A1 (en) | Steganographic embedding of hidden payload | |
Piao et al. | Server‐based code obfuscation scheme for APK tamper detection | |
JP7285850B2 (ja) | コンパイルデバイス及び方法 | |
CN110489942A (zh) | 一种WebAssembly文件的处理方法及系统 | |
Kanzaki et al. | Code artificiality: a metric for the code stealth based on an n-gram model | |
Manikyam | Program protection using software based hardware abstraction | |
CN113282893A (zh) | 源代码加固方法、装置、计算机设备和存储介质 |
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: 20230802 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 | ||
GR01 | Patent grant |