CN114880669A - 代码运行方法、代码处理方法、电子设备及存储介质 - Google Patents

代码运行方法、代码处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN114880669A
CN114880669A CN202210646426.9A CN202210646426A CN114880669A CN 114880669 A CN114880669 A CN 114880669A CN 202210646426 A CN202210646426 A CN 202210646426A CN 114880669 A CN114880669 A CN 114880669A
Authority
CN
China
Prior art keywords
risk
api
target
code
calling
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
Application number
CN202210646426.9A
Other languages
English (en)
Inventor
邓照轩
漆凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202210646426.9A priority Critical patent/CN114880669A/zh
Publication of CN114880669A publication Critical patent/CN114880669A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Abstract

本申请提供了一种代码运行方法、装置、电子设备及存储介质,涉及云安全技术领域。依据本申请实施例,监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。

Description

代码运行方法、代码处理方法、电子设备及存储介质
技术领域
本申请涉及云安全技术领域,尤其涉及一种代码运行方法和装置、代码处理方法和装置、电子设备及存储介质。
背景技术
随着移动互联网的发展,客户端的功能也越来越丰富。客户端运行过程中涉及到对代码调用,代码的来源有多种渠道,例如,来自第三方代码、小程序代码等,由此产生了代码的安全管理问题。
特别是一些不合规的代码中的风险API(Application Programming Interface,应用程序接口)会对用户信息进行非法收集,由此泄露了用户个人隐私,严重影响到了个人信息的安全。因此,有必要对客户端调用的代码进行检测和拦截。
发明内容
本申请实施例提供一种代码运行、代码处理的方法、装置、电子设备及存储介质,以实现对客户端调用代码的管理。
第一方面,本申请实施例提供了一种代码运行方法,监测客户端中运行的目标代码对目标API的调用操作,所述目标代码在编译阶段经过风险API识别,并且识别到的风险API已替换为目标API,所述目标API用于替代所述风险API执行相应功能;
确定所述目标代码对目标API的调用操作存在安全风险;
阻断所述目标代码对目标API的调用操作。
第二方面,本申请实施例提供了一种代码处理方法,包括:
对待编译的源代码进行风险API识别;
将从源代码中识别到的风险API替换为目标API,所述目标API用于替代所述风险API执行相应功能;
对替换后的源代码进行编译获得可执行的目标代码,所述目标代码的执行过程中,在确定对目标API的调用操作存在安全风险后,阻断对所述目标API的调用操作。
第三方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器在执行计算机程序时实现本申请任一实施例提供的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请任一实施例提供的方法。
与现有技术相比,本申请具有如下优点:
依据本申请实施例,监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
由于不影响原有功能的实现,仅仅是修改了风险API的调用逻辑,实现了非侵入式的无痕处理,接入了代码无感知的监测功能。并且,本申请方案的实现不受系统版本差异,不受系统限制,无任何兼容性风险。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
图1为本申请提供的代码运行方案的场景示意图;
图2为本申请提供的代码运行方案的流程示意图;
图3为本申请一实施例的代码运行方法的流程图;
图4是本申请一实施例的代码处理方法的流程图;
图5是本申请一实施例的代码运行装置的结构框图;
图6是本申请一实施例的代码处理装置的结构框图;
图7为用来实现本申请实施例的电子设备的框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明,以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
本申请实施例涉及到一种代码运行的方法,应用于对客户端调用代码过程的监测场景下,以达到管控客户端对API的调用行为,避免影响用户个人信息的安全。
图1为示例性的用于实现本申请实施例的方法的一个应用场景的示意图。客户端对代码的处理分为两个阶段,在代码编译阶段,客户端对源代码中的风险API进行识别,将识别到的风险API替换为目标API,并替代目标API执行相应功能,通过编译和链接,将源代码从编写语言转换为机器语言且生成可执行的目标代码。在客户端对代码调用阶段,监测目标代码对目标API的调用操作,进一步确定目标代码对目标API的调用操作是否存在安全风险,若存在安全风险,则阻断对目标API的调用操作,从而避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
上述对风险API的识别以及对调用操作是否存在安全风险的识别可以基于云平台下发的配置文件来实现。云平台可以收集各风控系统识别到的风险API以及对调用操作进行风险判断的规则,进一步可以将更新的配置文件实时下发到客户端用于风险判断。
图2为本申请提供的代码运行方案的流程示意图。在代码运行过程中读取风险配置文件,根据配置文件中预先收集的风险账号(黑产账号)和风险设备,识别当前是否处于风险运行环境中,若处于风险运行环境,则可以进一步结合配置文件中的堆栈信息判断对目标API的调用操作是否存在安全风险,若存在风险,则阻断调用,图2给出的示例中结合钩子行为和异常堆栈进行判断,实际还可以包括对非系统调用行为或非客户端功能的调用行为等进行判断。
本申请实施例提供了一种代码运行方法,该方法可以应用于管控代码运行的客户端,图3是本申请一实施例的代码运行方法的流程图。如图3所示,该方法包括:
步骤S301,监测客户端中运行的目标代码对目标API的调用操作,所述目标代码在编译阶段经过风险API识别,并且识别到的风险API已替换为目标API,所述目标API用于替代所述风险API执行相应功能。
本申请涉及到的客户端可以是运行在各种终端设备中的任意客户端,通过内置本申请实施例对应的装置来实现对代码运行的管控。在客户端中所需管控的代码记为目标代码,在该目标代码运行时需要监测的API记为目标API。
在客户端对代码的调用之前,首先对代码进行了编译,代码编译是指将程序从编写形成的源代码转换成机器语言形式的代码的过程,通过对编译后的文件进行链接,可以将机器语言形式的代码与操作系统的启动代码以及库文件进行组织结合,生成可以在硬件上运行的可执行代码。本申请实施例针对待调用的源代码进行编译的过程中,对其中的风险API进行了识别,并将识别到的风险API替换为目标API,该目标API与风险API执行相同的功能,也即是说,目标API代替风险API执行后者相应的功能,不同之处在于,目标API可以通过本申请实施例对应的装置进行管控,也即是说将风险API替换为了可管控的API,从而可以在后续识别到相应风险时,实现该目标API的行为管控,避免对应风险的产生。由于不影响原有功能的实现,仅仅是修改了风险API的调用逻辑,这种非侵入式的无痕处理,接入了代码无感知的监测功能。并且,本申请方案的实现不受系统版本差异,不受系统限制,无任何兼容性风险。
一种可能的实现方式中,可以在编译时进行代码模块化处理的切面过程中进行API的替换。
本申请实施例涉及到的风险API可以包括涉及到用户隐私、权限等敏感内容调用的API,也可以包括涉及到客户端本地安全风险的API,例如对客户端发起网络攻击、信息窃取、诈骗等黑产攻击行为。上述风险API可以通过服务器或是云平台收集获得,例如,通过服务器或云平台本地或是非本地部署的风控系统收集历史识别到的风险API,或是通过获取相关风控黑名单获取风险API,还可以通过识别API调用功能,将涉及到用户信息、权限读取功能的API标记为风险API。
上述对风险API进行识别可疑通过遍历代码中的各个字节码实现,或是通过对特定部分的文件进行识别实现。上述将风险API替换为目标API可以通过插桩处理实现,插桩处理是指将风险API替换为目标API并且在原位置插入管控代码,通过管控代码实现对目标API的管控,使得在实现风险API原有的相关功能的同时,在识别到风险的情况下,通过对其进行阻断避免风险事件的发生。例如,可以使用ASM(assembly language)插桩技术,这是一种Java字节码操控的框架,可以提供一些便捷的功能来操作字节码内容,可以动态的生成类或者增强已有类的功能。
步骤S302,确定所述目标代码对目标API的调用操作存在安全风险。
当监测到对目标API的调用操作时,需要再次确定目标代码对API的调用操作存在安全风险,若存在安全风险,则进行进一步的处理。
风险操作通常会涉及到异常操作调用行为,例如,钩子(hook)函数的调用行为、非客户端功能的调用行为、非系统功能的调用行为等异常行为中的一种或多种。其中,钩子技术是指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为,钩子函数是处理消息的程序段,通过调用钩子函数可以截取操作系统的消息或是特定事件,一些风险行为会调用钩子函数对用户信息进行非法收集以用于非法使用。非客户端的功能调用是指调用行为超出了客户端的功能范围,例如未授权麦克风权限的地图应用调用了麦克风收集声音,超出了地图应用用于定位的功能范围。非系统功能的调用行为是指调用了操作系统之外的其他功能项,例如,非法调用了其他软件的功能,进行了非法的信息收集。异常调用行为还可以有其他类型,例如,可以使非正常时机的调用行为,在地图应用未在桌面展示的情况下进行了定位功能的调用,不符合正常的调用逻辑。
上述异常的调用行为可以通过识别API的堆栈信息进行判断,堆栈信息用于表征程序调用行为,通常用于程序测试过程中对异常运行进行跟踪。具体到本申请实施例,目标代码的堆栈信息中包括了目标API的调用行为,也即是说堆栈信息可以表征目标API的相关调用行为,可以用作分析目标代码对目标API的调用操作是否存在安全风险的依据。
根据堆栈信息识别异常操作的调用行为时,可以通过一些关键信息进行识别,一种可选的示例中,可以识别堆栈信息中包括的异常操作对应的风险字段、方法名称、数据包名称等一种或多种信息,当识别到一些风险字段,例如hook、xposed(暴露函数)等,或是一些非客户端功能调用、非系统功能调用对应的方法名称或数据包名称时,可以认为存在异常操作的调用行为。在具体实现中还可以通过其他方式判断异常操作行为,例如,根据预定的规则或是预先收集的异常堆栈信息判断上述堆栈信息是否是异常堆栈信息,或是,对目标API的调用行为进行模拟和分析,判断是否为异常行为,或是,根据目标API的调用获得了用户个人信息来确定为异常操作行为,还可以是其他适用的判断方式。
步骤S303,阻断所述目标代码对目标API的调用操作。
当确定目标代码对目标API的调用操作存在安全风险时,可以阻断该目标代码对该目标API的调用操作。上述处理过程中,由于在目标代码中可能识别出一个或多个风险API,因此,可以针对相应的一个或多个目标API的调用分别进行监测,针对确定存在安全风险的目标API的调用操作可以及时阻断,针对不存在安全风险的API的调用操作可以不做处理或是继续监测。
通过上述实施例的内容可知,本申请通过监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
上述对异常操作调用行为的判断依据,可以通过风险配置文件下发到客户端,通过预先收集异常操作调用行为并进行分析,可以获得异常行为的一些判断依据。客户端在监测到目标代码对目标API的调用操作后,可以读取该风险配置文件进行异常调用行为的判断。风险配置文件中还可以记录有风险API,在编译阶段即可利用该风险配置文件实现对风险API的识别和替换,可以具体给出各个风险API的接口,便于依据接口进行目标API的替换操作。
一种可能的实现方式中,采用目标API替换风险API时,还可以同时插入管控代码用于实现对目标API的后续管控操作。相应的,在阻断目标代码对目标API的调用操作时,可以通过调用管控代码阻断目标代码对目标API的调用操作。
一种可能的实现方式中,还可以对风险API进行进一步的管理,比如,统计风险API替换为目标API后被阻断的次数,若阻断次数过多,则可以无需在下一次进行对目标API调用操作进行安全风险的判断,而是直接进行阻断。例如,对目标API对应的风险API的阻断次数进行判断,若阻断次数排序靠前,或是超出了一定的阈值,则可以直接阻断目标代码对该风险API的调用操作。
一种可能的实现方式中,在上述确定目标代码对目标API的调用操作存在安全风险之前,还可以确定客户端处于风险运行环境中,也即是,若确定客户端处于风险运行环境中,则说明当前对目标API的调用操作存在风险的可能很高,可以再进一步判断调用操作是否存在风险,还可以直接阻断对该目标API的调用。若并不处于风险运行环境中,则可以直接调用该目标API。
其中,运行环境是指客户端所处的软件或硬件环境、客户端登录账号等,确定客户端是否处于风险运行环境中时,可以确定客户端的登录账号是否为风险账号,或是可以确定客户端所处设备是否为风险设备,若其中至少一种结果为是,则可以确定客户端处于风险运行环境中。
上述判断客户端是否处于风险运行环境可以基于预先获取的风险配置文件来确定,若客户端的登录账号与风险配置文件中记录的风险账号相同,或是客户端所处的登录设备为风险配置文件中记录的风险设备,只要其中一种结果为是,则可以确定客户端处于风险运行环境中。
上述风险配置文件可以从服务器或是云端下载获得,针对上述检测过程,风险配置文件中可以包括风险API标识,用于编译阶段识别出风险API后替换成对应的目标API。风险配置文件中可以包括风险账号信息、风险设备信息,用于对客户端的运行环境进行判断。风险配置文件中可以包括异常操作调用行为的特征信息,便于根据这些特征信息判断异常操作的调用行为。其中,风险账号信息和/或风险设备信息可以基于对风险账号的异常行为和/或运行环境中的异常信息进行检测得到。可以预先制定不合理的异常行为的识别规则,或是预先收集运行环境中的异常信息的种类,例如,若客户端在一分钟之内调用了上千次地理位置权限,则可以认为该客户端登录的账号为风险账号,记录该账号信息作为风险账号信息,进一步按照规则对收集的该账号对应的日志进行分析,将满足风险规则的账号作为风险账号。或是通过调用堆栈信息和运行环境中的信息,发现至少一个风险字段,则也可以将对应登录的账号作为风险账号,或是将当前设备作为风险设备。
依据本申请实施例,监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
由于不影响原有功能的实现,仅仅是修改了风险API的调用逻辑,实现了非侵入式的无痕处理,接入了代码无感知的监测功能。并且,本申请方案的实现不受系统版本差异,不受系统限制,无任何兼容性风险。
上述实施例给出了客户端管控代码运行的过程,如下基于与客户端配合实现代码管控的服务器或是云服务器角度,给出本申请一种代码处理方法的一实施例。
图4是本申请一实施例的一种代码处理方法的流程图,可以部署在客户端对应的服务器或是云服务器,该方法包括:
步骤S401,对待编译的源代码进行风险API识别;
步骤S402,将从源代码中识别到的风险API替换为目标API,所述目标API用于替代所述风险API执行相应功能;
步骤S403,对替换后的源代码进行编译获得可执行的目标代码,所述目标代码的执行过程中,在确定对目标API的调用操作存在安全风险后,阻断对所述目标API的调用操作。
上述步骤的实现可以参照上个实施例,此处不再赘述。
一种可能的实现方式中,所述方法还包括:
检测风险账号和/或风险设备,并将检测结果添加至风险配置文件,下发至客户端。
一种可能的实现方式中,所述检测风险账号和/或风险设备包括:
检测风险账号的异常行为和/或运行环境中的异常信息,确定风险账号和/或风险设备。
依据本申请实施例,监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
由于不影响原有功能的实现,仅仅是修改了风险API的调用逻辑,实现了非侵入式的无痕处理,接入了代码无感知的监测功能。并且,本申请方案的实现不受系统版本差异,不受系统限制,无任何兼容性风险。
与本申请实施例提供的方法的应用场景以及方法相对应地,本申请实施例还提供一种代码运行装置,该装置可以部署于调用代码的客户端。如图5所示为本申请一实施例的代码运行装置的结构框图,该代码运行装置可以包括:
操作监测模块501,用于监测客户端中运行的目标代码对目标API的调用操作,所述目标代码在编译阶段经过风险API识别,并且识别到的风险API已替换为目标API,所述目标API用于替代所述风险API执行相应功能;
风险确定模块502,用于确定所述目标代码对目标API的调用操作存在安全风险;
操作阻断模块503,用于阻断所述目标代码对目标API的调用操作。
一种可能的实现方式中,风险确定模块包括:
堆栈信息读取子模块,用于读取所述目标代码的堆栈信息,所述堆栈信息表征所述目标API的相关调用行为;
堆栈信息识别子模块,用于根据所述堆栈信息识别所述目标代码对目标API的调用操作存在安全风险。
堆栈信息识别子模块,具体用于识别所述堆栈信息指向异常操作调用行为,所述异常操作调用行为包括钩子函数调用行为、非客户端功能调用行为、非系统功能调用行为中至少一种。
堆栈信息识别子模块,具体用于识别所述堆栈信息中包括异常操作对应的风险字段、方法名称、数据包名称中至少一种。
一种可能的实现方式中,操作阻断模块,具体用于通过调用管控代码阻断所述目标代码对目标API的调用操作,所述管控代码在将风险API替换为目标API的同时插入。
一种可能的实现方式中,所述装置还包括:
次数统计模块,用于统计所述风险API替换为目标API后被阻断的次数;
一种可能的实现方式中,所述装置还包括:
调用阻断模块,用于在所述监测客户端中运行的代码对目标API的调用操作之前,检测到客户端待运行的代码中包括阻断次数排序靠前的风险API,阻断所述目标代码对所检测到的风险API的调用操作。
一种可能的实现方式中,所述装置还包括:
环境确定模块,用于在所述确定所述目标代码对目标API的调用操作存在安全风险之前,确定所述客户端处于风险运行环境中。
一种可能的实现方式中,所述环境确定模块,具体用于确定所述客户端的登录账号为风险账号,和/或,确定所述客户端所处设备为风险设备。
一种可能的实现方式中,所述装置还包括:
环境确定模块,用于通过读取风险配置文件中记录的风险账号和/或风险设备,确定所述客户端的登录账号为风险账号,和/或,确定所述客户端所处设备为风险设备。
一种可能的实现方式中,所述装置还包括:
配置文件获取模块,用于从云端下载风险配置文件,所述风险配置文件中包括风险API标识、风险账号信息、风险设备信息、异常操作调用行为的特征信息中的至少一种,所述风险账号信息和/或风险设备信息基于对风险账号的异常行为和/或运行环境中的异常信息进行检测得到。
依据本申请实施例,监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
由于不影响原有功能的实现,仅仅是修改了风险API的调用逻辑,实现了非侵入式的无痕处理,接入了代码无感知的监测功能。并且,本申请方案的实现不受系统版本差异,不受系统限制,无任何兼容性风险。
与本申请实施例提供的方法的应用场景以及方法相对应地,本申请实施例还提供一种代码处理装置,该装置可以与客户端配合实现代码管控的服务器或是云服务器。如图6所示为本申请一实施例的代码处理装置的结构框图,该代码处理装置可以包括:
API识别模块601,用于对待编译的源代码进行风险API识别;
API替换模块602,用于将从源代码中识别到的风险API替换为目标API,所述目标API用于替代所述风险API执行相应功能;
API编译模块603,用于对替换后的源代码进行编译获得可执行的目标代码,所述目标代码的执行过程中,在确定对目标API的调用操作存在安全风险后,阻断对所述目标API的调用操作。
一种可能的实现方式中,所述装置还包括:
配置文件生成模块,用于检测风险账号和/或风险设备,并将检测结果添加至风险配置文件,下发至客户端。
一种可能的实现方式中,所述配置文件生成模块,具体用于检测风险账号的异常行为和/或运行环境中的异常信息,确定风险账号和/或风险设备。
依据本申请实施例,监测客户端中运行的目标代码对目标API的调用操作,该目标代码在编译阶段经过风险API识别,并且已经将识别到的风险API替换为目标API,以通过目标API替代风险API执行相应功能,进一步在代码运行中确定目标代码对该目标API的调用操作存在安全风险,则可以进一步阻断目标代码对该目标API的调用,由此可见,将风险API替换为目标API后,可以实现相应功能的同时,可以通过执行本申请方案的装置阻断该目标API,避免直接调用风险API执行功能时带来的安全风险问题,实现对风险操作的管控,保护了客户端相关操作的合规,避免带来用户个人信息安全的问题。
由于不影响原有功能的实现,仅仅是修改了风险API的调用逻辑,实现了非侵入式的无痕处理,接入了代码无感知的监测功能。并且,本申请方案的实现不受系统版本差异,不受系统限制,无任何兼容性风险。
本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,并具备相应的有益效果,在此不再赘述。
图7为用来实现本申请实施例的电子设备的框图。如图7所示,该电子设备包括:存储器710和处理器720,存储器710内存储有可在处理器720上运行的计算机程序。处理器720执行该计算机程序时实现上述实施例中的方法。存储器710和处理器720的数量可以为一个或多个。
该电子设备还包括:
通信接口730,用于与外界设备进行通信,进行数据交互传输。
如果存储器710、处理器720和通信接口730独立实现,则存储器710、处理器720和通信接口730可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器710、处理器720及通信接口730集成在一块芯片上,则存储器710、处理器720及通信接口730可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请实施例中提供的方法。
本申请实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种代码运行方法,其特征在于,包括:
监测客户端中运行的目标代码对目标API的调用操作,所述目标代码在编译阶段经过风险API识别,并且识别到的风险API已替换为目标API,所述目标API用于替代所述风险API执行相应功能;
确定所述目标代码对目标API的调用操作存在安全风险;
阻断所述目标代码对目标API的调用操作。
2.根据权利要求1所述的方法,其特征在于,所述确定所述目标代码对目标API的调用操作存在安全风险包括:
读取所述目标代码的堆栈信息,所述堆栈信息表征所述目标API的相关调用行为;
根据所述堆栈信息识别所述目标代码对目标API的调用操作存在安全风险。
3.根据权利要求2所述的方法,其特征在于,所述根据所述堆栈信息识别所述目标代码对风险API的调用操作存在安全风险包括:
识别所述堆栈信息指向异常操作调用行为,所述异常操作调用行为包括钩子函数调用行为、非客户端功能调用行为、非系统功能调用行为中至少一种。
4.根据权利要求3所述的方法,其特征在于,所述识别所述堆栈信息指向异常操作调用行为包括:
识别所述堆栈信息中包括异常操作对应的风险字段、方法名称、数据包名称中至少一种。
5.根据权利要求1所述的方法,其特征在于,所述阻断所述目标代码对目标API的调用操作包括:
通过调用管控代码阻断所述目标代码对目标API的调用操作,所述管控代码在将风险API替换为目标API的同时插入。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述风险API替换为目标API后被阻断的次数;
在所述监测客户端中运行的代码对目标API的调用操作之前,所述方法还包括:
检测到客户端待运行的代码中包括阻断次数排序靠前的风险API,阻断所述目标代码对所检测到的风险API的调用操作。
7.根据权利要求1所述的方法,其特征在于,在所述确定所述目标代码对目标API的调用操作存在安全风险之前,所述方法还包括:
确定所述客户端处于风险运行环境中。
8.根据权利要求7所述的方法,其特征在于,所述确定所述客户端处于风险运行环境中包括:
确定所述客户端的登录账号为风险账号,和/或,确定所述客户端所处设备为风险设备。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
通过读取风险配置文件中记录的风险账号和/或风险设备,确定所述客户端的登录账号为风险账号,和/或,确定所述客户端所处设备为风险设备。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
从云端下载风险配置文件,所述风险配置文件中包括风险API标识、风险账号信息、风险设备信息、异常操作调用行为的特征信息中的至少一种,所述风险账号信息和/或风险设备信息基于对风险账号的异常行为和/或运行环境中的异常信息进行检测得到。
11.一种代码处理方法,其特征在于,包括:
对待编译的源代码进行风险API识别;
将从源代码中识别到的风险API替换为目标API,所述目标API用于替代所述风险API执行相应功能;
对替换后的源代码进行编译获得可执行的目标代码,所述目标代码的执行过程中,在确定对目标API的调用操作存在安全风险后,阻断对所述目标API的调用操作。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
检测风险账号和/或风险设备,并将检测结果添加至风险配置文件,下发至客户端。
13.根据权利要求12所述的方法,其特征在于,所述检测风险账号和/或风险设备包括:
检测风险账号的异常行为和/或运行环境中的异常信息,确定风险账号和/或风险设备。
14.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器在执行所述计算机程序时实现权利要求1-13中任一项所述的方法。
CN202210646426.9A 2022-06-08 2022-06-08 代码运行方法、代码处理方法、电子设备及存储介质 Pending CN114880669A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210646426.9A CN114880669A (zh) 2022-06-08 2022-06-08 代码运行方法、代码处理方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210646426.9A CN114880669A (zh) 2022-06-08 2022-06-08 代码运行方法、代码处理方法、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114880669A true CN114880669A (zh) 2022-08-09

Family

ID=82682043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210646426.9A Pending CN114880669A (zh) 2022-06-08 2022-06-08 代码运行方法、代码处理方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114880669A (zh)

Similar Documents

Publication Publication Date Title
KR100938672B1 (ko) 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US8683599B2 (en) Static analysis for verification of software program access to secure resources for computer systems
JP5087661B2 (ja) 正常プロセスに偽装挿入された悪性コード検出装置、システム及びその方法
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
EP3566166B1 (en) Management of security vulnerabilities
CN113761519B (zh) 一种Web应用程序的检测方法、装置及存储介质
CN108763951B (zh) 一种数据的保护方法及装置
EP2881877A1 (en) Program execution device and program analysis device
CN112035354A (zh) 风险代码的定位方法、装置、设备及存储介质
CN115292163A (zh) 应用程序的检测方法、装置及计算机可读存储介质
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
Tuan et al. Enhancing the accuracy of static analysis for detecting sensitive data leakage in Android by using dynamic analysis
CN109784051B (zh) 信息安全防护方法、装置及设备
CN112632547A (zh) 一种数据处理方法和相关装置
CN111222122A (zh) 应用权限管理方法、装置及嵌入式设备
Possemato et al. Preventing and Detecting State Inference Attacks on Android.
CN114880669A (zh) 代码运行方法、代码处理方法、电子设备及存储介质
KR20160139588A (ko) 데이터 무단 엑세스 차단 방법 및 그 기능이 구비된 컴퓨팅 장치
EP3945441A1 (en) Detecting exploitable paths in application software that uses third-party libraries
KR20090084530A (ko) 스크립트 언어를 사용한 취약점 공격 코드의 실시간 탐지및 차단 방법, 및 그 장치
CN115048645A (zh) 超范围采集隐私信息的检测方法、装置、设备及介质
CN114116159A (zh) 日志采集方法、装置、系统、电子设备及可读介质
CN113032785A (zh) 一种文档检测方法、装置、设备及存储介质
CN113158187A (zh) 检测点击劫持的方法及装置、电子设备
Huang et al. Detecting Improper Behaviors of Stubbornly Requesting Permissions in Android Applications.

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