一种安卓日志防泄漏的控制方法、装置和计算机设备与流程

文档序号:18414704发布日期:2019-08-13 19:12阅读:154来源:国知局
一种安卓日志防泄漏的控制方法、装置和计算机设备与流程

本申请涉及移动信息安全领域,尤其是涉及一种安卓日志防泄漏的控制方法、装置和计算机设备。



背景技术:

日志文件是用于记录系统操作事件的记录文件或文件集合,操作系统有操作系统日志文件,数据库系统有系统日志文件,等等。所述系统日志文件是包含关于系统消息的文件,包括内核、服务、在系统上运行的应用程序等。不同的日志文件记载不同的信息。例如,有的是默认的系统日志文件,有的记载特定任务。

app开发人员,在开发app过程中,会在代码中添加日志打印代码,来输出一些关键信息。在app发布时,并不能确保这些日志打印代码被有效删除,比如漏掉一些没有删,或用变量控制日志是否显示,很容易被黑客利用。另外系统在运行app的过程中也会输出很多系统日志,暴露一些app的运行信息。

因此,现有技术有待于进一步的改进。



技术实现要素:

本发明提供了一种安卓日志防泄漏的控制方法、装置和计算机设备,旨在解决现有技术中app运行过程中日志信息易泄露的问题。

一种安卓日志防泄漏的控制方法,其中,所述方法包括:

将预先设置的so库添加到安卓安装包中,得到新安卓安装包;其中,所述so库含有用于防日志信息泄漏的hook函数;

运行所述新安卓安装包,加载其中的so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。

可选的,所述将预先设置的so库添加到安卓安装包中的步骤包括:

将所述so库文件添加到所述安卓安装包的lib目录下;

将用于加载so库的相应代码添加到所述第一dex文件内,得到第二dex文件。

可选的,所述将用于加载so库的相应代码添加到所述第一dex文件内,得到第二dex文件的步骤包括:

使用baksmali工具反编译安卓安装包内的第一dex文件为smali代码文件;

将用于加载所述so库的加载代码添加到smali代码文件中;

使用smali工具把所述smali代码文件重新编译为第二dex文件,

使用重新编译后的第二dex文件替换安卓安装包中的第一dex文件。

可选的,所述运行所述安卓安装包,加载所述so库的步骤之后,还包括:

所述hook函数捕获日志处理接口。

可选的,所述利用hook函数阻止日志信息写入系统缓冲区的步骤包括:

当检测到日志处理接口发生日志信息写入操作时,则终止所述写入操作,并返回执行结果。

可选的,终止所述写入操作的步骤包括:

将写入操作的日志处理函数入口替换为预设的终止日志处理函数入口;

所述终止日志处理函数对所述写入操作进行阻止;

当所述写入操作阻止完成后,则将所述终止日志处理函数的入口替换为所述日志处理函数入口。

可选的,所述方法还包括:

预先建立用于防日志信息泄漏的hook函数;

将所述hook函数添加到所述so库中。

在上述方法的基础上,本发明还提供了一种安卓日志防泄漏的控制装置,其中,包括:

预设置函数模块,用于将预先设置的so库添加到安卓安装包中,得到新安卓安装包;其中,所述so库含有用于防日志信息泄漏的hook函数;

写入阻止模块,用于运行所述新安卓安装包,加载所述so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。

在上述方法的基础上,本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现所述方法的步骤。

在上述方法的基础上,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述的方法的步骤。

有益效果:本发明提供了一种安卓日志防泄漏的控制方法、装置和计算机设备,通过将预先设置的含有用于防日志信息泄漏的hook函数的so库添加到安卓安装包中,运行该加入了so库的新安卓安装包,加载其中的so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。本发明所述的方法、装置及计算机设备,通过对系统底层日志处理接口进行hook,阻止底层日志处理函数将日志信息写入系统的日志缓冲区,阻止日志信息输出,从而有效了防止隐含在日志信息中的与app相关的关键信息被泄露,对app的程序代码及运行进行保护。

附图说明

图1为本发明一种安卓日志防泄漏的控制方法的流程示意图;

图2为本发明所述方法的一个实施例的流程图;

图3为本发明一种安卓日志防泄漏的控制装置的结构框图;

图4为本发明计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本发明提供了一种安卓日志防泄漏的控制方法,如图1所示,所述方法包括:

步骤s1、将预先设置的so库添加到安卓安装包中;其中,所述so库含有用于防日志信息泄漏的hook函数。

so库为linux系统下的共享程序函数库,即编译好的可以供其他程序使用的代码和数据。为了便于预设置的防日志信息泄露的hook函数的添加和下载使用,将用于防日志信息泄露的hook函数编译在so库内,便于随时调用。

本步骤中具体包括:

步骤s11、预先建立用于防日志信息泄漏的hook函数;

步骤s12、将所述hook函数编译到所述so库内。

预设置的防日志信息泄露的所述hook函数,为钩子函数,具有捕获其他进程发生的事件,其本质上是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。

hook函数具有换掉进程中的捕获的系统函数入口指向预设置的函数,当系统函数被调用,立即跳转到所述预设置的函数,所述预设置的函数对数据处理进程进行处理,当数据处理进程处理完成后,恢复系统函数入口的代码,调用原来的系统函数,再修改系统函数入口指向,从而实现了对当前正在处理事件的过滤。本步骤中,利用上述hook函数对当前正在处理事件的过滤功能,对当前可能要发上的日志信息写入系统缓冲区的事件进行过滤,从而避免了日志信息的输出。

具体的,本步骤还包括:所述将预先设置的so库添加到安卓安装包中的步骤,其包括:

步骤s13、将所述so库文件添加到安卓安装包的lib目录下;

步骤s14、将用于加载so库的相应代码添加到所述第一dex文件内,得到第二dex文件。

所述步骤s14包括:

步骤s141、安卓安装包是一个zip格式的压缩文件,把包含hook函数的so库,添加到到安装包lib目录下;

步骤s142、使用baksmali工具反编译安装包内的第一dex文件为smali代码文件;

步骤s143、在smali代码文件中,添加so库的加载代码(system.loadlibrary),以便安装包在手机运行时能够加载so库,运行hook函数;

步骤s144、使用smali工具把修改后的smali文代码文件重新编译为第二dex文件;

步骤s145、使用重新编译后的第二dex文件替换安卓安装包中的第一dex文件。

上述步骤中将预先设置的so库文件添加到安卓安装包中。

所述安卓安装包即为apk文件,其可以直接传到安卓模拟器或者安卓手机中执行即可实现安装。

所述安卓安装包以apk为扩展名,为zip格式的压缩包,里面压缩保存了dex和so库,对其解压缩后,得到dex文件(dalvikvmexecutes的简称,即androiddalvik执行程序),所述dex文件为安卓安装包内的可执行文件,通过所述dex文件可以调用so库里面的程序代码,用于执行相应的功能。

so共享库:c/c++代码编译生成的共享库文件(我们的日志hook函数是c++编写,被编译为hookso库),需要保存在安装包lib目录下。需要dex加载,才能运行。

dex是java代码编译生成的,可在androiddalvik虚拟机下运行的可执行程序。可以使用baksmali.jar工具对dex文件进行反编译,反编译得到的smali代码可编辑可修改。使用smali.jar工具可以把修改后的smali文件重新编译位dex文件。

这里我们需要反编译dex,添加对hookso库的相关加载代码,才能在安装包运行时,启动so库,执行so库中的hook函数。

步骤s2、运行添加了so库的所述新安卓安装包,加载所述so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。

运行所述新安卓安装包,加载所述新安卓安装包中的so库,则so库自动完成对日志文件底层接口的hook,阻止日志信息写入系统缓冲区,防止日志信息的泄露。

进一步的,所述运行所述安卓安装包,加载所述so库的步骤之后,还包括:

所述hook函数捕获日志处理接口。

通过hook捕获日志处理接口,对所述日志处理接口中日志写入操作进行阻止,从而实现日志信息的防泄漏。

具体的,所述利用hook函数阻止日志信息写入系统缓冲区的步骤包括:

当检测到日志处理接口发生日志信息写入操作时,则终止所述写入操作,并返回执行结果。

其中,所述终止所述写入操作的步骤包括:

步骤s21、将写入操作的日志处理函数入口替换为预设的终止日志处理函数入口;

步骤s22、所述终止日志处理函数对所述写入操作进行阻止;

步骤s23、当所述写入操作阻止完成后,则将所述终止日志处理函数的入口替换为所述日志处理函数入口。

本发明中所预设的hook函数具有上述将写入操作的日志处理函数入口替换为预设的终止日志处理函数入口的功能,将原本系统的日志处理函数将日志信息写入系统缓冲区,而是将该消息处理为终止日志信息写入系统缓冲区,从而实现日志信息的泄露。

具体的,以图2所示的本发明所述方法的具体应用实施例图,对本发明所述方法做更为详细的说明。

当运行app所对应的安卓安装包时,输出日志信息,该日志信息可以为java语言输出,也可以为native语言输出,则到所述日志信息输入到系统底层的liblog库时,若本步骤中的app安装包内添加了预先设置的so库,则so库内的hook函数对写入缓冲区的日志信息进行终止操作。若当前运行的app安卓安装包内未添加本发明所述方法预设的so库,则日志写入函数通过日志处理接口将日志数据写入系统缓冲区,则日志信息则可能会通过命令输入到控制台,导致了日志信息的泄露。

本发明所述方法,解决应用自身日志和系统日志可能导致的敏感信息或者业务逻辑等信息的泄露。通过在底层对日志接口的hook,彻底屏蔽日志的输出,过程对用户透明,集成方便。

在上述方法的基础上,本发明还提供了一种安卓日志防泄漏的控制装置,如图3所示,包括:

预设置函数模块110,用于将预先设置的so库添加到安卓安装包中;其中,所述so库含有用于防日志信息泄漏的hook函数;其功能如步骤s1所述。

写入阻止模块120,用于运行添加了so库的新安卓安装包,加载其中的so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出,其功能如步骤s2所述。

关于安卓插件的加载控制装置的具体限定可以参见上文中对于一种安卓日志防泄漏的控制方法的限定,在此不再赘述。上述一种安卓日志防泄漏的控制装置中的各个模块可全部通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于计算机设备的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行各个模块对应的操作。

在一个实施例中,本发明提供了一种计算机设备,该设备可以是终端,内部结构如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种安卓日志防泄漏的控制。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图4所示的仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括:存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现以下步骤:

将预先设置的so库添加到安卓安装包中,得到新安卓安装包;其中,所述so库含有用于防日志信息泄漏的hook函数;

运行添加了so库的所述新安卓安装包,加载所述so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。

在一个实施例中,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

将预先设置的so库添加到安卓安装包中,得到新安卓安装包;其中,所述so库含有用于防日志信息泄漏的hook函数;

运行所述新安卓安装包,加载所述so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。

本发明提供了一种安卓日志防泄漏的控制方法、装置和计算机设备,通过将预先设置的含有用于防日志信息泄漏的hook函数的so库添加到安卓安装包中,运行该加入了so库的新安卓安装包,加载其中的so库;利用所述so库中含有的hook函数中断日志信息写入系统缓冲区,阻止所述日志信息输出。本发明所述的方法、装置及计算机设备,通过对系统底层日志处理接口进行hook,阻止底层日志处理函数将日志信息写入系统的日志缓冲区,阻止日志信息输出,从而有效了防止隐含在日志信息中的与app相关的关键信息被泄露,对app的程序代码及运行进行保护。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1