CN111651781A - 日志内容保护方法、装置、计算机设备和存储介质 - Google Patents
日志内容保护方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111651781A CN111651781A CN202010503010.2A CN202010503010A CN111651781A CN 111651781 A CN111651781 A CN 111651781A CN 202010503010 A CN202010503010 A CN 202010503010A CN 111651781 A CN111651781 A CN 111651781A
- Authority
- CN
- China
- Prior art keywords
- log
- obfuscated
- character string
- source code
- content
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000013507 mapping Methods 0.000 claims abstract description 165
- 230000014509 gene expression Effects 0.000 claims description 152
- 238000004590 computer program Methods 0.000 claims description 15
- 238000004458 analytical method Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 16
- 238000011161 development Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 238000009434 installation Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000009467 reduction Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000002427 irreversible effect Effects 0.000 description 3
- 238000009795 derivation Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000004043 dyeing Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction 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
- 238000011084 recovery Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001131 transforming 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
本申请涉及一种日志内容保护方法、装置、计算机设备和存储介质。所述方法包括:对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储至预设位置;所述编码映射文件用于还原日志内容。采用本方法能够效保护明文日志内容,有效提高了日志内容的安全性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种日志内容保护方法、装置、计算机设备和存储介质。
背景技术
日志文件是用于记录系统操作事件的记录文件或文件集合,记录着操作系统以及各种服务运行的细节信息,对于处理历史数据、诊断问题的追踪以及理解系统的活动等具有重要作用。若被攻击者恶意攻击或篡改,则会给系统带来严重的安全隐患。因此,随之出现了一些对源代码进行加密以实现代码混淆的方式,从而对源代码进行保护。
传统的方式通常是对源代码中的字符串进行加密,并在加密字符串所在源代码中的位置插入解密代码。通常在代码中提供加密密钥的同时也会提供解密密钥,以保证每个字符串的能够被准确使用。然而,这种方式仅在代码层面保护了字符串,在日志记录、输出、传输等过程中容易被破解,从而获得日志明文内容,无法有效对日志内容进行保护,导致日志内容的安全性无法得到有效保障。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高日志内容的安全性的日志内容保护方法、装置、计算机设备和存储介质。
一种日志内容保护方法方法,所述方法包括:
对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;
对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;
对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;
基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;
建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储至预设位置;所述编码映射文件用于还原日志内容。
一种日志内容保护装置,所述装置包括:
代码编译模块,用于对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;
代码解析模块,用于对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;
混淆编码模块,用于对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;
编码映射模块,用于建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储至预设位置;所述编码映射文件用于还原日志内容。
在其中一个实施例中,所述待混淆日志内容包括日志字符串,所述代码解析模块还用于通过注解器对所述语法树进行遍历分析,获得日志表达式;基于所述日志表达式获取所述待混淆源代码中的日志字符串。
在其中一个实施例中,所述代码解析模块还用于根据预设表达式解析所述语法树中待处理的日志表达式;对所述日志表达式进行节点遍历,获取包括日志内容的日志表达式;对所述包括日志内容的日志表达式进行解析,从所述包括日志内容的日志表达式中提取日志字符串。
在其中一个实施例中,所述混淆编码模块还用于按照预设编码方式对所述待混淆日志内容进行混淆编码,生成随机短码字符串;将所述随机短码字符串确定为与所述待混淆日志内容对应的混淆字符串。
在其中一个实施例中,所述混淆编码模块还用于对所述待混淆日志内容进行解析,获得一元表达式对应的日志字符串;对所述一元表达式对应的日志字符串进行混淆编码,生成所述日志字符串对应的随机短码字符串;所述混淆编码模块还用于基于所述混淆字符串替换所述一元表达式中的日志字符串,生成更新的日志表达式;基于所述更新的日志表达式得到混淆后的目标源代码。
在其中一个实施例中,所述装置还包括日志解码模块,用于基于混淆后的目标源代码生成目标应用对应的可执行文件;从所述目标应用对应的日志平台,获取通过所述目标应用基于所述可执行文件运行产生的线上日志文件;获取与所述目标应用对应的编码映射文件,基于所述编码映射文件对所述线上日志文件进行日志解码。
在其中一个实施例中,所述日志解码模块还用于基于所述编码映射文件中的映射关系,对所述线上日志文件中的混淆字符串进行映射解码,获得解码字符串;基于所述解码字符串获得所述线上日志文件对应的日志明文内容。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;
对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;
对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;
基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;
建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储至预设位置;所述编码映射文件用于还原日志内容。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;
对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;
对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;
基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;
建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储至预设位置;所述编码映射文件用于还原日志内容。
上述日志内容保护方法、装置、计算机设备和存储介质,对待混淆源代码进行编译,获得待混淆源代码对应的语法树;通过对语法树进行解析,由此能够有效地获取待混淆源代码中的待混淆日志内容。进而对待混淆日志内容进行混淆编码,生成与待混淆日志内容对应的混淆字符串;通过基于混淆字符串替换待混淆日志内容,能够有效获得混淆编码后的目标源代码,从而有效实现了对日志内容进行混淆处理。同时还建立日志字符串与混淆字符串的映射关系,由此能够有效利用编码映射关系实现编解码相互独立。进而基于映射关系生成编码映射文件并存储至预设位置;编码映射文件用于还原日志内容,由此可以实现编码映射文件与线上传输的日志文件分开存储。由于编码映射文件存储在预设位置,即本地的开发者方,因此攻击者或第三方无法直接获得基于目标源代码的目标应用对应的明文日志内容,从而有效避免了代码中日志内容暴露业务细节和泄漏用户隐私等风险,有效保护了明文日志内容,进而有效提高了日志内容的安全性。
附图说明
图1为一个实施例中日志内容保护方法的应用环境图;
图2为一个实施例中日志内容保护方法的流程示意图;
图3为一个实施例中通过注解器从语法树中获得日志表达式的流程示意图;
图4为另一个实施例中日志内容保护方法的流程示意图;
图5为一个实施例中通过注解器对日志表达式进行解析的流程示意图;
图6为一个实施例中对日志内容进行混淆编码的流程示意图;
图7为一个实施例中日志内容还原过程的流程示意图;
图8为一个具体的实施例中日志内容保护方法的流程示意图;
图9为一个实施例中日志内容混淆编码的编译过程示意图;
图10为一个具体的实施例中日志内容保护方法的应用流程示意图;
图11为一个实施例中日志内容保护装置的结构框图;
图12为另一个实施例中日志内容保护装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的日志内容保护方法,可应用于计算机设备中。计算机设备可以为终端或服务器。可以理解的是,本申请提供的日志内容保护方法可以应用于终端,也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。
在其中一个实施例中,计算机设备可以为服务器。本申请提供的日志内容保护方法,可以应用于如图1所示的应用环境中。其中,开发终端102通过网络与服务器104进行通信,服务器104通过网络与用户终端106进行通信。开发终端102对待混淆源代码进行编译,获得待混淆源代码对应的语法树;通过对语法树进行解析,由此能够有效地获取待混淆源代码中的待混淆日志内容。进而对待混淆日志内容进行混淆编码,生成与待混淆日志内容对应的混淆字符串;基于混淆字符串替换待混淆日志内容,获得混淆编码后的目标源代码。开发终端102还建立待混淆日志内容与混淆字符串的映射关系,基于映射关系生成编码映射文件并存储至预设位置。用户终端106用于安装并运行目标源代码对应的目标应用,生成相应的日志文件并上传至服务器104。开发终端102获取日志文件和编码映射文件,根据騗映射文件对日志内容进行还原。其中,开发终端102可以但不限于是各种个人计算机、笔记本电脑和平板电脑,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现,用户终端106可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
在一个实施例中,如图2所示,提供了一种日志内容保护方法,以该应用于计算机设备来举例说明,该计算机设备具体可以是图1中的开发终端102或者服务器104。参照图2,日志内容保护方法包括以下步骤:
S202,对待混淆源代码进行编译,获得待混淆源代码对应的语法树。
在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的消息的文件。对于日志内容,特别是染色日志已经成为开发者快速跟踪、定位、排查用户使用异常问题的重要数据。开发者为了能够保证处理问题的效率,通常会在代码里面预埋很多的日志内容;为了追踪用户的操作,通常会在调用链路各个环节带上很多上下文数据,包括但不限于业务核心数据、用户数据、应用运行时参数、手机配置等。这无疑会带来暴露业务细节和泄漏用户隐私等安全隐患。
其中,源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,通常通过编译器完成。
代码混淆亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码形式的处理方式。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。通常可以通过代码混淆实现保护源代码。
其中,待混淆源代码可以为应用开发源代码,也可以为应用开发过程中的中间代码,可以用于生成目标应用的安装文件。待混淆源代码中包括一些用于生成日志内容的日志字符串,通过对源代码中用于生成日志内容的日志字符串进行混淆编码,能够有效实现对日志内容进行保护。
语法树是句子结构的图形表示,代表句子的推导结果,有利于理解句子语法结构的层次,即语法树就是按照某一规则进行推导时所形成的树。抽象语法树(abstractsyntaxcode,AST)是源代码的抽象语法结构的树状表示,树中的每个节点都表示源代码中的一种结构。其中,抽象语法树并不会表示出真实语法出现的每一个细节,比如嵌套括号被隐含在树的结构中,并没有以节点的形式呈现。
具体地,计算机设备获取待混淆源代码后,首先对待混淆源代码进行编译,将待混淆源代码解释为对应的语法树。通过将待混淆源代码解释为对应的语法树,能够有效对源代码中的内容进行分析和进行混淆编码处理。
S204,对语法树进行解析,获取待混淆源代码中的待混淆日志内容。
其中,待混淆日志内容可以是日志内容中所包括的日志字符串。字符串或串(String)是由数字、字母、下划线组成的一串字符,是编程语言中表示文本的数据类型。在程序设计中,字符串通常为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。字符串主要用于编程。字符串在存储上类似字符数组,它的每一位的单个元素都是可以提取的,可以在高精度运算时每一位都可以转化为数字存入数组。日志字符串是指源代码中用于生成日志内容的字符串。
计算机设备将待混淆源代码解释为对应的语法树后,进一步对语法树进行解析。具体地,计算机设备可以通过注解器对得到的语法树进行遍历分析,查找出源代码中的待混淆日志内容。计算机设备具体可以利用注解器对语法树进行遍历,并利用预设表达式匹配日志字符串。其中,预设表达式可以为正则表达式,利用正则表达式能够有效地对字符串进行操作,从而能够有效获得源代码中的待混淆日志内容。其中,待混淆日志内容可以是预设表达式对应的部分日志字符串。在另一个实施例中,待混淆日志内容也可以是所有日志表达式对应的日志字符串。
S206,对待混淆日志内容进行混淆编码,生成与待混淆日志内容对应的混淆字符串。
其中,混淆编码是指对源代码进行重新组织和处理,将代码中的所有变量、函数、类的名称等变换为另一种形式的字符串代号,使得处理后的代码与处理前代码完成相同的功能。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,得到与混淆前的代码一样的执行结果。混淆后的代码很难被反编译,即使被反编译,也很难得出程序的真正语义,从而能够有效地保护代码。
待混淆源代码中的待混淆日志内容可以是按照预设表达式规则编写的,通过预设表达式获取待混淆源代码中的待混淆日志内容后,对待混淆日志内容中的日志字符串进行混淆编码,由此能够有效地针对源代码中的日志字符串进行混淆编码。
计算机设备基于语法树获得待混淆日志内容中的日志字符串后,则对日志字符串进行混淆编码。具体地,计算机设备可以通过预设编码方式或与配置的混淆器,对日志字符串进行混淆编码得到编码密文,即编码后得到的与日志字符串对应的混淆字符串。
S208,基于混淆字符串替换待混淆日志内容,得到混淆后的目标源代码。
其中,混淆编码仅对源代码的代码形式进行混淆处理,混淆编码后的目标源代码所实现的功能和执行结果,与待混淆源代码所实现的功能和执行结果相同。
计算机设备对日志字符串进行混淆编码,生成日志字符串对应的混淆字符串,并得到对应的编码密文。编码密文可以为日志字符串与混淆字符串的映射关系。计算机设备进而利用混淆编码后的混淆字符串替换日志字符串,重新生成混淆编码后的目标源代码。
S210,建立待混淆日志内容与混淆字符串的映射关系,基于映射关系生成编码映射文件并存储至预设位置;编码映射文件用于还原日志内容。
其中,映射关系可以表示对象关系映射(ObjectRelationalMapping,简称ORM),是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。编码映射文件可以为映射关系数据表,基于关系型数据表存储待混淆日志内容与混淆字符串之间的映射关系,例如可以采用表关联方式存储映射关系。
计算机设备对待混淆日志内容中的日志字符串进行混淆编码后,需要保持数据的唯一性,因此需要建立日志字符串和混淆字符串之间的映射关系,以用于映射混淆编码前的待混淆日志内容。
计算机设备对待混淆日志内容进行混淆编码后,则建立建立待混淆日志内容中的日志字符串与混淆字符串的映射关系,基于映射关系生成编码映射文件,并将编码映射文件存储至预设位置。编码映射文件用于还原日志内容,通过编码映射文件中存储的映射关系即可还原出混淆编码前的明文日志内容。
其中,编编码映射文件作为编译产物供开发者方进行存储。具体地,编码映射文件可以存储在开发者本地平台,也可以存储在开发方指定的平台。由此,基于目标源代码生成的安装文件对应的目标应用,在运行、记录、输出和传输等过程中的日志内容都是经过混淆编码保护的内容,第三方无法直接获取明文日志内容,从而有效避免了相应的日志安全风险,有效保护了日志内容。
上述日志内容保护方法中,计算机设备对待混淆源代码进行编译,获得待混淆源代码对应的语法树;通过对语法树进行解析,由此能够有效地获取待混淆源代码中的待混淆日志内容。计算机设备进而对待混淆日志内容进行混淆编码,生成与待混淆日志内容对应的混淆字符串;通过将待混淆日志内容替换为混淆字符串,能够有效获得混淆编码后的目标源代码,从而有效实现了对日志内容进行混淆处理。计算机设备同时还建立日志字符串与混淆字符串的映射关系,由此能够有效利用编码映射关系实现编解码相互独立。进而基于映射关系生成编码映射文件并存储至预设位置;编码映射文件用于还原日志内容,由此可以实现编码映射文件与线上传输的日志文件分开存储。由于编码映射文件存储在预设位置,即本地的开发者方,因此攻击者或第三方无法直接获得基于目标源代码的目标应用对应的明文日志内容,从而有效避免了通过代码中的日志内容暴露业务细节和泄漏用户隐私等风险,有效保护了明文日志内容,进而有效提高了日志内容的安全性。
在一个实施例中,待混淆日志内容包括日志字符串,对语法树进行解析,获取待混淆源代码中的待混淆日志内容,包括:通过注解器对语法树进行遍历分析,获得日志表达式;基于日志表达式获取待混淆源代码中的日志字符串。
其中,注解器可以是一种虚拟的注解处理器,是一种在编译时扫描和处理注解的编译工具,可以通过自定义注解配置得到注解器。注解器提供为程序元素设置元数据的方式,可对程序元素上存在的、指定类型的注解。注解器可以用于对源代码对应的语法树进行解析,从而获得指定类型的程序元素。其中,程序元素包括常量、数据类型、变量、运算符、表达式以及字符串等元素。表达式,是由数字、算符、数字分组符号、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。日志表达式是指源代码中用于生成日志内容的表达式。
计算机设备对待混淆源代码进行编译,获得待混淆源代码对应的语法树后,则通过注解器对语法树进行解析。具体地,计算机设备通过注解器根据预设表达式对语法树进行遍历分析。其中,预设表达式可以是预设的日志表达式。通过预设表达式对语法树进行遍历和匹配,从而获得语法树中的日志表达式。
计算机设备进而基于日志表达式中确定待混淆源代码中的待混淆日志内容,并提取待混淆日志内容对应的日志字符串,所提取的日志字符串可以是包括仅日志内容的日志字符串。通过利用注解器对语法树进行解析,能够准确识别语法树中的日志表达式以及日志内容,由此能够快速有效地获得待混淆源代码中的日志字符串。
在其中一个实施例中,如图3所示,为通过注解器从语法树中获得日志表达式的流程示意图。具体地,计算机设备首先对待混淆源代码进行编译,获得待混淆源代码对应的语法树。计算机设备进而获取自定义的注解处理器,通过注解处理器对语法树进行解析。具体地,注解处理器首先判断待混淆源代码是否为预设形式的源代码,若否,则不处理。若是预设形式的源代码,计算机设备则通过自定义的语法翻译器遍历抽象语法树中的代码块节点,同时对源代码中的表达式内容进行正则匹配,并判断表达式内容是否为日志表达式。若否,则继续遍历下一个表达式。若是,则获取该日志表达式,以对日志表达式进行下一步处理。直到所有的源代码中的表达式内容均遍历完成后,则可以有效地获得待混淆源代码中的日志表达式。
举例说明,如以java源代码为例,计算机设备可以自定义配置注解处理器,用于处理全部类型语法树。自定义的注解处理器具有处理所有源代码对应的抽象语法树的能力。具体地,在对语法树进行解析的过程中,可以通过继承AbstractProcessor类,重载父类方法getSupportedAnnotationTypes(),使得其返回值为“*”;进一步继承TreeTranslator类,使得具备语法树的遍历能力;定义、配置需要处理的日志表达式的正则表达式;配置编译过程,使得自定义的注解处理器参与源代码的编译过程。由此能够有效利用自定义的注解器对语法树进行解析,从而有效获得待混淆源代码中的日志字符串。
在一个实施例中,如图4所示,提供了一种日志内容保护方法,具体包括以下步骤:
S402,对待混淆源代码进行编译,获得待混淆源代码对应的语法树。
S404,通过注解器对语法树进行遍历分析,获得日志表达式。
S406,根据预设表达式解析语法树中待处理的日志表达式。
S408,对日志表达式进行节点遍历,获取包括日志内容的日志表达式。
S410,对包括日志内容的日志表达式进行解析,从包括日志内容的日志表达式中提取日志字符串。
S412,对日志字符串进行混淆编码,生成日志字符串对应的混淆字符串。
S414,将日志字符串替换为混淆字符串,得到混淆后的目标源代码。
S416,建立日志字符串与混淆字符串的映射关系,基于映射关系生成编码映射文件并存储至预设位置;编码映射文件用于还原日志内容。
计算机设备待混淆源代码对应的语法树后,则通过注解器对语法树进行解析。计算机设备通过注解器匹配出语法树的日志表达式后,进一步对日志表达式进行解析,从包括日志内容的日志表达式中提取日志字符串。具体地,计算机设备对日志表达式进行更深层次的节点遍历,首先对日志表达式进行方法调用的节点遍历。依次识别被调用的方法语句中是否包含日志内容,获取包括日志内容的日志表达式,对包括日志内容的日志表达式进行解析,从包括日志内容的日志表达式中提取出日志字符串。
计算机设备查找到包括日志内容的日志表达式后,还可以对包含日志内容的方法调用语句表达式进行一元运算节点遍历,获取其中的日志字符串。
计算机设备获得日志字符串后,则进一步对日志字符串进行混淆编码,生成日志字符串对应的混淆字符串。将日志字符串替换为混淆字符串,得到混淆编码后的目标源代码。计算机设备同时还建立日志字符串与混淆字符串的映射关系,基于映射关系生成编码映射文件,并将编码映射文件存储至预设位置。
在其中一个实施例中,如图5所示,为通过注解器对日志表达式进行解析的流程示意图。具体地,计算机设备获得待混淆源代码中的日志表达式后,通过自定义的语法翻译器对日志表达式进行方法调用节点遍历,即遍历日志表达式中的方法调用表达式。计算机设备在遍历的过程中判断方法调用表达式是否包含日志内容,若否,则继续遍历下一个日志表达式。若是,计算机设备则通过自定义语法翻译器进一步进行一元运算节点遍历,并识别对应的一元表达式中是否包含日志内容。若否,则继续遍历下一个一元表达式。若是,计算机设备则进一步获取包括日志内容的日志字符串,以进一步对包括日志内容的日志字符串进行混淆编码。
本实施例中,通过自定义的语法翻译器对日志表达式进行解析,由此能够准确有效地识别日志表达式中包括日志内容的日志字符串,从而能够精准地对源代码中的日志字符串进行混淆编码。
在一个实施例中,对待混淆日志内容进行混淆编码,生成与待混淆日志内容对应的混淆字符串,包括:按照预设编码方式对待混淆日志内容进行混淆编码,生成随机短码字符串;将随机短码字符串确定为与待混淆日志内容对应的混淆字符串。
其中,对待混淆日志内容进行混淆编码,可以是仅对待混淆日志内容中局部的日志字符串进行混淆处理。如可以采用字符串随机编码的方式,对日志字符串进行随机编码,随机短码字符串则是混淆编码所产生的编码结果。
计算机设备获得待混淆日志内容中的日志内容字符串之后,则按照预设编码方式对日志字符串进行混淆编码。具体地,预设编码方式可以为自定义的随机编码方式,例如可以采用基于数据流的混淆技术。计算机设备在处理日志内容字符串时,按照自定义的随机编码方式将日志字符串编码为对应的短码字符串,以生成随机且唯一的字符串。并将生成的随机短码字符串确定为该日志字符串对应的混淆字符串,从而实现对日志字符串进行混淆编码。
其中,所生成的混淆字符串需要保持唯一性,并且需要建立日志字符串与对应的混淆字符串之间的映射关系,并根据映射关系将两者的之间的映射存储至映射文件中。计算机设备进而利用混淆字符串替换日志表达式中的日志内容部分,重新生成新的日志表达式,进而得到混淆编码后的目标源代码。
本实施例中,通过采用随机编码的方式,对待混淆日志内容进行混淆编码后,字符串混淆编码与字符串解密还原的过程不可逆,无法直接通过被混淆编码的字符串推导出原字符串,由此能够有效地对日志内容进行混淆编码,从而有效地保护了日志内容。
在另一个实施例中,计算机设备获得日志内容字符串之后,还可以按照预设加密方式对日志字符串进行混淆编码,例如可以采用对称加密算法、HASH算法以及RSA算法等加密方式。具体地,就可以对日志字符串进行加密,得到相应的密文,所得到的密文可以是混淆后的混淆字符串。预设编码方式可以为自定义的随机编码方式。计算机设备在处理日志内容字符串时,按照自定义的随机编码方式将日志字符串生成对应的短码字符串,并将生成的随机短码字符串确定为该日志字符串对应的混淆字符串,从而实现对日志字符串进行混淆编码。
在一个实施例中,按照预设编码方式对待混淆日志内容进行混淆编码,生成随机短码字符串包括:对待混淆日志内容进行解析,获得一元表达式对应的日志字符串;对一元表达式对应的日志字符串进行混淆编码,生成日志字符串对应的随机短码字符串;
基于混淆字符串替换待混淆日志内容,得到混淆后的目标源代码,包括:基于混淆字符串替换一元表达式中的日志字符串,生成更新的日志表达式;基于更新的日志表达式得到混淆后的目标源代码。
生成语法树就是在语法规则中逐个编写,最终生成的文件结构就是语法树,生成的语法树可以是基于表达式的抽象语法树,具体可以包括字面量、一元运算、二元运算、条件表达式、赋值表达式等的抽象语法树。其中,一元表达式表示包括一元运算符的表达式。一元运算符只对一个表达式执行操作,并产生一个新值。在将源代码解析为语法树的过程中,析解器解析代码并为之构造语法树,需要将源代码中解析为一元运算符粒度的表达式,分别用结点来表示这各个一元运算符。
计算机设备将待混淆源代码解释为对应的语法树后,对语法树进行解析。具体地,计算机设备基于语法树中的表达式结构,利用预设表达式匹配获得其中的日志表达式。并判断日志表达式中是否包含日志内容,进而获取包含日志内容的日志表达式,从而获得待混淆日志内容,并从包括待混淆日志内容对应的日志表达式中提取日志字符串。计算机设备进一步对日志字符串进行解析,获取一元表达式对应的日志字符串,进而对一元表达式对应的日志字符串进行混淆编码,生成该日志字符串对应的随机短码字符串,并将生成的随机短码字符串确定为与待混淆日志内容对应的混淆字符串。由此能够有效地基于抽象语法树获取源代码中的包括待混淆日志内容部分的日志字符串,从而能够有效地针对日志字符串进行混淆编码。
计算机设备生成日志字符串对应的混淆字符串之后,则将日志字符串替换为混淆字符串。具体地,计算机设备利用所生成的混淆字符串替换一元表达式中的日志内容部分,即所对应的日志字符串;重新生成新的一元运算表达式,即生成更新的日志表达式。计算机设备进而可以基于更新的日志表达式得到混淆编码后的目标源代码。
在一个具体的实施例中,如图6所示,为对日志内容进行混淆编码的流程示意图。计算机设备在处理日志内容字符串时,对日志字符串进行混淆编码,生成对应的短码字符串,并判断所生成的短码字符串是否唯一。若否,则重新生成一个短码字符串。若是,则在内存中建立日志字符串与对应的短码字符串之间的映射关系,并生成对应的编码映射文件,即mapping文件。计算机设备进而利用所生成的短码字符串替换一元表达式中的日志内容部分,重新生成新的一元运算表达式。由此,计算机设备则完成了一个日志表达式的处理,与此同理进一步继续处理下一个日志表达式,以对待混淆源代码中所有的日志内容部分进行混淆编码。
本实施例中,通过基于抽象语法树中的表达式结构,获得其中的日志内容部分,并对其中一元运算中的日志内容部分进行混淆编码,由此能够快速有效地对源代码中的日志内容部分进行混淆编码处理,从而有效实现对日志字符串进行混淆编码。
在一个实施例中,上述日志内容保护方法还包括:基于混淆编码后的目标源代码生成目标应用对应的可执行文件;从目标应用对应的日志平台,获取通过目标应用基于可执行文件运行产生的线上日志文件;获取与目标应用对应的编码映射文件,基于编码映射文件对线上日志文件进行日志解码。
其中,源代码是一组具有特定意义的可以实现特定功能的字符,也即程序开发代码。用于编译成相应的目标程序进行运行,以实现相应的功能。经过混淆编码后的目标源代码可以被便以为可执行代码。可执行代码是指将目标代码连接后形成的代码,也就是就是及其能够执行的代码。通过将目标可执行代码、库代码以及系统标准启动代码等结合在一起,则可以形成完整的可在操作系统下独立执行的程序,即可执行文件。可执行代码一般是可执行文件的一部分。
目标源代码可以是用于生成对应的目标应用的代码。目标应用可以是为针对使用者的某种应用目的所编写的程序软件,包括基于终端的应用程序以及网页应用等。
计算机设备对待混淆源代码中的日志字符串进行混淆编码,得到混淆编码后的目标源代码后,计算机设备则利用目标源代码生成目标应用对应的可执行代码,并基于可执行代码生成对应的可执行文件。其中,可执行文件可以为目标应用的安装文件,例如可以为APK安装包文件。通过运行可执行文件,能够实现目标应用所包括的各种功能。
在运行可执行文件的过程中,还会产生相应的线上日志文件。其中,线上日志文件则是通过源代码中包括日志内容的日志表达式生成的。目标应用所产生的线上日志文件存储在相应的应用服务器中的日志平台。因此,该目标应用发布之前混淆编码所产生的编码映射文件,与通过目标应用产生的线上日志文件,分别存储于不同位置。
具体地,计算机设备基于混淆编码后的目标源代码生成目标应用对应的可执行文件后,可以对可执行文件进行发布。用户可以通过对应的用户终端获取可执行文件并安装,安装成功后,用户终端在运行可执行文件对应的目标应用时,会产生相应的线上日志文件并上报至应用服务器的日志文件平台。
当开发者方需要对线上日志文件进行分析时,可以从应用服务器的日志文件平台中获取目标应用基于可执行文件运行产生的线上日志文件。由于是基于混淆编码后的目标源代码所生成的线上日志文件,因此线上日志文件中是经过混淆处理的日志内容。开发者方获取线上日志文件后,则获取目标应用对应的编码映射文件,进而利用混淆编码时生成的编码映射文件对线上日志文件进行日志解码,从而获得对应的明文日志内容。
本实施例中,由于编码映射文件存储在开发者方,编码映射文件和线上产生的日志文件存储在不同的地方,并且目标应用所记录、输出以及传输的日志都是经过混淆处理的内容。因此攻击者或第三方无法直接获得基于目标源代码的目标应用对应的明文日志内容,从而有效避免了通过代码中的日志内容暴露业务细节和泄漏用户隐私等风险,有效保护了明文日志内容。
在一个实施例中,获取与目标应用对应的编码映射文件,基于编码映射文件对线上日志文件进行日志解码,包括:基于编码映射文件中的映射关系,对线上日志文件中的混淆字符串进行映射解码,获得解码字符串;基于解码字符串获得线上日志文件对应的日志明文内容。
其中,编码映射文件存储了混淆字符串与日志字符串之间的映射关系,编码映射文件中具体可以按照数据表元素的形式存储映射关系。
计算机设备对待混淆源代码进行编译,基于语法树获得其中的日志字符串;对日志字符串进行混淆编码,得到混淆编码后的目标源代码,同时建立日志字符串与混淆字符串的映射关系并生成编码映射文件后,计算机设备则利用目标源代码生成目标应用对应的可执行代码,并基于可执行代码生成对应的可执行文件。
计算机设备获取目标应用基于安装文件运行产生的线上日志文件后,则利用利用混淆编码时生成的编码映射文件对线上日志文件进行日志还原。具体地,计算机设备读取编码映射文件,并读取线上日志文件中的日志内容。计算机设备进而对日志内容中的文本和编码映射文件中的文本进行遍历匹配。具体地,可以按行依次对日志内容中的文本进行匹配,以在编码映射文件中查找相匹配的文本。若在编码映射文件中匹配到相应的混淆文本,则获取该混淆文本对应的日志字符串,并利用该日志字符串替换线上日志文件中相应的日志内容,从而还原得到明文日志内容。
在其中一个实施例中,如图7所示,为日志内容还原过程的流程示意图。计算机设备获取线上产生的线上日志文件以及混淆编码时生成的编码映射文件后,则对日志内容进行还原。编码映射文件即mapping文件。具体地,计算机设备首先读取mapping文件,并生成映射关系数据列表map。其中,映射关系数据列表map是指存储在mapping文件中的映射对象元素,即日志字符串对应的混淆字符串元素。计算机设备进一步读取日志文件中的日志内容,按行依次进行文本匹配,将日志内容中的文本与映射关系数据列表map进行匹配,识别当前文本是否与映射关系数据列表map中的混淆字符串元素相匹配。若相匹配,则利用map中的混淆字符串元素对应的原日志字符串替换线上日志文件中的日志内容。若不匹配,则继续对日志内容的下一个文本进行匹配。直到线上日志文件中的日志内容均被处理完成,从而实现对线上日志文件进行日志内容还原。
本实施例中,目标应用所记录、输出以及传输的日志都是经过混淆处理的内容。获取线上产生的线上日志文件后,利用混淆编码是生成的存储在开发者方的编码映射文件,对日志文件中的日志内容进行解码还原,从而能够有效地还原出明文日志内容,从而有效避免了通过代码中的日志内容暴露业务细节和泄漏用户隐私等风险,有效保护了明文日志内容。
在一个具体的实施例中,如图8所示,提供了一种日志内容保护方法,具体包括以下步骤:
S802,对待混淆源代码进行编译,获得待混淆源代码对应的语法树。
S804,通过注解器对语法树进行遍历分析,获得日志表达式。
S806,根据预设表达式解析语法树中待处理的日志表达式;对日志表达式进行节点遍历,获取包括日志内容的日志表达式。
S808,对包括日志内容的日志表达式进行解析,从包括日志内容的日志表达式中提取日志字符串。
S810,对日志字符串进行解析,获得一元表达式对应的日志字符串。
S812,按照预设编码方式对一元表达式对应的日志字符串进行混淆编码,生成随机短码字符串;将随机短码字符串确定为日志字符串对应的混淆字符串。
S814,基于混淆字符串替换一元表达式中的日志字符串,生成更新的日志表达式。
S816,基于更新的日志表达式得到混淆后的目标源代码。
S818,基于混淆编码后的目标源代码生成目标应用对应的可执行文件。
S820,从目标应用对应的日志平台,获取通过目标应用基于可执行文件运行产生的线上日志文件。
S822,获取与目标应用对应的编码映射文件,基于编码映射文件中的映射关系,对线上日志文件中的混淆字符串进行映射解码,获得解码字符串。
S824,基于解码字符串获得线上日志文件对应的日志明文内容。
本实施例中,日志内容混淆编码和日志内容还原是两个根本独立的操作。由于编码映射文件存储在开发者方,目标应用所记录、输出以及传输的日志都是经过混淆处理的内容。因此攻击者或第三方无法直接获得基于目标源代码的目标应用对应的明文日志内容,从而有效避免了通过代码中的日志内容暴露业务细节和泄漏用户隐私等风险,有效保护了明文日志内容,进而有效提高了日志内容的安全性。
在一个具体的实施例中,以java源代码为例,计算机设备获取待混淆的源代码,首先将所有源代码解释成抽象语法树(AST)。计算机设备进一步调用基于javac的注解处理器(APT)对语法树进行解析,获得待混淆源代码中的日志字符串,进而对日志字符串进行混淆编码,生成日志字符串对应的混淆字符串。计算机设备则将日志字符串替换为混淆字符串,生成混淆编码后的新的目标源代码。计算机设备还可以进一步对目标源代码重新进行编译,生成新的类文件,以用于生成相应的可执行文件。日志内容混淆编码的编译过程可以如图9所示。
举例说明,未经过处理的日志源代码可以如下:
ColorLog.i(TAG,"validatedomainerrorCode="+domainErrorCode+",validateport errorCode="+portErrorCode);
经过混淆编码处理过的代码可以如下:
ColorLog.i(LoginViewModel.TAG,"'-pADo343gT-'"+domainErrorCode+"'-EECKkG-'"+portErrorCode);
经过混淆编码处理后输出的日志内容可以如下:
MARS_PATH:master
MARS_REVISION:f685e74
MARS_REVISION_TIME:xxxx-xx-xx18:37:30
MARS_BUILD_JOB:mars_xlog_sdk/mars_libs
Logappendermode:0,usemap:1
[r][20xx-xx-xx+8.014:42:38.062][1079,3402][ColorLog][,,0][initColorLgsuccess!
[r][20xx-xx-xx+8.014:42:38.063][1079,3402][ColorLog][,,0][ColorLginitTimeUsed nanoTime=24509896ns
[r][20xx-xx-xx+8.014:42:45.064][1079,2*][LoginViewModel][,,0]['-pADo343gT-'3'-EECKkG-'1
[r][20xx-xx-xx+8.014:42:45.065][1079,2*][LoginViewModel][,,0]['-3pfy7h4-'false
将被混淆处理的日志字符串还原成明文日志内容,可以如下:
MARS_PATH:master
MARS_REVISION:f685e74
MARS_REVISION_TIME:xxxx-xx-xx18:37:30
MARS_BUILD_JOB:mars_xlog_sdk/mars_libs
Logappendermode:0,usemap:1
[r][20xx-xx-xx+8.014:42:38.062][1079,3402][ColorLog][,,0][initColorLgsuccess!
[r][20xx-xx-xx+8.014:42:38.063][1079,3402][ColorLog][,,0][ColorLginitTimeUsed nanoTime=24509896ns
[r][20xx-xx-xx+8.014:42:45.064][1079,2*][LoginViewModel][,,0][validatedomain errorCode=3,validateporterrorCode=1
[r][20xx-xx-xx+8.014:42:45.065][1079,2*][LoginViewModel][,,0][onPropertyChange,enable=false
通过对日志内容进行混淆编码后,目标应用所记录、输出以及传输的日志都是经过混淆处理的内容,且混淆编码生成的字符串是随机生成的且唯一的字符串,没有规律可循。因此,字符串混淆编码与字符串解密还原不可逆并且无法推算出原字符串,攻击者或第三方无法直接获得基于目标源代码的目标应用对应的明文日志内容,有效保护了明文日志内容。
本申请还提供一种应用场景,该应用场景应用上述的日志内容保护方法,应用于对应用程序的开发源代码中的日志明文内容进行保护。如图10所示,提供了日志内容保护方法的应用流程示意图。具体地,该日志内容保护方法在该应用场景的应用如下:
计算机设备获取应用程序的开发源代码,开发源代码即为待混淆源代码。计算机设备首先将开发源代码解释为对应的抽象语法树,并基于抽象语法树获取其中的日志表达式,并对日志表达式进行翻译。具体地,计算机设备对日志表达式中的明文日志字符串进行混淆编码,生成混淆字符串,并将混淆字符串替换至日志表达式中,所有明文日志字符串混淆编码完成后,则生成新的目标源代码。计算机设备在对日志表达式进行翻译的过程中,还可以识别风险日志内容,具体可以按照预先定义的风险项识别日志表达式中是否存在风险日志。例如风险日志包括逻辑错误、数值计算错误等存在问题的日志。识别出风险日之后,对风险日志进行裁剪,并生成对应的风险日志裁剪记录。
计算机设备对开发源代码中的日志内容进行混淆编码生成新的目标源代码,同时计算机设备还根据日志字符串与混淆字符串之间的映射关系生成对应的mapping文件,即编码映射文件。mapping文件作为编译产物存储在开发者方。
计算机设备进一步对新的目标源代码进行再次编译,生成新的类文件,以用于生成应用程序对应的APK安装包文件并发布。用户可以通过对应的用户终端获取APK安装包文件并安装,以后通过用户终端操作APK安装包对应的应用程序时,应用程序运行相应的功能,同时会产生相应的线上日志文件并上报至对应的应用服务器。应用服务器则将用户终端上报的日志文件存储至对应的日志文件平台。当开发者方需要对线上日志文件进行分析等处理时,则可从日志文件平台获取线上日志文件。通过获取mapping文件,可以利用预设的日志还原工具根据mapping文件对线上日志文件进行日志解密,以还原线上日志文件中的日志内容,从而得到原始的明文日志内容。
其中,日志字符串混淆编码与日志字符串还原的操作过程分别独立,且编码映射文件存储在开发者方。由此目标应用所记录、输出以及传输的日志都是经过混淆处理的内容,字符串混淆编码与字符串解密还原不可逆并且无法推算出原字符串。因此攻击者或第三方无法直接获得基于目标源代码的目标应用对应的明文日志内容,从而有效避免了通过代码中的日志内容暴露业务细节和泄漏用户隐私等风险,有效保护了明文日志内容。
应该理解的是,虽然图2、4、8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4、8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种日志内容保护装置1100,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:代码编译模块1102、代码解析模块1104、混淆编码模块1106和编码映射模块1108,其中:
代码编译模块1102,用于对待混淆源代码进行编译,获得待混淆源代码对应的语法树;
代码解析模块1104,用于对语法树进行解析,获取待混淆源代码中的待混淆日志内容;
混淆编码模块1106,用于对待混淆日志内容进行混淆编码,生成与待混淆日志内容对应的混淆字符串;基于混淆字符串替换待混淆日志内容,得到混淆后的目标源代码;
编码映射模块1108,用于建立待混淆日志内容与混淆字符串的映射关系,基于映射关系生成编码映射文件并存储至预设位置;编码映射文件用于还原日志内容。
在一个实施例中,待混淆日志内容包括日志字符串,代码解析模块1104还用于通过注解器对语法树进行遍历分析,获得日志表达式;基于日志表达式获取待混淆源代码中的日志字符串。
在一个实施例中,代码解析模块1104还用于根据预设表达式解析语法树中待处理的日志表达式;对日志表达式进行节点遍历,获取包括日志内容的日志表达式;对包括日志内容的日志表达式进行解析,从包括日志内容的日志表达式中提取日志字符串。
在一个实施例中,混淆编码模块1106还用于按照预设编码方式对待混淆日志内容进行混淆编码,生成随机短码字符串;将随机短码字符串确定为与待混淆日志内容对应的混淆字符串。
在一个实施例中,混淆编码模块1106还用于对待混淆日志内容进行解析,获得一元表达式对应的日志字符串;对一元表达式对应的日志字符串进行混淆编码,生成日志字符串对应的随机短码字符串;混淆编码模块1106还用于基于混淆字符串替换一元表达式中的日志字符串,生成更新的日志表达式;基于更新的日志表达式得到混淆编码后的目标源代码。
在一个实施例中,如图12所示,上述日志内容保护装置还包括日志解码模块1110,用于基于混淆后的目标源代码生成目标应用对应的可执行文件;从目标应用对应的日志平台,获取通过目标应用基于可执行文件运行产生的线上日志文件;根据编码映射文件对线上日志文件进行日志解码。
在一个实施例中,日志解码模块1110还用于基于编码映射文件中的映射关系,对线上日志文件中的混淆字符串进行映射解码,获得解码字符串;基于解码字符串获得线上日志文件对应的日志明文内容。
关于日志内容保护装置的具体限定可以参见上文中对于日志内容保护方法的限定,在此不再赘述。上述日志内容保护装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端或服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待混淆源代码、语法树、目标源代码等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种日志内容保护方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random AccessMemory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandomAccessMemory,SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种日志内容保护方法,其特征在于,所述方法包括:
对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;
对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;
对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;
基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;
建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储至预设位置;所述编码映射文件用于还原日志内容。
2.根据权利要求1所述的方法,其特征在于,所述待混淆日志内容包括日志字符串,所述对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容,包括:
通过注解器对所述语法树进行遍历分析,获得日志表达式;
基于所述日志表达式获取所述待混淆源代码中的日志字符串。
3.根据权利要求2所述的方法,其特征在于,所述基于所述日志表达式获取所述待混淆源代码中的日志字符串,包括:
根据预设表达式解析所述语法树中待处理的日志表达式;
对所述日志表达式进行节点遍历,获取包括日志内容的日志表达式;
对所述包括日志内容的日志表达式进行解析,从所述包括日志内容的日志表达式中提取日志字符串。
4.根据权利要求1所述的方法,其特征在于,所述对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串,包括:
按照预设编码方式对所述待混淆日志内容进行混淆编码,生成随机短码字符串;
将所述随机短码字符串确定为与所述待混淆日志内容对应的混淆字符串。
5.根据权利要求4所述的方法,其特征在于,所述按照预设编码方式对所述待混淆日志内容进行混淆编码,生成随机短码字符串,包括:
对所述待混淆日志内容进行解析,获得一元表达式对应的日志字符串;
对所述一元表达式对应的日志字符串进行混淆编码,生成所述日志字符串对应的随机短码字符串;
所述基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码,包括:
基于所述混淆字符串替换所述一元表达式中的日志字符串,生成更新的日志表达式;
基于所述更新的日志表达式得到混淆后的目标源代码。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述方法还包括:
基于混淆后的目标源代码生成目标应用对应的可执行文件;
从所述目标应用对应的日志平台,获取通过所述目标应用基于所述可执行文件运行产生的线上日志文件;
获取与所述目标应用对应的编码映射文件,基于所述编码映射文件对所述线上日志文件进行日志解码。
7.根据权利要求6所述的方法,其特征在于,所述获取与所述目标应用对应的编码映射文件,基于所述编码映射文件对所述线上日志文件进行日志解码,包括:
基于所述编码映射文件中的映射关系,对所述线上日志文件中的混淆字符串进行映射解码,获得解码字符串;
基于所述解码字符串获得所述线上日志文件对应的日志明文内容。
8.一种日志内容保护装置,其特征在于,所述装置包括:
代码编译模块,用于对待混淆源代码进行编译,获得所述待混淆源代码对应的语法树;
代码解析模块,用于对所述语法树进行解析,获取所述待混淆源代码中的待混淆日志内容;
混淆编码模块,用于对所述待混淆日志内容进行混淆编码,生成与所述待混淆日志内容对应的混淆字符串;基于所述混淆字符串替换所述待混淆日志内容,得到混淆后的目标源代码;
编码映射模块,用于建立所述待混淆日志内容与所述混淆字符串的映射关系,基于所述映射关系生成编码映射文件并存储目标应用;所述编码映射文件用于还原日志内容。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010503010.2A CN111651781A (zh) | 2020-06-05 | 2020-06-05 | 日志内容保护方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010503010.2A CN111651781A (zh) | 2020-06-05 | 2020-06-05 | 日志内容保护方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111651781A true CN111651781A (zh) | 2020-09-11 |
Family
ID=72347267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010503010.2A Pending CN111651781A (zh) | 2020-06-05 | 2020-06-05 | 日志内容保护方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651781A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760291A (zh) * | 2020-09-16 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 日志输出的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105337988A (zh) * | 2015-11-20 | 2016-02-17 | 刘奇 | 一种防止敏感信息泄露的方法及系统 |
US9830478B1 (en) * | 2015-07-20 | 2017-11-28 | Semmle Limited | Logging from obfuscated code |
US20170351847A1 (en) * | 2016-06-03 | 2017-12-07 | Electronic Arts Inc. | Simple obfuscation of text data in binary files |
CN109726185A (zh) * | 2018-12-28 | 2019-05-07 | 杭州安恒信息技术股份有限公司 | 一种基于语法树的日志解析方法、系统和计算机可读介质 |
CN110196718A (zh) * | 2018-05-10 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 脚本混淆方法 |
CN110765425A (zh) * | 2019-10-25 | 2020-02-07 | 杭州涂鸦信息技术有限公司 | 一种对ios应用程序源代码进行混淆保护的方法及系统 |
-
2020
- 2020-06-05 CN CN202010503010.2A patent/CN111651781A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830478B1 (en) * | 2015-07-20 | 2017-11-28 | Semmle Limited | Logging from obfuscated code |
CN105337988A (zh) * | 2015-11-20 | 2016-02-17 | 刘奇 | 一种防止敏感信息泄露的方法及系统 |
US20170351847A1 (en) * | 2016-06-03 | 2017-12-07 | Electronic Arts Inc. | Simple obfuscation of text data in binary files |
CN110196718A (zh) * | 2018-05-10 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 脚本混淆方法 |
CN109726185A (zh) * | 2018-12-28 | 2019-05-07 | 杭州安恒信息技术股份有限公司 | 一种基于语法树的日志解析方法、系统和计算机可读介质 |
CN110765425A (zh) * | 2019-10-25 | 2020-02-07 | 杭州涂鸦信息技术有限公司 | 一种对ios应用程序源代码进行混淆保护的方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760291A (zh) * | 2020-09-16 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 日志输出的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6257754B2 (ja) | データの保護 | |
US9230123B2 (en) | Apparatus for tamper protection of application code based on self modification and method thereof | |
CN109033764B (zh) | 反混淆处理方法及终端、计算机设备 | |
CN110414261B (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
KR102433011B1 (ko) | Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 | |
US11314863B2 (en) | Behavioral threat detection definition and compilation | |
CN112597454A (zh) | 代码混淆方法、代码运行方法、装置、介质与设备 | |
US11663326B2 (en) | Behavioral threat detection definition and compilation | |
CN112115427A (zh) | 代码混淆方法、装置、电子设备及存储介质 | |
CN106326691B (zh) | 加解密功能的实现方法、装置及服务器 | |
CN110555291B (zh) | 网页脚本代码保护方法及装置 | |
CN111651781A (zh) | 日志内容保护方法、装置、计算机设备和存储介质 | |
KR102439778B1 (ko) | 애플리케이션의 보안성 향상을 위한 애플리케이션 변환 장치 및 방법 | |
CN113849781B (zh) | Go语言源代码混淆方法、系统、终端及存储介质 | |
CN113449330B (zh) | 对Javascript加密文件进行传输的方法 | |
CN113138797B (zh) | 面向Intel SGX的程序自动化移植系统 | |
Gautam et al. | A novel software protection approach for code obfuscation to enhance software security | |
CN114090964A (zh) | 代码处理方法、装置、电子设备及可读介质 | |
CN114090965B (zh) | java代码混淆方法、系统、计算机设备及存储介质 | |
Groß et al. | Protecting JavaScript apps from code analysis | |
Kumar et al. | A thorough investigation of code obfuscation techniques for software protection | |
Backes et al. | Computational soundness for Dalvik bytecode | |
CN113946804B (zh) | 一种源代码的混淆方法和装置 | |
CN113742008B (zh) | 接口调用方法、装置、电子设备及存储介质 | |
Yasin et al. | Dynamic multi levels Java code obfuscation technique (DMLJCOT) |
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 |