一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种日志打印响应方法、装置、电子设备和存储介质与流程

2021-10-27 20:05:00 来源:中国专利 TAG:日志 电子设备 响应 装置 文件


1.本技术涉及日志文件领域,尤其涉及一种日志打印响应方法、装置、电子设备和存储介质。


背景技术:

2.在android开发中,可能会遇到程序出现错误的情况,这就需要技术人员采用android.util.log(android系统提供的日志打印接口)打印日志,根据日志文件进行程序异常原因的分析,从而提高程序调试效率。当app版本发布后,会通过预设配置将日志屏蔽,以防止攻击者打印日志,但发布版本的日志输出调用其实还在,只不过为false,没有执行而已,攻击者还是可以在发布版本app中自行植入android.util.log去打印日志。
3.发布版本的app可以被打印日志导致日志容易泄露,进而导致app业务逻辑被竞争对手查看,也可能导致被攻击者白盒注入的风险(通过日志打印程序运行逻辑),进而对业务和app产生未知风险。目前还没有检测android app日志不被轻易打印的方案。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提供了一种日志打印响应方法、装置、电子设备和存储介质。
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.处理器,用于执行存储器上所存放的程序时,实现任一所述的方法步骤。
34.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述的方法步骤。
35.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
36.本技术实施例提供的该方法,智能终端在目标应用的日志接口被调用时,获取目标应用的调用请求,并采用钩子函数调用日志输出的进程,使日志不会被立刻输出,而是在钩子函数中判断目标应用的当前所处环境,并根据当前所处环境的不同对调用请求做出不同的响应。本技术不会使日志被随意输出,避免攻击者获取目标应用发布版本的日志,避免
日志泄露,提高信息安全性。
附图说明
37.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
38.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
39.图1为本技术实施例提供的一种日志打印响应方法的流程图;
40.图2为本技术实施例提供的一种日志打印响应装置的结构示意图;
41.图3为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
42.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.本技术实施例提供了一种日志打印响应方法,可以应用于智能终端,也可以应用于服务器,用于检测日志是否允许输出。
44.下面将结合具体实施方式,以智能终端为例,对本技术实施例提供的一种日志打印响应方法进行详细的说明,如图1所示,具体步骤如下:
45.步骤101:在检测到智能终端中目标应用启动的情况下,通过预设的钩子函数调用日志打印函数。
46.其中,日志打印函数用于在目标应用的目标日志接口被调用时进行日志输出。
47.在本技术实施例中,在智能终端的系统中预先埋下钩子函数,当智能终端检测到目标应用启动时,表明该目标应用运行过程中可能会输出日志,这就需要调用日志接口,日志打印函数是日志接口被调用时需要用到的函数。此时智能终端通过预先埋好的钩子函数调用日志打印函数,那么当日志接口被调用时,日志打印的进程会从日志打印函数跳转至钩子函数。其中,目标应用启动的时刻可以为目标应用接收到启动指令的时刻,也可以为目标应用开启后首次展示主页面的时刻,本技术实施例对目标应用的启动时刻不作具体限制。
48.示例性地,智能终端为android系统,android系统的日志接口被调用时用到的日志打印函数为android_log_is_loggable,当智能终端发现目标应用启动时,则hook系统api
‑‑‑
android_log_is_loggable,那么调用android_log_is_loggable转变成调用钩子函数myhook。
49.步骤102:在检测到调用目标日志接口的调用请求的情况下,通过钩子函数调用日志输出的进程。
50.其中,进程中携带有目标字段,目标字段用于指示目标应用的当前所处环境。
51.目标日志接口被调用时,智能终端会检测到调用目标日志接口的调用请求,此时
会触发钩子函数调用日志输出的进程。
52.当智能终端的android.util.log被调用后,日志输出的进程本应跳转至android_log_is_loggable进行日志输出,但由于android_log_is_loggable已经被钩子函数hook,因此日志输出的进程会跳转至钩子函数myhook。
53.日志输出的进程中携带有目标字段,该目标字段包含目标应用的当前所处环境,该当前所处环境分为调试环境和发布环境。智能终端在调试环境中的系统版本为调试版本debug,智能终端在发布环境中的系统版本为发布版本release。
54.调试版本debug,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。发布版本release,是为用户使用的,一般不允许用户在发布版本上进行调试,所以不保存调试信息。
55.步骤103:通过钩子函数根据当前所处环境对调用请求进行响应。
56.智能终端在获取到目标字段指示的目标应用的当前所处环境后,通过钩子函数确定当前所处环境是调试环境还是发布环境,并针对不同的当前所处环境,对调用请求做出不同的响应。若智能终端确定当前所处环境是调试环境,则允许输出目标应用的日志,若智能终端确定当前所处环境是发布环境,则禁止输出目标应用的日志。
57.在本技术中,智能终端在目标应用的日志接口被调用时,获取目标应用的调用请求,并采用钩子函数调用日志输出的进程,使日志不会被立刻输出,而是在钩子函数中判断目标应用的当前所处环境,并根据当前所处环境的不同对调用请求做出不同的响应。本技术不会使日志被随意输出,避免攻击者获取目标应用发布版本的日志,避免日志泄露,提高信息安全性。
58.作为一种可选的实施方式,通过钩子函数根据当前所处环境对调用请求进行响应包括:通过钩子函数确定目标应用的当前所处环境是否为调试环境;在通过钩子函数确定当前所处环境为调试环境的情况下,获取钩子函数发送的第一反馈信息,其中,根据第一反馈信息输出目标应用的日志。
59.在本技术实施例中,钩子函数调用日志输出的进程,日志输出的进程的目标字段中包含当前环境字段,若钩子函数判定当前环境字段指示调试环境,表示目标应用当前处于调试环境中,一般攻击者只能获取发布环境下的目标应用的日志,因此,目标应用处于调试环境中表示是技术人员需要进行日志输出,则钩子函数输出第一反馈信息,第一反馈信息用于指示允许输出目标应用的日志,则智能终端获取到第一反馈信息后,根据第一反馈信息输出日志。
60.作为一种可选的实施方式,在检测到智能终端中目标应用启动的情况下,通过预设的钩子函数调用日志打印函数包括:在检测到智能终端中目标应用启动的情况下,获取日志打印函数的地址和钩子函数的地址;将日志打印函数的地址更改为钩子函数的地址。
61.智能终端检测到目标应用启动时,需要通过钩子函数调用日志打印函数,则智能终端获取日志打印函数的地址和钩子函数的地址,然后在系统中将日志打印函数的地址更改为钩子函数的地址,这样日志接口在调用后,正常情况下应该跳转至日志打印函数的地址,由于该日志打印函数的地址已经被替换为钩子函数的地址,因此,日志输出的进程会跳转到钩子函数。
62.作为一种可选的实施方式,根据第一反馈信息输出目标应用的日志包括:根据第
一反馈信息,将钩子函数的地址更改为日志打印函数的地址;通过日志打印函数调用日志输出的进程,以通过日志打印函数输出目标应用的日志。
63.智能终端在接收到钩子函数发送的第一反馈信息后,确定可以输出目标应用的日志,由于需要通过日志打印函数进行日志输出,而日志打印函数被钩子函数hook,所以,需要将钩子函数的地址更改为日志打印函数的地址,这样可以正常跳转至目标打印函数的地址,通过日志打印函数调用日志输出的进程,输出目标应用的日志。
64.作为一种可选的实施方式,通过钩子函数根据当前所处环境对调用请求进行响应包括:通过钩子函数确定目标应用的当前所处环境是否为调试环境;在通过钩子函数确定当前所处环境不是调试环境的情况下,确定当前所处环境为发布环境;获取钩子函数发送的第二反馈信息,其中,第二反馈信息用于指示禁止输出目标应用的日志;根据第二反馈信息停止日志输出的进程。
65.在本技术实施例中,钩子函数调用日志输出的进程,日志输出的进程的目标字段中包含当前环境字段,若钩子函数判定当前环境字段不是调试环境,则当前环境字段指示发布环境,表示目标应用当前处于发布环境中,一般攻击者只能获取发布环境下的目标应用的日志,因此,目标应用处于发布环境中表示是攻击者需要进行日志输出,则钩子函数输出第二反馈信息,第二反馈信息用于指示禁止输出目标应用的日志,则智能终端获取到第二反馈信息后,停止日志输出的进程,则日志不会继续输出,防止攻击者得到目标应用的日志,提高目标应用的信息安全性。
66.作为一种可选的实施方式,进程中还携带有目标应用的名称,在根据第二反馈信息停止日志输出的进程之后,方法还包括:输出警示信息,其中,警示信息中包含目标应用的名称。
67.目标终端在根据第二反馈信息停止日志输出的进程后,还可以输出警示信息,警示信息中还包括目标应用的名称,该警示信息用于警告目标应用有信息安全性风险,示例性地,警示信息为“xx应用在release环境有日志输出的风险”。
68.日志输出的进程中携带有目标字段,该目标字段不仅包括目标应用的当前所处环境,还包括目标应用的名称,示例性地,目标字段为“xxx.xx.buildconfig.debug”,其中,“xxx.xx”为目标应用的名称,可以唯一标识该目标应用,“debug”表示目标应用为debug环境。
69.若钩子函数确定“xxx.xx.buildconfig.debug”为“true”,表明目标应用处于debug环境,则钩子函数返回数值“1”,“1”表示日志可以输出,则智能终端输出目标应用的日志;若钩子函数确定“xxx.xx.buildconfig.debug”为“flase”,表明目标应用处于release环境,则钩子函数返回数值“0”,“0”表示日志不可以输出,则智能终端停止日志输出的进程,禁止输出目标应用的日志。
70.在本技术中,包含该日志打印响应方法的系统或装置可以是android sdk(软件开发工具包)的形式,给任何个人或者开发者集成接入;也可以通过自定义apk包处理工具,后期自动注入到任何想要包含日志打印响应的apk包中。也就是说,该方案以sdk形式提供出去,也可以通过工具注入到apk里,让app实现日志打印响应的功能。
71.作为一种可选的实施方式,日志打印函数处于智能终端的系统底层,系统底层为日志输出时经过的传输通道。
72.日志输出的进程在系统中必然经过的最后一层为系统底层,日志打印函数设置在智能终端的系统底层,在智能终端为android系统时,系统底层可以为native层(本地代码层,c/c 实现),因此,本技术只需要hook系统底层就能实现对日志输出的拦截,防止日志泄露。
73.基于相同的技术构思,本技术实施例还提供了一种日志打印响应流程,该流程包括:
74.步骤1:目标应用启动时,hook系统api
‑‑‑
android_log_is_loggable。
75.步骤2:智能终端的android.util.log被调用后,日志输出的进程本应跳转至android_log_is_loggable进行日志输出,但由于android_log_is_loggable已经被钩子函数hook,因此进程跳转至钩子函数myhook。
76.步骤3:进程中包含字段“xxx.xx.buildconfig.debug”。通过钩子函数判断“xxx.xx.buildconfig.debug”为true还是flase。若为true,则执行步骤4,若为false,则执行步骤6。
77.步骤4:钩子函数返回数值“1”,“1”表示日志可以输出。
78.步骤5:将myhook的地址更替为android_log_is_loggable的地址,通过android_log_is_loggable输出日志。
79.步骤6:钩子函数返回数值“0”,“0”表示日志不可以输出。
80.步骤7:停止日志输出的进程,禁止输出目标应用的日志。
81.基于相同的技术构思,本技术实施例还提供了一种日志打印响应装置,如图2所示,该装置包括:
82.第一调用模块201,用于在检测到智能终端中目标应用启动的情况下,通过预设的钩子函数调用日志打印函数,其中,日志打印函数用于在目标应用的目标日志接口被调用时进行日志输出;
83.第二调用模块202,用于在检测到调用目标日志接口的调用请求的情况下,通过钩子函数调用日志输出的进程,其中,进程中携带有目标字段,目标字段用于指示目标应用的当前所处环境;
84.响应模块203,用于通过钩子函数根据当前所处环境对调用请求进行响应。
85.可选地,响应模块203包括:
86.第一确定单元,用于通过钩子函数确定目标应用的当前所处环境是否为调试环境;
87.第一获取单元,用于在通过钩子函数确定当前所处环境为调试环境的情况下,获取钩子函数发送的第一反馈信息,其中,第一反馈信息用于指示允许输出目标应用的日志;
88.输出单元,用于根据第一反馈信息输出目标应用的日志。
89.可选地,第一调用模块201包括:
90.第二获取单元,用于在检测到智能终端中目标应用启动的情况下,获取日志打印函数的地址和钩子函数的地址;
91.第一更改单元,用于将日志打印函数的地址更改为钩子函数的地址。
92.可选地,输出单元包括:
93.更改子单元,用于根据第一反馈信息,将钩子函数的地址更改为日志打印函数的
地址;
94.调用子单元,用于通过日志打印函数调用日志输出的进程,以通过日志打印函数输出目标应用的日志。
95.可选地,响应模块203包括:
96.第二确定单元,用于通过钩子函数确定目标应用的当前所处环境是否为调试环境;
97.第三确定单元,用于在通过钩子函数确定当前所处环境不是调试环境的情况下,确定当前所处环境为发布环境;
98.第三获取单元,用于获取钩子函数发送的第二反馈信息,其中,第二反馈信息用于指示禁止输出目标应用的日志;
99.停止单元,用于根据第二反馈信息停止日志输出的进程。
100.可选地,进程中还携带有目标应用的名称,该装置还包括:
101.输出模块,用于输出警示信息,其中,警示信息中包含目标应用的名称。
102.可选地,日志打印函数处于智能终端的系统底层,系统底层为日志输出时必须经过的传输路径。
103.在本技术中,智能终端在目标应用的日志接口被调用时,获取目标应用的调用请求,并采用钩子函数调用日志输出的进程,使日志不会被立刻输出,而是在钩子函数中判断目标应用的当前所处环境,并根据当前所处环境的不同对调用请求做出不同的响应。本技术不会使日志被随意输出,避免攻击者获取目标应用发布版本的日志,避免日志泄露,提高信息安全性。
104.基于相同的技术构思,本发明实施例还提供了一种电子设备,如图3所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
105.存储器303,用于存放计算机程序;
106.处理器301,用于执行存储器303上所存放的程序时,实现上述步骤。
107.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
108.通信接口用于上述电子设备与其他设备之间的通信。
109.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
110.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
111.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可
读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
112.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一方法。
113.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
114.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
115.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜