Go语言二进制文件加固方法、装置、设备及存储介质与流程

文档序号:31369106发布日期:2022-09-02 18:31阅读:55来源:国知局
Go语言二进制文件加固方法、装置、设备及存储介质与流程
go语言二进制文件加固方法、装置、设备及存储介质
技术领域
1.本发明涉及计算机技术领域,尤其涉及一种go语言二进制文件加固方法、装置、设备及存储介质。


背景技术:

2.go语言是一种常用软件开发语言,go语言二进制文件是通过静态链接的方式构建,内部包含了函数、数据类型定义、类型相关的方法绑定,目前对go二进制文件构建时一般会通过strip处理以剔除函数符号和调试信息,以提高二进制文件的安全性。但是,目前已经出现了针对go语言二进制方法的逆向分析方法,根据go语言自身的二进制文件构建机制,可以轻松的对go语言进行逆向分析,获得go语言二进制文件对应的程序运行逻辑,从而对go语言构建的项目进行恶意攻击等,因此,需要对go语言二进制文件进行进一步的加固,防止go语言二进制文件被逆向分析。
3.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。


技术实现要素:

4.本发明的主要目的在于提供一种go语言二进制文件加固方法、装置、设备及存储介质,旨在解决现有技术加固的go语言二进制文件被轻松逆向分析的技术问题。
5.为实现上述目的,本发明提供了一种方法,所述方法包括以下步骤:
6.在接收到文件加固请求时,获取所述文件加固请求中的待加固二进制文件;
7.对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息;
8.根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
9.可选的,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤,包括:
10.根据所述预设符号特征码对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息;
11.对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时类型信息。
12.可选的,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤,包括:
13.对所述待加固二进制文件进行扫描,以获得节区信息;
14.根据所述节区信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
15.可选的,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件
中的运行时符号信息及运行时类型信息的步骤,包括:
16.对所述待加固二进制文件进行扫描,以获得模块数据信息;
17.获取所述模块数据信息中的索引信息并根据所述索引信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
18.可选的,所述对所述待加固二进制文件进行扫描,以获得模块数据信息的步骤,包括:
19.获取预设模块特征码;
20.根据所述预设模块特征码对所述待加固二进制文件进行扫描,以获得模块数据信息。
21.可选的,所述对所述待加固二进制文件进行扫描,以获得模块数据信息的步骤,包括:
22.对所述待加固二进制文件进行扫描,以获得节区信息;
23.根据所述节区信息获取所述待加固二进制文件中的模块数据信息。
24.可选的,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤之前,还包括:
25.根据所述文件加固请求获取当前用户的用户权限;
26.对所述用户权限进行权限校验;
27.在权限校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
28.可选的,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤之前,还包括:
29.获取所述文件加固请求中的安全验证数据;
30.根据所述安全验证数据及所述待加固二进制文件进行安全性校验;
31.在安全性校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
32.可选的,所述根据所述安全验证数据及所述待加固二进制文件进行安全性校验的步骤,包括:
33.对所述待加固二进制文件进行md5编码,以获得密文数据;
34.根据所述密文数据获取安全校验数据;
35.将所述安全校验数据与所述安全验证数据进行比较,并根据比较结果确定安全性校验结果。
36.可选的,所述根据所述密文数据获取安全校验数据的步骤,包括:
37.获取预设安全组合数据,并将所述预设安全组合数据与所述密文数据以预设组合方式进行组合,以获得组合密文数据;
38.对所述组合密文数据以预设加密方式进行加密,以获得安全校验数据。
39.可选的,所述将所述安全校验数据与所述安全验证数据进行比较,并根据比较结果确定安全性校验结果的步骤,包括:
40.将所述安全校验数据与所述安全验证数据进行比较;
41.在所述安全校验数据与所述安全验证数据相同时,判定安全性校验通过;
42.在所述安全校验数据与所述安全验证数据不同时,判定安全性校验不通过。
43.可选的,所述根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件的步骤,包括:
44.获取所述运行时符号信息及所述运行时类型信息中各个待修改数据的数据类型;
45.根据所述数据类型及预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
46.此外,为实现上述目的,本发明还提出一种go语言二进制文件加固装置,所述go语言二进制文件加固装置包括以下模块:
47.数据接收模块,用于在接收到文件加固请求时,获取所述文件加固请求中的待加固二进制文件;
48.信息提取模块,用于对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息;
49.数据修改模块,用于根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
50.可选的,所述信息提取模块,还用于根据预设符号特征码对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息;对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时类型信息。
51.可选的,所述信息提取模块,还用于对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
52.可选的,所述信息提取模块,还用于对所述待加固二进制文件进行扫描,以获得模块数据信息;获取所述模块数据信息中的索引信息并根据所述索引信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
53.可选的,所述信息提取模块,还用于获取预设模块特征码;根据所述预设模块特征码对所述待加固二进制文件进行扫描,以获得模块数据信息。
54.可选的,所述信息提取模块,还用于对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息获取所述待加固二进制文件中的模块数据信息。
55.此外,为实现上述目的,本发明还提出一种go语言二进制文件加固设备,所述go语言二进制文件加固设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的go语言二进制文件加固程序,所述go语言二进制文件加固程序被执行时实现如上所述的go语言二进制文件加固方法的步骤。
56.此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有go语言二进制文件加固程序,所述go语言二进制文件加固程序执行时实现如上所述的go语言二进制文件加固方法的步骤。
57.本发明通过在接收到文件加固请求时,获取文件加固请求中的待加固二进制文件;对待加固二进制文件进行扫描,以获得待加固二进制文件中的运行时符号信息及运行时类型信息;根据预设信息修改规则对运行时符号信息及运行时类型信息进行修改,以获得加固后的二进制文件。由于是先获取待加固二进制文件中被常用于进行文件逆向分析的运行时符号信息及运行时类型信息,再将运行时符号信息及运行时类型信息对应的数据根
据预设信息修改规则进行修改,以达到数据混淆的目的,可以使得加固后的二进制文件被逆向分析的难度大幅提高,提高了安全性。
58.附图说明
59.图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
60.图2为本发明go语言二进制文件加固方法第一实施例的流程示意图;
61.图3为本发明go语言二进制文件加固方法第二实施例的流程示意图;
62.图4为本发明go语言二进制文件加固方法第三实施例的流程示意图;
63.图5为本发明go语言二进制文件加固装置第一实施例的结构框图。
64.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
65.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
66.参照图1,图1为本发明实施例方案涉及的硬件运行环境的go语言二进制文件加固设备结构示意图。
67.如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
68.本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
69.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及go语言二进制文件加固程序。
70.在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在go语言二进制文件加固设备中,所述电子设备通过处理器1001调用存储器1005中存储的go语言二进制文件加固程序,并执行本发明实施例提供的go语言二进制文件加固方法。
71.本发明实施例提供了一种go语言二进制文件加固方法,参照图2,图2为本发明一种go语言二进制文件加固方法第一实施例的流程示意图。
72.本实施例中,所述go语言二进制文件加固方法包括以下步骤:
73.步骤s10:在接收到文件加固请求时,获取所述文件加固请求中的待加固二进制文件;
74.需要说明的是,本实施例的执行主体可以是所述go语言二进制文件加固设备,所
述go语言二进制文件加固设备可以是个人电脑、服务器等电子设备,也可以为可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以go语言二进制文件加固设备为例对本发明go语言二进制文件加固方法进行说明。
75.需要说明的是,文件加固请求可以为用户通过用户端设备发送至go语言二进制文件加固设备调用go语言二进制文件加固功能的请求,文件加固请求中可以包括用户信息、待加固二进制文件等信息。待加固二进制文件可以是需要进行加固的go语言二进制文件。
76.步骤s20:对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息;
77.需要说明的是,运行时符号信息(runtime symbol information,rtsi)可以包括二进制文件中的函数信息和构建二进制文件使用的源码文件信息,自go语言1.2版本之后,rtst一般保存在一个名为pclntab的数据结构中,rtst包含的函数信息通常被软件逆向工程师用于获取函数名,以便于辅助针对go二进制文件的逆向分析工作。运行时类型信息(runtime type information,rtti),即go语言代码中各个数据类型的定义信息,可以包括:原始基础类型(rawtype)的类型信息、非常规类型(uncommon)上绑定的方法信息、指针(ptr)数据类型指向的实体数据类型信息、结构体(struct)类型信息、数组(array)类型内部元素类型信息、切片(slice)类型内部元素类型信息、接口(interface)类型所属的包(package)路径与方法集中各个方法的名字与类型信息、通道(chan)类型的方法与内部元素类型信息、函数(func)类型的参数与返回值类型信息、映射(map)类型的键(key)与值(value)的类型信息等信息。
78.进一步的,为了便捷的获取运行时符号信息及运行时类型信息,本实施例步骤s20,可以为:
79.根据所述预设符号特征码对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息;对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时类型信息。
80.需要说明的是,因在go语言1.2及以后的版本中,运行时符号信息一般保存在一个名为pclntab的数据结构中,因此,可以根据预设符号特征码在go语言二进制文件中查找pclntab,再从其中提取出运行时符号信息。
81.例如:通过对pclntab的数据结构研究,确定预设符号特征码为0xfffffffb,因此,可以先根据预设符号特征码对待加固二进制文件进行扫描,确定其中pclntab的具体位置,提取pclntab的信息,再自其中获得运行时符号信息。
82.进一步地,为了便捷的获取运行时符号信息及运行时类型信息,本实施例步骤s20,还可以为:
83.对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
84.需要说明的是,节区(section)信息可以包括go语言二进制文件中的数据分区信息,因此,可以先对待加固二进制文件进行扫描,获得节区信息,再根据节区信息中的数据分区信息确定各个数据,对数据类型进行筛选区分,最终获得运行时符号信息及运行时类型信息。
85.进一步地,为了便捷的获取运行时符号信息及运行时类型信息,本实施例步骤
s20,可以具体包括:
86.步骤s201:对所述待加固二进制文件进行扫描,以获得模块数据信息;
87.需要说明的是,模块数据信息(moduledata information)是go语言二进制文件中特有的一种数据结构,其中包含了go语言二进制文件中各个数据的索引信息。
88.在实际使用中,可以获取预设模块特征码;根据所述预设模块特征码对所述待加固二进制文件进行扫描,以获得模块数据信息。
89.需要说明的是,通过对go语言二进制文件编译规则进行分析,确定模块数据信息对应的模块特征码作为预设模块特征码。
90.例如:在需要获取运行时符号信息及运行时类型信息时,可以获取预设模块特征码,通过预设模块特征码在待加固二进制文件中进行扫描匹配,根据匹配结果在待加固二进制文件中定位模块数据信息。
91.在实际使用中,还可以对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息获取所述待加固二进制文件中的模块数据信息。
92.可以理解的是,节区信息可以包括go语言二进制文件中的数据分区信息,因此,可以先对待加固二进制文件进行扫描,获取待加固二进制文件中的节区信息,对节区信息进行分析,定位待加固二进制文件中的模块数据信息的位置,以获得模块数据信息。
93.步骤s202:获取所述模块数据信息中的索引信息并根据所述索引信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
94.可以理解的是,模块数据信息中包含了go语言二进制文件中各个数据的索引信息,因此,模块数据信息中必然也包括运行时符号信息及运行时类型信息的索引信息,因此,通过模块数据信息中的索引信息即可确定运行时符号信息及运行时类型信息的地址和偏移信息,根据地址和偏移信息即可在go语言二进制文件中定位运行时符号信息及运行时类型信息,从而获得定位运行时符号信息及运行时类型信息。
95.步骤s30:根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
96.需要说明的是,预设信息修改规则可以是预先以修改之后不影响go语言二进制文件正常运行的原则进行设置的修改规则,针对修改的信息的不同,可以采用不同的修改手段,例如:针对a类型数据采用预设数据进行替换,针对b类型数据直接进行擦除。
97.可以理解的是,运行时符号信息及运行时类型信息是软件逆向工程师常用来对go语言二进制文件进行逆向分析使用的重要数据,因此,在不影响go语言二进制文件运行的前提下对运行时符号信息及运行时类型信息中的各项数据进行修改或抹除,可以达到混淆数据的目的,为逆向分析工作增加成倍的难度,提高go语言二进制文件的安全性。
98.进一步地,为了便于进行修改,本实施例步骤s30,可以包括:
99.获取所述运行时符号信息及所述运行时类型信息中各个待修改数据的数据类型;根据所述数据类型及预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
100.需要说明的是,预设信息修改规则可以根据实际需要进行设置,例如:针对a数据类型的数据以b数据进行替换,针对c数据类型的数据进行擦除等。
101.本实施例通过在接收到文件加固请求时,获取文件加固请求中的待加固二进制文
件;对待加固二进制文件进行扫描,以获得待加固二进制文件中的运行时符号信息及运行时类型信息;根据预设信息修改规则对运行时符号信息及运行时类型信息进行修改,以获得加固后的二进制文件。由于是先获取待加固二进制文件中被常用于进行文件逆向分析的运行时符号信息及运行时类型信息,再将运行时符号信息及运行时类型信息对应的数据根据预设信息修改规则进行修改,以达到数据混淆的目的,可以使得加固后的二进制文件被逆向分析的难度大幅提高,提高了安全性。
102.参考图3,图3为本发明一种go语言二进制文件加固方法第二实施例的流程示意图。
103.基于上述第一实施例,本实施例go语言二进制文件加固方法在所述步骤s20之前,还包括:
104.步骤s11:根据所述文件加固请求获取当前用户的用户权限;
105.可以理解的是,因文件加固请求中可以包含当前用户的用户信息等数据,用户信息可以为用户的唯一访问标识等信息,当前用户可以是发起文件加固请求的用户,因此,可以通过当前用户的用户信息查找当前用户的用户权限。用户权限可以包括用户可使用功能列表、可执行操作等功能执行权限。
106.步骤s12:对所述用户权限进行权限校验;
107.需要说明的是,文件加固请求可能是由黑客恶意进行攻击发送的恶意请求,或是因系统异常或网络波动等原因发送至go语言二进制文件加固设备的异常请求,因此,可以当前用户的用户权限进行权限校验,判断该请求是否为恶意请求或异常请求,可以提高go语言二进制文件加固设备的安全性。
108.步骤s13:在权限校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
109.可以理解的是,在权限校验通过时,可以判定当前的文件加固请求并非是恶意请求或异常请求,因此,可以继续执行go语言二进制文件加固方法的步骤进行文件加固。
110.在实际使用中,可以先获取当前用户的用户权限,再获取用户权限标识集合,然后将go语言二进制文件加固功能的权限标识与用户权限标识集合中的各个权限标识进行匹配,当匹配到相同的权限标识时,判定权限校验通过,反之,当无法匹配到相同的权限标识时,判定权限校验不通过。
111.可以理解的是,在权限校验不通过时,可以直接抛弃掉文件加固请求,停止执行go语言二进制文件加固方法的步骤。
112.本实施例通过根据所述文件加固请求获取当前用户的用户权限;对所述用户权限进行权限校验;在权限校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。由于是在进行对待加固二进制文件进行扫描之前对当前用户的用户权限进行校验,在权限校验通过时继续执行go语言二进制文件加固方法的步骤,在权限校验不通过时停止执行go语言二进制文件加固方法的步骤,可以提高go语言二进制文件加固设备的安全性并节约go语言二进制文件加固设备的资源。
113.参考图4,图4为本发明一种go语言二进制文件加固方法第二实施例的流程示意图。
114.基于上述第一实施例,本实施例go语言二进制文件加固方法在所述步骤s20之前,还包括:
115.步骤s11':获取所述文件加固请求中的安全验证数据;
116.需要说明的是,安全验证数据可以是用户端将待加固文件对应的md5密文与预设安全组合数据以预设组合方式进行组合再进行加密得到的,安全验证数据可以是用来验证文件加固请求是否为正常请求的验证数据。
117.步骤s12':根据所述安全验证数据及所述待加固二进制文件进行安全性校验;
118.需要说明的是,因可能存在的黑客攻击或网络异常等现象,文件加固请求可能并非正常的业务请求,而是黑客进行攻击使用的恶意请求或因网络异常接收到的异常请求,因此,可以根据安全验证数据及待加固二进制文件进行安全性校验,判断文件加固请求是否为恶意请求或异常请求。
119.进一步地,为了说明如何进行安全性校验,本实施例步骤s02',可以为:
120.步骤s121':对所述待加固二进制文件进行md5编码,以获得密文数据;
121.需要说明的是,消息摘要算法(message digest algorithm,md5)可以快速对文件进行加密,相同文件经过md5编码之后,得到的md5数据始终一致,且由于md5具备不可逆特征,数据反推难度极高,因此,非常适用于与其他数据进行组合获得安全验证数据。
122.步骤s122':根据所述密文数据获取安全校验数据;
123.需要说明的是,直接使用经过md5编码的密文数据作为安全校验数据虽然也可以具备一定安全性,但是被破解可能性较高,因此,可以对md5编码之后的密文数据进行进一步处理,获得安全校验数据,可以降低被破解的可能性,提高安全校验的可靠性。
124.进一步的,为了提高安全校验的可靠性,本实施例步骤s202',可以为:
125.获取预设安全组合数据,并将所述预设安全组合数据与所述密文数据以预设组合方式进行组合,以获得组合密文数据;对所述组合密文数据以预设加密方式进行加密,以获得安全校验数据。
126.需要说明的是,预设安全组合数据可以是与用户相关的数据,例如用户的手机号码、身份证号码或其他唯一数据,预设组合方式可以是提前预设的一种特定的数据组合顺序,预设加密方式可以是预设的加密算法,可以是不可逆加密算法,例如:md5、hmac、sha1、sha-224、sha-256等算法,也可以是可逆加密算法,本实施例对此不加以限制。
127.例如:选择用户a的手机号码、身份证号码及用户生日作为预设安全组合数据,预设组合方式可以为:手机号码-身份证号码-密文数据-用户生日,预设加密方式可以为md5,将密文数据与易俗河安全组合数据以预设组合方式进行组合即可得到组合密文数据,再将组合密文数据以预设加密方式进行加密,即可得到安全校验数据。
128.步骤s123':将所述安全校验数据与所述安全验证数据进行比较,并根据比较结果确定安全性校验结果。
129.可以理解的是,安全校验数据与安全验证数据分别是在go语言二进制文件加固设备端与用户端以对称的加密流程得到的数据,而黑客无法确定加密流程,因此也无法根据待加固文件生成正确的安全验证数据,因此,将安全校验数据与安全验证数据进行比较,根据比较结果即可确定文件加固请求是否为异常请求或恶意请求。
130.在实际使用中,可以将所述安全校验数据与所述安全验证数据进行比较;在所述
安全校验数据与所述安全验证数据相同时,判定安全性校验通过;在所述安全校验数据与所述安全验证数据不同时,判定安全性校验不通过。
131.可以理解的是,若文件加固请求为正常请求,因用户端与go语言二进制文件加固设备端的加密流程是对称的,即加密流程是一致的,使用的加密数据和加密算法均相同,则安全校验数据与安全验证数据必定相同,因此,当安全验证数据与安全校验数据相同时,可以说明文件加固请求为正常请求,此时可以判定安全性校验通过,当安全校验数据与安全验证数据不同时,则可以说明文件加固请求为异常请求或恶意请求,此时可以判定安全性校验不通过。
132.步骤s13':在安全性校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
133.可以理解的是,当安全性校验通过时,可以确定文件加固请求为正常请求,因此,可以继续执行go语言二进制文件加固方法的后续步骤。
134.可以理解的是,在安全性校验不通过时,可以直接抛弃掉文件加固请求,停止执行go语言二进制文件加固方法的步骤。
135.在实际使用中,还可以记录安全性校验未通过的文件加固请求的请求网络地址(internet protocol address,ip地址),用于分析异常请求或恶意请求的请求来源。
136.本实施例通过获取所述文件加固请求中的安全验证数据;根据所述安全验证数据及所述待加固二进制文件进行安全性校验;在安全性校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤;由于是在进行对待加固二进制文件进行扫描之前对文件加固请求进行安全性校验,在安全性校验通过时继续执行go语言二进制文件加固方法的步骤,在安全性校验不通过时停止执行go语言二进制文件加固方法的步骤,可以进一步提高go语言二进制文件加固设备的安全性并节约go语言二进制文件加固设备的资源。
137.此外,本发明实施例还提出一种存储介质,所述存储介质上存储有go语言二进制文件加固程序,所述go语言二进制文件加固程序被处理器执行时实现如上文所述的go语言二进制文件加固方法的步骤。
138.参照图5,图5为本发明go语言二进制文件加固装置第一实施例的结构框图。
139.如图5所示,本发明实施例提出的go语言二进制文件加固装置包括:
140.数据接收模块501,用于在接收到文件加固请求时,获取所述文件加固请求中的待加固二进制文件;
141.信息提取模块502,用于对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息;
142.数据修改模块503,用于根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
143.本实施例通过在接收到文件加固请求时,获取文件加固请求中的待加固二进制文件;对待加固二进制文件进行扫描,以获得待加固二进制文件中的运行时符号信息及运行时类型信息;根据预设信息修改规则对运行时符号信息及运行时类型信息进行修改,以获得加固后的二进制文件。由于是先获取待加固二进制文件中被常用于进行文件逆向分析的运行时符号信息及运行时类型信息,再将运行时符号信息及运行时类型信息对应的数据根
据预设信息修改规则进行修改,以达到数据混淆的目的,可以使得加固后的二进制文件被逆向分析的难度大幅提高,提高了安全性。
144.进一步地,所述信息提取模块502,还用于根据预设符号特征码对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息;对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时类型信息。
145.进一步地,所述信息提取模块502,还用于对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
146.进一步地,所述信息提取模块502,还用于对所述待加固二进制文件进行扫描,以获得模块数据信息;获取所述模块数据信息中的索引信息并根据所述索引信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
147.进一步地,所述信息提取模块502,还用于获取预设模块特征码;根据所述预设模块特征码对所述待加固二进制文件进行扫描,以获得模块数据信息。
148.进一步地,所述信息提取模块502,还用于对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息获取所述待加固二进制文件中的模块数据信息。
149.进一步地,所述数据接收模块501,还用于根据所述文件加固请求获取当前用户的用户权限;对所述用户权限进行权限校验;在权限校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
150.进一步地,所述数据接收模块501,还用于获取所述文件加固请求中的安全验证数据;根据所述安全验证数据及所述待加固二进制文件进行安全性校验;在安全性校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
151.进一步地,所述数据接收模块501,还用于对所述待加固二进制文件进行md5编码,以获得密文数据;根据所述密文数据获取安全校验数据;将所述安全校验数据与所述安全验证数据进行比较,并根据比较结果确定安全性校验结果。
152.进一步地,所述数据接收模块501,还用于获取预设安全组合数据,并将所述预设安全组合数据与所述密文数据以预设组合方式进行组合,以获得组合密文数据;对所述组合密文数据以预设加密方式进行加密,以获得安全校验数据。
153.进一步地,所述数据接收模块501,还用于将所述安全校验数据与所述安全验证数据进行比较;在所述安全校验数据与所述安全验证数据相同时,判定安全性校验通过;在所述安全校验数据与所述安全验证数据不同时,判定安全性校验不通过。
154.进一步地,所述数据修改模块503,还用于获取所述运行时符号信息及所述运行时类型信息中各个待修改数据的数据类型;根据所述数据类型及预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
155.应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
156.需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者
全部来实现本实施例方案的目的,此处不做限制。
157.另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的go语言二进制文件加固方法,此处不再赘述。
158.此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
159.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
160.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(read only memory,rom)/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
161.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
162.本发明公开了a1、一种go语言二进制文件加固方法,所述go语言二进制文件加固方法包括以下步骤:
163.在接收到文件加固请求时,获取所述文件加固请求中的待加固二进制文件;
164.对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息;
165.根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
166.a2、如a1所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤,包括:
167.根据预设符号特征码对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息;
168.对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时类型信息。
169.a3、如a1所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤,包括:
170.对所述待加固二进制文件进行扫描,以获得节区信息;
171.根据所述节区信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
172.a4、如a1所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤,包括:
173.对所述待加固二进制文件进行扫描,以获得模块数据信息;
174.获取所述模块数据信息中的索引信息并根据所述索引信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
175.a5、如a4所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得模块数据信息的步骤,包括:
176.获取预设模块特征码;
177.根据所述预设模块特征码对所述待加固二进制文件进行扫描,以获得模块数据信息。
178.a6、如a4所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得模块数据信息的步骤,包括:
179.对所述待加固二进制文件进行扫描,以获得节区信息;
180.根据所述节区信息获取所述待加固二进制文件中的模块数据信息。
181.a7、如a1所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤之前,还包括:
182.根据所述文件加固请求获取当前用户的用户权限;
183.对所述用户权限进行权限校验;
184.在权限校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
185.a8、如a1所述的go语言二进制文件加固方法,所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤之前,还包括:
186.获取所述文件加固请求中的安全验证数据;
187.根据所述安全验证数据及所述待加固二进制文件进行安全性校验;
188.在安全性校验通过时,执行所述对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息的步骤。
189.a9、如a8所述的go语言二进制文件加固方法,所述根据所述安全验证数据及所述待加固二进制文件进行安全性校验的步骤,包括:
190.对所述待加固二进制文件进行md5编码,以获得密文数据;
191.根据所述密文数据获取安全校验数据;
192.将所述安全校验数据与所述安全验证数据进行比较,并根据比较结果确定安全性校验结果。
193.a10、如a9所述的go语言二进制文件加固方法,所述根据所述密文数据获取安全校验数据的步骤,包括:
194.获取预设安全组合数据,并将所述预设安全组合数据与所述密文数据以预设组合方式进行组合,以获得组合密文数据;
195.对所述组合密文数据以预设加密方式进行加密,以获得安全校验数据。
196.a11、如a9所述的go语言二进制文件加固方法,所述将所述安全校验数据与所述安全验证数据进行比较,并根据比较结果确定安全性校验结果的步骤,包括:
197.将所述安全校验数据与所述安全验证数据进行比较;
198.在所述安全校验数据与所述安全验证数据相同时,判定安全性校验通过;
199.在所述安全校验数据与所述安全验证数据不同时,判定安全性校验不通过。
200.a12、如a1-a11中任一项所述的go语言二进制文件加固方法,所述根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件的步骤,包括:
201.获取所述运行时符号信息及所述运行时类型信息中各个待修改数据的数据类型;
202.根据所述数据类型及预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
203.本发明公开了b13、一种go语言二进制文件加固装置,所述go语言二进制文件加固装置包括以下模块:
204.数据接收模块,用于在接收到文件加固请求时,获取所述文件加固请求中的待加固二进制文件;
205.信息提取模块,用于对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息及运行时类型信息;
206.数据修改模块,用于根据预设信息修改规则对所述运行时符号信息及所述运行时类型信息进行修改,以获得加固后的二进制文件。
207.b14、如b13所述的go语言二进制文件加固装置,所述信息提取模块,还用于根据预设符号特征码对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时符号信息;对所述待加固二进制文件进行扫描,以获得所述待加固二进制文件中的运行时类型信息。
208.b15、如b13所述的go语言二进制文件加固装置,所述信息提取模块,还用于对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
209.b16、如b13所述的go语言二进制文件加固装置,所述信息提取模块,还用于对所述待加固二进制文件进行扫描,以获得模块数据信息;获取所述模块数据信息中的索引信息并根据所述索引信息确定所述待加固二进制文件中的运行时符号信息及运行时类型信息。
210.b17、如b16所述的go语言二进制文件加固装置,所述信息提取模块,还用于获取预设模块特征码;根据所述预设模块特征码对所述待加固二进制文件进行扫描,以获得模块数据信息。
211.b18、如b16所述的go语言二进制文件加固装置,所述信息提取模块,还用于对所述待加固二进制文件进行扫描,以获得节区信息;根据所述节区信息获取所述待加固二进制文件中的模块数据信息。
212.本发明公开了c19、一种go语言二进制文件加固设备,所述go语言二进制文件加固设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的go语言二进制文件加固程序,所述go语言二进制文件加固程序被执行时实现如上所述的go语言二进制文件加固方法的步骤。
213.本发明公开了d20、一种计算机可读存储介质,所述计算机可读存储介质上存储有go语言二进制文件加固程序,所述go语言二进制文件加固程序执行时实现如上所述的go语
言二进制文件加固方法的步骤。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1