一种恶意代码动态行为的知识图谱构建方法、系统及存储介质

allin2023-03-21  127



1.本发明涉及计算机技术领域,尤其涉及一种恶意代码动态行为的知识图谱构建方法、系统及存储介质。


背景技术:

2.恶意代码分析首先要获取分析的数据源,主要有两种常见的恶意代码分析方法:静态分析和动态分析。静态分析方法不运行恶意代码程序,而是分析二进制文件或者程序结构来判断其恶意性。动态分析方法在可控的环境(例如:沙箱环境)下实际运行恶意代码程序,然后记录恶意样本的运行过程(例如:系统api调用序列、行为等)。
3.恶意代码分析领域主要使用两种方法:一种是基于签名的恶意代码检测方法,其直接分析静态恶意代码文件生成签名。然后通过签名数据库的匹配来识别恶意代码,但是容易受到各种混淆和加壳方法的影响。为了捕获到恶意代码的实际恶意意图从而泛化到一般情况,近些年又提出了第二种基于行为的机器学习和深度学习的方法。基于行为的机器学习和深度学习方法就要求对恶意代码进行合理的特征表示。在恶意代码分析领域,一个个体可以认为是一个恶意代码样本,一个家族是由许多相似的个体组成的集合。在进行特征表示时,相对应的对两个层面进行表示,一个是个体层面的特征,另一个是家族层面的特征。
4.在最近的恶意代码特征表示和分类的工作中,大部分研究的数据源使用系统api序列和系统api调用图、opcode(operational codes)和opcode控制流图。分类模型方法上主要有传统的机器学习模型,朴素贝叶斯、逻辑回归、svm、随机森林、gbdt、xgboost等。随着近年来深度学习的流行,也出现了越来越多的研究尝试使用基于深度学习的模型,研究中常见的模型有rnn、一维卷积cnn、lstm、bilstm、gcn等。部分研究中也出现了直接将恶意代码程序的二进制序列看作灰度图,将恶意代码样本当作图片,使用计算机视觉领域的方法构造特征。还有部分研究直接将恶意代码的行为报告文本作为数据源,使用自然语言处理领域的方法构造特征。
5.现有技术的缺陷有:
6.静态分析方面,静态分析方法对于各种混淆方法比较敏感,分类器很容易受到混淆代码的干扰。与静态分析方法相比,动态分析方法对于恶意代码的混淆码不敏感,因为动态分析捕获的是恶意代码运行时对系统的真实恶意意图。
7.大多数工作使用系统api序列和opcode等底层特征作为数据源,而不是更高层的行为特征(例如:创建文件、读取注册表)。系统api序列和opcode可读性差、理解起来困难,api序列和opcode操作码不论是结合n-gram还是构建依赖图的邻接矩阵表示,其特征都有高维稀疏的特点。体现在对个体的向量表示维度很高但是大部分元素为0。
8.许多研究中使用深度学习的模型和方法,对样本的数量要求很高,训练所需要的时间成本很大,且模型十分复杂难以分析。此外,目前的行为表示多专注于对恶意代码个体
的表示,忽略了代码家族、个体关系、家族关系的表示。


技术实现要素:

9.本发明提供了一种恶意代码动态行为的知识图谱构建方法,包括如下步骤:
10.步骤1,恶意代码收集与样本标注步骤:收集恶意代码样本,对恶意代码样本进行数据标注;
11.步骤2,动态分析生成行为报告步骤:利用沙箱动态分析恶意代码,生成动态报告;
12.步骤3,恶意代码行为知识图构建步骤:构建恶意代码行为知识图,包括边、节点的设计,恶意代码行为知识图包括个体行为知识图和家族行为知识图;
13.步骤4,恶意代码行为知识图嵌入表示步骤:利用transe知识图谱嵌入表示算法,学习恶意代码行为知识图的嵌入表示。
14.本发明还提供了一种恶意代码动态行为的知识图展示系统,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述知识图展示方法的步骤。
15.本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的知识图展示方法的步骤。
16.本发明的有益效果是:本发明通过将恶意代码程序样本投入沙箱虚拟环境中实际运行,获得恶意代码的动态行为报告。从恶意代码动态行为中分析抽取出恶意代码的关键行为,并构建出行为知识图。通过知识图嵌入,将行为知识图中高维稀疏的离散图特征转换成低维连续的嵌入向量的表示形式。在此基础上构造出了恶意代码个体和家族的嵌入向量表示,对多个家族进行了分类任务,并使用可视化和定量实验验证了本发明中知识图结构的合理性、个体和家族表示的有效性。
附图说明
17.图1是恶意代码行为知识图中三元组的一般表示示意图;
18.图2是恶意代码行为知识图中复杂行为三元组的一般表示示意图;
19.图3是拷贝文件行为中三元组的表示示意图;
20.图4是individual-head(个体头)行为三元组示意图;
21.图5是family-head(家族头)行为三元组示意图;
22.图6是恶意代码知识图部分可视化示意图;
23.图7是基于transe的行为三元组向量之间的关系示意图;
24.图8是恶意代码知识库中三元组向量之间的关系示意图;
25.图9是individual-head中三元组向量之间的关系示意图;
26.图10是family-head中三元组向量之间的关系示意图。
具体实施方式
27.本发明公开了一种恶意代码动态行为的知识图谱构建方法,发明目的是希望能够使用恶意代码行为信息建立一个知识图,该知识图本身含有完整的、便于分析人员查看和
理解的恶意代码行为。从行为知识图中同时提取出恶意代码个体和家族的图嵌入向量表示,个体和家族的嵌入向量表示特征可以用于通用的机器学习任务。知识图满足了分析人员的可读性需求,图嵌入满足了通用机器学习模型输入特征的需求。这主要涉及两个方面:一是继续恶意代码领域知识图结构的研究和设计;二是将知识图嵌入的理论和方法引入到恶意代码知识图的嵌入向量表示当中,在引入的同时使用更适合恶意代码领域知识图的嵌入方法。使嵌入向量所包含的特征信息更加丰富,结构更加合理和稳定。
28.本发明的恶意代码动态行为的知识图谱构建方法,包括如下步骤:
29.步骤1,恶意代码收集与样本标注步骤:从指定网站(例如,该指定网站为:virusshare)收集恶意代码样本,利用恶意代码类别标注工具软件(例如,该恶意代码类别标注工具软件为:avclass)对恶意代码样本进行数据标注;
30.步骤2,动态分析生成行为报告步骤:利用沙箱动态分析恶意代码,生成json格式的动态报告;
31.步骤3,恶意代码行为知识图构建步骤:构建恶意代码行为知识图,包括边、节点的设计,恶意代码行为知识图包括个体行为知识图和家族行为知识图;
32.步骤4,恶意代码行为知识图嵌入表示步骤:利用transe知识图谱嵌入表示算法,学习恶意代码行为知识图的嵌入表示。
33.在步骤3中,恶意代码的行为构建知识图,并基于知识图嵌入构建恶意代码个体和家族的向量表示。在沙箱的动态行为报告中,能够获取代表恶意代码意图的、与系统的交互行为,如对文件的增删改查,对注册表的操作等。本发明主要采用知识图中主谓宾三元组的表示形式,以恶意代码个体或家族为主语,恶意代码对系统的动作为谓语,系统组件为宾语。本发明主要提出了以个体为中心的individual-head知识图结构和以家族为中心的family-head知识图结构。通过动态分析,本发明可以得到恶意代码的行为报告,然后从行为报告中构建出一个知识图。实体(例如:恶意代码、文件、注册表、其他系统组件等)组成了图中的节点,关系(例如:创建、删除、修改、http请求等等)构成了图中的边,这个图结构保存了恶意代码完整的行为信息。
34.动态分析方法在可控的环境下实际运行恶意代码样本,通过记录恶意代码样本在系统上的行为来进行恶意代码的分析。本发明使用的是基于cuckoo沙箱的动态分析方法,cuckoo沙箱是一个自动化恶意代码分析的工具集合,可以自由地选择安装不同的安全插件获得不同的分析功能。cuckoo沙箱一般安装在linux操作系统上,cuckoo沙箱安装的linux系统被称为host。cuckoo沙箱后端会连接虚拟机中的操作系统,作为恶意代码运行的模拟环境,这个虚拟机中的操作系统被称为client。在client中,会运行一个python程序监控并记录恶意代码对系统的行为,并且client随时保持着与host的通信联系。在client中的恶意代码运行结束后,client会将记录的行为日志提交给host进行分析,host最终生成一个json格式的动态行为报告,供恶意代码分析人员查看和使用。
35.为了和知识图领域的表示一致,恶意代码行为图被描述成三元组形式。其中每个三元组由头实体h∈r,尾实体t∈e和他们之间的关系r∈r组成。e是实体的集合,r是关系的集合。在恶意代码行为的情况下,它可以被表示为如图1所示,(恶意代码,动作,系统组件)三元组表示。在图中还会出现少数复杂的行为,需要两个动作才能完整地进行表达。例如,拷贝文件这个行为,需要复制和粘贴两个动作才能完整地表达。这种复杂行为的一般表示
如图2所示。拷贝文件行为中,复制粘贴的例子如图3所示。
36.知识图中边的设计:
37.恶意代码行为知识图中的边,即恶意代码对系统的动作,是区分恶意代码家族的关键特征,对于描述恶意代码的行为非常重要。我们在设计边的时候,是基于cuckoo安全沙箱的分析报告,抽取了恶意代码中指定的动作(指定的动作包括普遍出现且比较关键的动作)。其中主要有对文件的动作、对文件夹的动作、对注册表的动作、命令行动作、以及部分网络动作。
38.在我们的三元组(h,r,t)中,边被定义成一般知识图中的关系r(relation),在恶意代码行为的情况下也就是前文提到的动作。总共构造了23种关系,其中大多数是文件、文件夹、注册表和动态链接库上的增删改查,以及一些网络操作,如表1和表2所示
39.表1恶意代码行为图中的边(1)
[0040][0041]
表2恶意代码行为图中的边(2)
[0042][0043]
知识图中节点的设计:
[0044]
恶意代码行为知识图中的节点被描述成实体集合e。这个实体集合包括两部分,头实体(head)h和尾实体(tail)t。我们设计了h的两种表示方式,我们称之为individual-head(个体作为头实体)和family-head(家族作为头实体),而t则用统一的系统组件表示。
[0045]
在individual-head中,我们使用恶意代码个体的id来作为三元组中的头实体h,例如恶意代码个体的md5来作为个体id,如图4中所示。在这种情况下三元组(h,r,t)被表示
成三元组(个体id,动作,系统组件)。
[0046]
在这种三元组表示形式中,图嵌入学习模型会将更多的注意力放在局部的个体特征上。但是当恶意代码个体的数量剧增的时候,个体id种类会变得很多,这样会造成知识图中许多不必要的数据冗余,种类过多的h会导致三元组(h,r,t)中r和t的分布得过于分散,不利于行为知识图中行为模式的识别与提取。
[0047]
为了解决上述问题,本发明又提出了family-head的行为知识图表示方法,我们使用恶意代码家族id作为三元组中的头实体。例如,fa5ead3aa8个体属于scrinject家族,我们就使用scrinject作为家族id,也就是三元组(h,r,t)中的头实体h,如图5所示。在这种情况下,知识图中三元组(h,r,t)被表示成行为三元组(家族id,动作,系统组件)。
[0048]
在这种表示方式中,图嵌入学习模型会将更多的注意力放到全局的家族特征上。图的规模更小,图中节点和边之间(即动作和系统组件之间)的联系更加紧密,更有利于图中行为模式的识别与抽取。
[0049]
本发明对恶意代码行为知识图进行了部分可视化,如图6所示。
[0050]
在步骤4中,本发明针对提出的individual-head和family-head各自的图结构特点,基于通用的知识图嵌入方法,各自设计了一套对恶意代码个体和家族的图嵌入表示方法。其中基于本发明提出的family-head图结构,通过通用的知识图嵌入方法学习行为三元组的嵌入向量表示。在此基础上,本发明提出一种基于家族行为知识图嵌入构建个体嵌入向量表示的方法。这种方法在家族分类任务中表现较好。
[0051]
由于恶意代码行为知识图(简称:知识图)的结构是离散的空间结构,而传统机器学习和深度学习的输入特征一般都是固定维度的、连续的向量特征。为了使我们的恶意代码行为知识图的特征对传统机器学习和深度学习任务更加通用,我们需要将离散的图结构特征转换成固定维度的、连续的嵌入向量特征。为此,本发明使用知识图嵌入的方法从本发明的行为知识图上进一步提取嵌入向量。
[0052]
本发明使用transe作为我们的知识图嵌入模型,来获得知识图中行为三元组的嵌入向量表示。通过负采样构造知识图中未出现的负样本,优化transe的评分函数fr(h,t)=-||h+r-t||
1/2
(此处的h、r和t皆为n维嵌入向量),我们可以获得实体h、t和关系r的嵌入向量表示。
[0053]
基于transe的行为三元组学习算法主要为,输入一个恶意代码行为知识图三元组集合s={(h,r,t)},其中h和t属于实体集合e,h和t可以统一用e表示,r属于关系集合r。输入一个软间隔γ,以及h、r和t嵌入向量的维度k。
[0054]
如图7是基于transe的行为三元组向量之间的关系,具体到恶意代码行为图中,可以获得如图8的向量关系。
[0055]
首先对待训练的关系向量r和实体向量e进行初始化。接着对实体集合中的每个实体向量e进行归一化。在恶意代码行为知识图三元组(h,r,t)中采样出一个minibatch,初始化t_batch为空集合。对minibatch中的每一个三元组(h,r,t),通过随机替换h为h^',替换t为t^'来构造三元组负样本(h^',r,t^')。将正负样本对{(h,r,t),(h^',r,t^')}放入集合t_batch中等待训练。当一个minibatch中所有的三元组都完成了负样本的构造过程后,通过公式(4-1)来获得minibatch的梯度。恶意代码行为图上transe算法学习过程的整体流程如算法4-1所示。
[0056]
公式(4-1)中的γ为软间隔,是一个可以调节的超参数。其中d(h+r,t)为正样本三元组h+r与向量t之间的距离,d(h

+r,t

)为负样本三元组h

+r与向量t

之间的距离,优化目标使得在知识图中实际出现过的行为三元组正样本(h,r,t)的距离d(h+r,t)小于设定值(尽可能的小),而使得负样本(h

,r,t

)的距离d(h

+r,t

)大于设定值(尽可能大)。这样做的目的是在行为知识图中真正出现过的正样本之间关系尽可能地紧密,而没有一起出现过地h

和t

之间地区分度会很大。
[0057][0058]
算法4-1恶意代码行为图上transe的学习过程
[0059][0060][0061]
公式(4-1)中出现的距离公式如公式(4-2)所示。
[0062]
d(h+r,t)=(h+r-t)2ꢀꢀꢀ
(4-2)
[0063]
通过负采样和对transe损失函数的优化,r和t中的特征会传递到h中,h的特征也会传递到r和t中。由此分布式表示和优化过程可以看出,一个三元组(h,r,t)的特征信息会分布式地存储在嵌入向量h、r和t中。随后我们可以基于行为三元组的嵌入向量h、r和t构造出个体和家族的向量表示。我们使用这种图嵌入特征的另一个好处是,我们可以在非常大的“恶意代码行为语料库”中预训练嵌入向量h、r和t,然后在较小的数据集上使用他们。预训练的行为嵌入向量中包含难以从小数据集上提取的丰富特征。我们可以像word2vec一样,保存一个恶意代码行为到嵌入向量的字典,提供给其他只有小规模数据集的应用。
[0064]
在individual-head的情况下,由于使用个体id作为头实体,头实体可以看作个体本身,即三元组(h,r,t)中的h表示个体。例如fa5ead和aefacd两个恶意代码个体都属于scrinject家族,知识图中有两个三元组(fa5ead,d11_loaded,c:\windows)和(aefacd,file_created,c:\tmp.dat),如图9表示。
[0065]
如图中的向量h
fa5ead
和h
aefacd
为恶意代码个体向量嵌入表示。通过对于嵌入目标损失函数的优化,使得嵌入向量满足公式(4-9)和公式(4-10)。
[0066]hfa5ead
+r
dll_loaded
≈t
c\windows
ꢀꢀꢀ
(4-9)
[0067]haefacd
+r
file_created
≈t
c:\tmp,dat
ꢀꢀꢀ
(4-10)
[0068]
在这种情况下,向量h之所以可以作为个体的嵌入向量表示,是因为向量h通过h+r≈t的整体优化目标,使得动作嵌入向量r和系统组件嵌入向量t中的信息分布式地表示到了h里面。特征从r和t中传递到了h去。
[0069]
在individual-head的情况下只有对恶意代码个体的表示,而没有对恶意代码家族的表示。我们需要通过恶意代码个体的嵌入向量表示构建出恶意代码家族的向量表示。具体的构建方法我们使用属于同一个恶意代码家族的所有个体的簇中心向量来作为恶意代码家族的嵌入向量表示。
[0070]
在family-head的情况下,由于使用家族id作为头实体,头实体可以直接看作家族的向量表示。此时,个体的区别就在于,不同的个体会通过不同的动作,作用于不同的系统组件实体。例如有2个属于家族scrinject的个体a和个体b,在family-head下,头节点统一用scrinject表示。恶意代码行为知识图中的三元组表示为(scrinject,dll_loaded,c:\windows\system32\mswsock.dll)(scrinject,file_created,c:\tmp.dat),(scrinject,regkey_written,hkey..)通过知识图嵌入的训练,会得到如图10所示的向量空间表示。
[0071]
因为一种h对应一个家族,所以h本身可以作为恶意代码家族的表示,。但是在这种情况下,由于个体a和个体b统一使用scrinject家族表示,即嵌入向量空间中只有h
scrinject
,而没有a和b个体的嵌入表示。因此家族的嵌入向量表示可以直接得到,而个体的嵌入向量表示则需要从h、r和t的向量空间中重新构造出来。
[0072]
本发明将一个个体产生过动作的所有系统组件的嵌入向量t聚合起来,就可以作为个体的向量表示vi,此处我们使用求和池化,如公式(4-16)所示。
[0073][0074]
通过这种方式,从恶意代码的行为知识图嵌入中,构造出恶意代码个体va和个体vb的嵌入向量表示。
[0075]
本发明的有益效果:本发明通过将恶意代码程序样本投入沙箱虚拟环境中实际运行,获得恶意代码的动态行为报告。从恶意代码动态行为中分析抽取出恶意代码的关键行为,并构建出行为知识图。通过知识图嵌入,将行为知识图中高维稀疏的离散图特征转换成低维连续的嵌入向量的表示形式。在此基础上构造出了恶意代码个体和家族的嵌入向量表示,对多个家族进行了分类任务,并使用可视化和定量实验验证了本发明中知识图结构的合理性、个体和家族表示的有效性。
[0076]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在
不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

技术特征:
1.一种恶意代码动态行为的知识图谱构建方法,其特征在于,包括如下步骤:步骤1,恶意代码收集与样本标注步骤:收集恶意代码样本,对恶意代码样本进行数据标注;步骤2,动态分析生成行为报告步骤:利用沙箱动态分析恶意代码,生成动态报告;步骤3,恶意代码行为知识图构建步骤:构建恶意代码行为知识图,包括边、节点的设计,恶意代码行为知识图包括个体行为知识图和家族行为知识图;步骤4,恶意代码行为知识图嵌入表示步骤:利用transe知识图谱嵌入表示算法,学习恶意代码行为知识图的嵌入表示。2.根据权利要求1所述的知识图谱构建方法,其特征在于,在所述步骤1中,从指定网站收集恶意代码样本,利用恶意代码类别标注工具软件对恶意代码样本进行数据标注。3.根据权利要求1所述的知识图谱构建方法,其特征在于,在所述步骤2中,沙箱为cuckoo沙箱,cuckoo沙箱安装在操作系统上,cuckoo沙箱安装的操作系统被称为host;cuckoo沙箱后端会连接虚拟机中的操作系统,作为恶意代码运行的模拟环境,虚拟机中的操作系统被称为client;在client中,会运行一个python程序监控并记录恶意代码对系统的行为,并且client随时保持着与host的通信联系;在client中的恶意代码运行结束后,client会将记录的行为日志提交给host进行分析,host最终生成一个json格式的动态报告,供恶意代码分析人员查看和使用。4.根据权利要求1所述的知识图谱构建方法,其特征在于,在所述步骤3中,知识图中的边,即恶意代码对系统的动作,在设计边的时候,是基于沙箱的分析报告,抽取了恶意代码中指定的动作。5.根据权利要求4所述的知识图谱构建方法,其特征在于,在所述步骤3中,所述指定的动作包括对文件的动作、对文件夹的动作、对注册表的动作、命令行动作、以及网络动作。6.根据权利要求1所述的知识图谱构建方法,其特征在于,在所述步骤3中,知识图中的节点被描述成实体集合e,实体集合e包括头实体h和尾实体t,头实体包括个体作为头实体individual-head和家族作为头实体family-head,尾实体用统一的系统组件表示,在individual-head中,使用恶意代码个体的id来作为三元组中的头实体h,三元组(h,r,t)被表示成三元组(个体id、动作、系统组件);在family-head中,使用恶意代码家族id来作为三元组中的头实体h,三元组(h,r,t)被表示成三元组(家族id、动作、系统组件)。7.根据权利要求6所述的知识图谱构建方法,其特征在于,在所述步骤4中,使用transe作为恶意代码行为知识图嵌入模型,来获得恶意代码行为知识图中行为三元组的嵌入向量表示,通过负采样构造恶意代码行为知识图中未出现的负样本,优化transe的评分函数f
r
(h,t)=-||h+r-t||
1/2
,获得实体h、t和关系r的嵌入向量表示,h、r和t皆为n维嵌入向量。8.根据权利要求7所述的知识图谱构建方法,其特征在于,在所述步骤4中,首先对待训练的关系向量r和实体向量e进行初始化,接着对实体集合中的每个实体向量e进行归一化,在恶意代码行为知识图三元组(h,r,t)中采样出一个minibatch,初始化t_batch为空集合,对minibatch中的每一个三元组(h,r,t),通过随机替换h为h


,替换t为t


来构造三元组负样本(h


,r,t


),将正负样本对{(h,r,t),(h


,r,t


)}放入集合t_batch中等待训练,当一个minibatch中所有的三元组都完成了负样本的构造过程后,通过公式(4-1)来获得minibatch的梯度;
公式(4-1)中的γ为软间隔,是一个可以调节的超参数,其中d(h+r,t)为正样本三元组h+r与向量t之间的距离,d(h

+r,t

)为负样本三元组h

+r与向量t

之间的距离,优化目标使得在恶意代码行为知识图中实际出现过的行为三元组正样本(h,r,t)的距离d(h+r,t)小于设定值,而使得负样本(h

,r,t

)的距离d(h

+r,t

)大于设定值;9.一种恶意代码动态行为的知识图谱构建系统,其特征在于,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现权利要求1-8中任一项所述知识图展示方法的步骤。10.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-8中任一项所述的知识图谱构建方法的步骤。

技术总结
本发明提供了一种恶意代码动态行为的知识图谱构建方法、系统及存储介质,包括如下步骤:步骤1,恶意代码收集与样本标注步骤:收集恶意代码样本,对恶意代码样本进行数据标注;步骤2,动态分析生成行为报告步骤:利用沙箱动态分析恶意代码,生成动态报告;步骤3,恶意代码行为知识图构建步骤:构建恶意代码行为知识图,包括边、节点的设计,恶意代码行为知识图包括个体行为知识图和家族行为知识图;步骤4,恶意代码行为知识图嵌入表示步骤:利用TransE知识图谱嵌入表示算法,学习恶意代码行为知识图的嵌入表示。本发明的有益效果是:本发明构造出了恶意代码个体和家族的嵌入向量表示,对多个家族进行了分类任务,并使用可视化和定量实验验证了本发明中知识图结构的合理性、个体和家族表示的有效性。家族表示的有效性。家族表示的有效性。


技术研发人员:丁宇新 邵苗苗 王广斌 马宇斌 张霄
受保护的技术使用者:哈尔滨工业大学(深圳)
技术研发日:2022.02.11
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-6988.html

最新回复(0)