CN113296834B - 一种基于逆向工程的安卓闭源服务类型信息提取方法 - Google Patents

一种基于逆向工程的安卓闭源服务类型信息提取方法 Download PDF

Info

Publication number
CN113296834B
CN113296834B CN202110557657.8A CN202110557657A CN113296834B CN 113296834 B CN113296834 B CN 113296834B CN 202110557657 A CN202110557657 A CN 202110557657A CN 113296834 B CN113296834 B CN 113296834B
Authority
CN
China
Prior art keywords
service
function
instruction
serialization
call
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.)
Active
Application number
CN202110557657.8A
Other languages
English (en)
Other versions
CN113296834A (zh
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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202110557657.8A priority Critical patent/CN113296834B/zh
Publication of CN113296834A publication Critical patent/CN113296834A/zh
Application granted granted Critical
Publication of CN113296834B publication Critical patent/CN113296834B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种基于逆向工程的安卓闭源服务类型信息提取方法,包括以下内容:从安卓ROM中提取出服务编译产物所处文件;结合服务所处应用或进程的配置信息,从这些文件中提取出待测服务的通信序列化函数的字节码或ARM汇编代码;还原源代码中的控制流结构,以提取出服务接口的编码与对应的序列化指令串;从序列化指令串中还原出Parcel序列化API调用,以此推断出服务接口参数与返回值的类型信息。本方法可自动化地从安卓系统的编译产物中提取出闭源服务类型信息,覆盖应用服务、Java系统服务与Native系统服务,通用性强,类型模型准确度高。提取出的闭源服务类型信息,有助于对这些服务进行更高效地测试与漏洞挖掘。

Description

一种基于逆向工程的安卓闭源服务类型信息提取方法
技术领域
本发明涉及一种基于逆向工程的安卓闭源服务类型信息提取方法,属于安卓系统、逆向工程等技术领域。
背景技术
谷歌公司发布并开源的安卓系统在移动互联网时代占据了主导地位,吸引了越来越多攻击者的注意。服务是安卓系统的核心组成部分,它不仅是安卓应用的基本组件之一,也以系统服务的形式封装安卓系统的底层功能提供给上层使用。安卓系统中大量的公开服务接口是恶意程序的主要攻击目标,利用服务中的漏洞,攻击者不仅可以造成安卓应用甚至系统反复重启,还可以绕过系统安全配置以窃取用户的敏感信息。
虽然谷歌公司的安卓系统是开源的,但各家移动设备厂商往往都会对安卓系统进行定制化开发以提供更丰富的功能,出于商业竞争的考虑厂商不会公布这些定制化安卓系统的源码。定制化安卓系统中引入的大量闭源服务,存在不小的安全隐患,如何对这些闭源服务进行安全测试有重要的研究价值。
现有方法往往通过模糊测试技术对闭源服务进行测试,已有方法大都采用基于变异的策略来生成服务接口测试用例,测试效果依赖于预先记录的数据样本质量。不仅如此,对于具有高度结构化类型特征的安卓服务接口来说,相较于基于变异策略的测试方法,基于生成策略的模糊测试方法由于对程序输入有更精确的类型模型,减少了不合法输入,测试更为高效。
生成式策略的关键在于获取程序输入的类型模型,然而对于闭源的Java与Native服务来说,以往基于Java反射、基于源代码静态分析、基于Binder通信数据监控等类型信息提取方法并不完全适用。
发明内容
发明目的:为解决现有技术中存在的不足,针对Java与Native类型的安卓闭源服务,提供一种基于逆向工程的服务类型信息提取方法,从服务编译产物中还原出服务接口类型信息。安卓系统采用Binder通信协议来实现服务与其他组件间的调用,通信序列化过程所处函数一般根据AIDL接口定义,通过代码生成工具自动生成。本方法以逆向工程的思路,从服务的编译产物中识别出这些生成代码的结构特征,并还原出Parcel序列化相关的API调用,以这些API的类型和语义推断出服务接口的类型信息。
技术方案:一种基于逆向工程的安卓闭源服务类型信息提取方法,包括以下步骤:
1)从安卓ROM中提取出后续分析所需的服务编译产物所处文件:
11)Java应用服务对应APK文件;
12)Java系统服务对应Jar、DEX等文件;
13)Native系统服务对应动态链接库ELF文件与init配置文件。
2)结合服务所处应用或进程的配置信息,从编译产物文件中提取出待测服务的通信序列化函数实现:
服务通信序列化函数位于Binder通信协议下的服务端Stub中,函数名为onTransact,负责将进程间调用反序列化为对本地方法的调用参数,并将结果反序列化以返回给客户端Proxy;
21)对于Java应用服务,从APK的AndroidManifest配置文件中筛选出安卓应用中的暴露服务所在的Java类名。通过数据流分析,计算出该Java应用服务实现类的onBind方法返回值的具体类型,服务端Stub一定是onBind方法返回值的父类;
22)Java系统服务位于system_server进程中,读取system_server进程的虚拟内存使用情况表,从中筛选出system_server进程所加载的字节码文件,在这些字节码文件中提取出满足条件的服务端Stub类;
23)从init配置文件中确定Native系统服务进程的可执行文件,然后提取出可执行文件所依赖的动态链接库文件。在这些动态链接库文件的符号表中根据函数签名可筛选出onTransact函数的地址。
3)从字节码或ARM汇编中重建通信序列化onTransact函数的控制流图:
onTransact函数的主体是一个以接口编号code为参数的switch-case结构,每个case分支实现了该接口的参数与返回值的序列化过程,一个分支中可能存在多条以return语句结尾的指令序列,返回值为零的指令序列代表对应的数据满足类型约束条件;
31)首先,还原源代码中的switch-case结构:
311)字节码中通过sparse-switch指令与sswitch标签来表示switch-case结构,sparse-switch指令中直接记录了相应分支的跳转条件,sswitch标记了该分支的起始指令;
312)ARM汇编中通过多重分支选择结构和jump table跳表来表示switch-case结构:多重分支选择结构通过组合多个CMP指令来实现;ARM32指令集中,通过TBB/TBH指令来使用跳表;AArch64指令集中,组合ADD、LDRSW等指令手动计算跳表项地址并跳转;
32)然后,还原return语句并确认函数返回值:
321)字节码中直接包含return语句,直接提取即可;
322)对ARM汇编来说,以函数调用结尾的基本块为起点,通过逆向数据流分析,计算出函数返回值寄存器(ARM32中对应于r0寄存器,AArch64中对应于w0寄存器)的具体值;
4)还原Parcel序列化API调用,从这些API的类型语义中推断出服务接口的参数与返回值类型:
41)在字节码中还原Parcel序列化API调用:对于invoke-static、invoke-virtual方法调用指令,指令的参数直接包含目标函数签名;对于invoke-interface接口调用指令,需要确定实现了该接口的实例对象类型,通过前向数据流分析找到该实例对象的构造函数调用,以确定实例对象的具体类型;
42)对于ARM汇编来说,通过B、BL、BLR等分支跳转指令来表示函数调用,以跳转目标地址为索引,从符号表中可查询出相应的Parcel序列化API的名称与类型。难点在于还原间接函数调用:间接函数调用表示分支跳转指令的参数中不直接包含目标函数地址,而是保存在寄存器中,最典型的例子就是C++虚函数的调用,为了从ARM汇编中还原虚函数调用,需要先计算出虚函数表基址,再从虚函数表中索引出目标函数地址,以目标函数地址为索引在符号表中查询出对应的函数签名;
43)将分支跳转指令序列还原为Parcel序列化API调用串,顺序遍历该API调用串,read类型反序列化API类型对应于接口的参数类型,write类型序列化API类型对应于接口的返回值类型。
与现有技术方案相比,本发明具有以下优点:
1)通用性强,基于逆向工程的类型提取方法可适用于各种类型的安卓闭源服务;
2)准确度高,直接对服务的通信序列化过程进行分析,可以获得较为精确的类型模型,不依赖于预先记录的数据样本质量;
3)使用方便,主要采用静态分析技术,只需提供安卓ROM即可分析,无需对安卓设备进行繁琐的ROOT操作以满足动态插桩、函数hook等动态分析要求;
附图说明
图1为服务类型信息提取方法整体流程图;
图2为接口类型信息推断工作流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
图1描述了类型提取方法的整体流程图,包含服务编译产物文件提取、待测服务通信序列化函数体识别、接口类型信息推断三个步骤:
步骤一、从安卓ROM中根据路径与文件后缀名提取出服务相关编译产物所处文件,具体的筛选规则见表1;
步骤二、结合服务所处应用或进程的配置信息,从编译产物文件中提取出待测服务的通信序列化OnTransact函数实现:
2a)对于Java应用服务,通过Apktool从APK文件中提取出AndroidManifest配置文件,以此筛选出该应用中的暴露服务名称及其服务实现所在的Java类名。暴露服务的特征是android:exported属性为true,若该属性不存在,当存在至少一条intent-filter时则为暴露服务。通过数据流分析该Java服务类的onBind方法返回值具体类型,该返回值的父类中一定包含服务端Stub类;
2b)对于Java系统服务,一般以单个线程的形式存在于system_server进程中,读取该进程的虚拟内存使用情况表/proc/[pid]/maps,从该表的最后一列中筛选出该进程所加载的字节码文件(以jar、vdex、odex、oat为后缀名,其中odex与oat文件包含的是经过ART虚拟机编译后的机器码,使用LIEF工具从这些编译后的机器码中还原出字节码),从这些字节码文件中提取出满足条件的服务端Stub类;
2c)对于Native系统服务,一般以单独守护进程的形式存在,这些进程的启动参数以安卓初始化语言(Android Init Language,AIL)的形式记录在init.rc等文件之中。从中提取出服务进程的可执行文件入口,并进一步提取出它所依赖的动态链接库文件。在这些动态链接库文件的符号表中筛选出符号名形如“onTransactEjRKNS_6ParcelEPS2_j”的函数实现。
步骤三、从通信序列化onTransact函数中推断出接口类型分为两个步骤,如图2所示:
3a)生成onTransact函数的控制流图,主要关注switch-case结构与return语句:
3a1)switch-case结构在字节码中对应于sparse-switch指令与sswitch标签,sparse-switch指令参数中含有该分支的跳转条件,sswitch标签标记了该分支的起始指令。
3a2)对于通过Clang/LLVM编译工具链生成的ARM汇编代码来说,switch-case结构的分支数小于4时,生成多重分支选择结构,否则生成jump table跳表:
多重分支选择通过组合多个CMP指令来实现,这些指令以存储有code的寄存器为参数,以分支跳转条件为立即数;
跳表是一个以分支数量为长度的数组,数组项代表了跳转分支目标地址的计算方式,不同指令集中对跳表的使用方式不同:ARM32中,通过TBB/TBH指令来使用跳表,跳表数据内容紧随其后,TBB指令对应跳表项长度为1个字节,TBH对应跳表项长度为2个字节,TBB/TBH指令的格式形如“TBB[pc,r0]”,跳转的目标地址计算公式为“PC+2*table[r0]”,其中PC代表下一条指令的地址,r0寄存器中为switch的参数值;AArch64中,跳表数据内容位于rodata中,对应跳表项长度为4个字节,使用时,先通过ADD、LDRSW等指令计算跳表的基址,然后读取出对应跳表项并保存到寄存器中,最后使用BR指令跳转到目标地址,跳转目标的地址计算公式为“rodata_base+table_offset+table[w1]”,其中rodata_base代表rodata数据段的基址,table_offset代表跳表基址相对rodata数据段基址的偏移量,w1寄存器中为switch的参数值。
3a3)由于字节码支持return指令,直接提取即可。
3a4)ARM32中,函数调用以“pop[pc,…]”指令结尾,返回值保存在r0寄存器中;AArch64中,函数调用以ret指令结尾,返回值保存在w0寄存器中。通过逆向数据流分析,筛选出对这些寄存器的赋值语句,以此确定程序执行路径对应的返回值。
3b)从字节码或ARM汇编中还原出Parcel序列化API调用:
3b1)字节码中,对于invoke-static、invoke-virtual方法调用指令,指令的参数直接包含目标函数签名,对应于基本数据类型及数组、Bundle、ParcelFileDescriptor、IBinder等数据的Parcel序列化API;对于invoke-interface方法调用指令,一般对应于Parcelable复杂结构体的Parcel序列化API,通过前向数据流分析找到该方法实例的构造函数调用,以确认该复杂结构体的实际数据类型。
3b2)ARM汇编中,通过B、BL、BLR等分支跳转指令来表示函数调用,包含直接函数调用与间接函数调用两种情况:
直接函数调用特征是分支跳转指令的参数中直接包含目标函数地址,大多数Parcel序列化API都属于这种情况。
间接函数调用特征是分支跳转指令的参数中不直接包含目标函数地址,而是保存在寄存器中。最典型的例子就是C++虚函数的调用,继承自Parcelable基类的复杂结构体的序列化接口writeToParcel与readFromParcel就属于虚函数调用。还原C++虚函数调用目标的难点在于分析出寄存器中的具体地址值,过程可分为以下三个步骤:识别构造函数调用;从构造函数的虚函数表初始化指令调用中,确认虚函数表基址;根据与虚函数表基址的偏移量计算出实际的函数调用地址。
3c)将分支跳转指令序列还原为Parcel序列化API调用串,顺序遍历该API调用串,从readInt等反序列化API中可推断出该接口的参数为int类型,从writeFloat等序列化API中可推断出该接口的返回值为float类型。
虽然本发明已以较佳实施例公开如上,但它们并不是用来限定本发明,任何熟习此技艺者,在不脱离本发明之精神和范围内,自当可作各种变化或润饰,但同样在本发明的保护范围之内。

Claims (8)

1.一种基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,包括如下步骤:
步骤一、从安卓ROM中提取出服务相关编译产物所处文件;
步骤二、结合服务所处应用或进程的配置信息,从编译产物所处文件中提取出待测服务通信序列化函数的字节码与ARM汇编代码;
步骤三、从字节码或ARM汇编代码中还原服务通信序列化函数的控制流结构,以提取出服务接口的编码与对应的序列化指令串;
步骤四、从字节码与ARM汇编的序列化指令串中还原出Parcel序列化API调用,以此推断出服务接口参数与返回值的类型信息;
所述步骤三中,控制流结构包括switch-case结构与return语句,所述switch-case结构以接口编号code为参数,每个分支对应该接口的参数与返回值的序列化过程,一个分支中可能存在多条以return语句结尾的指令序列,返回值为零的指令序列代表对应的数据满足接口类型约束;
从所述字节码中还原switch-case结构,该switch-case结构编译后生成记录分支跳转条件的sparse-switch指令与标记分支起始指令的switch标签;
从所述ARM汇编中还原switch-case结构,编译时根据该结构的分支跳转数量,若分支数小于4则生成多重分支跳转结构,否则生成jump table跳表;
所述多重分支跳转结构通过组合多个CMP指令实现,这些CMP指令以保存有接口编号code的寄存器为参数,分支跳转条件为立即数;
所述跳表是一个以分支数量为长度的数组,数组项代表了跳转分支目标地址的计算方式:在ARM32中,通过TBB或TBH指令使用跳表,相应的数组宽度为1个或2个字节,跳表数据内容紧随该指令之后,跳转目标地址的计算公式为“跳表基址+ 2 * 数组项”;在AArch64中,先通过指令计算跳表基址,读取对应数组项保存到寄存器中,最后使用BR指令跳转到目标地址,跳转目标地址的计算公式为“跳表基址+数组项”。
2.根据权利要求1所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,所述步骤一提取服务相关编译产物所处文件,包括:Java应用服务对应于APK文件、Java系统服务对应于DEX文件、Native系统服务对应于ELF与init配置文件。
3.根据权利要求2所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,所述步骤二中服务通信序列化函数位于Binder通信协议下的服务端Stub中,函数名为onTransact,负责将进程间调用反序列化为对本地方法的调用参数,并将结果反序列化以返回给客户端Proxy;
提取所述Java应用服务的通信序列化onTransact函数,先从APK的AndroidManifest配置文件中筛选出暴露服务名称与所在类名,然后通过逆向数据流分析,计算该服务类onBind方法返回值的具体类型,从该返回值的父类中即可确定服务端Stub类名。
4.根据权利要求2所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,提取所述Java系统服务的通信序列化onTransact函数,先读取system_server进程的虚拟内存使用情况表,筛选出system_server进程所加载的字节码文件,从这些字节码文件中根据类名与函数签名确定服务端Stub类名。
5.根据权利要求2所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,提取所述Native系统服务的通信序列化onTransact函数,先根据init配置文件确定服务所在进程的可执行文件,再提取出可执行文件所依赖的动态链接库文件,从这些动态链接库文件的符号表中根据函数签名筛选出onTransact函数的地址。
6.根据权利要求1所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,所述return语句在字节码中对应return指令;在ARM32中对应于表示函数调用结束的pop指令,以及保存函数返回值的r0寄存器;在AArch64中对应于表示函数调用结束的ret指令,以及保存函数返回值的w0寄存器。
7.根据权利要求1所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,所述步骤四中Parcel序列化API有两类语义:形如readXXX的反序列化API表示从远程调用的请求消息体中读取接口参数;形如writeXXX的序列化API表示将接口调用结果写入远程调用的响应消息体;
所述步骤四类型信息推断过程,顺序遍历Parcel序列化API调用串,read类型API的返回值等于接口参数类型,write类型API的参数等于接口返回值类型;
从字节码指令中还原Parcel序列化API,对于invoke-static、invoke-virtual指令,指令的参数直接包含目标函数签名;对于invoke-interface接口调用指令,确定实现了接口的实例对象类型,通过前向数据流分析找到实例对象的构造函数调用,以确定实例对象的实际数据类型。
8.根据权利要求1所述的基于逆向工程的安卓闭源服务类型信息提取方法,其特征在于,从ARM汇编指令中还原Parcel序列化API,汇编中通过B、BL、BLR分支跳转指令表示函数调用,包含直接函数与间接函数调用两种情况;
所述直接函数调用的特征是分支跳转指令的参数中直接带有目标函数地址;
所述间接函数调用的特征是分支跳转指令的参数为保存有目标函数地址的寄存器,对应于C++虚函数的调用,还原虚函数调用分为以下三步:识别构造函数调用;从构造函数的虚函数表初始化指令调用中,确认虚函数表基址;根据与虚函数表基址的偏移量计算出实际的函数调用地址。
CN202110557657.8A 2021-05-21 2021-05-21 一种基于逆向工程的安卓闭源服务类型信息提取方法 Active CN113296834B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110557657.8A CN113296834B (zh) 2021-05-21 2021-05-21 一种基于逆向工程的安卓闭源服务类型信息提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110557657.8A CN113296834B (zh) 2021-05-21 2021-05-21 一种基于逆向工程的安卓闭源服务类型信息提取方法

Publications (2)

Publication Number Publication Date
CN113296834A CN113296834A (zh) 2021-08-24
CN113296834B true CN113296834B (zh) 2023-11-03

Family

ID=77323642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110557657.8A Active CN113296834B (zh) 2021-05-21 2021-05-21 一种基于逆向工程的安卓闭源服务类型信息提取方法

Country Status (1)

Country Link
CN (1) CN113296834B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013134206A1 (en) * 2012-03-05 2013-09-12 The Board Of Regents, The University Of Texas System Automatically bridging the semantic gap in machine introspection
CN106687981A (zh) * 2014-06-24 2017-05-17 弗塞克系统公司 用于自动化检测输入和输出验证和资源管理漏洞的系统和方法
CN108733988A (zh) * 2017-04-19 2018-11-02 北京洋浦伟业科技发展有限公司 安卓平台上可执行程序的保护方法
CN109933443A (zh) * 2019-03-07 2019-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质
CN110505148A (zh) * 2019-07-24 2019-11-26 烽火通信科技股份有限公司 实现加权多路径的方法及系统
CN112016596A (zh) * 2020-08-10 2020-12-01 西安科技大学 基于卷积神经网络的农田土壤肥力评价方法
CN112199115A (zh) * 2020-09-21 2021-01-08 复旦大学 基于特征相似度匹配的跨Java字节码和源代码行关联方法
CN112256249A (zh) * 2020-10-15 2021-01-22 深圳Tcl新技术有限公司 扩展Android系统功能的方法、设备及计算机存储介质
CN112733158A (zh) * 2021-04-06 2021-04-30 北京邮电大学 Android系统漏洞检测方法、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776026B2 (en) * 2010-10-01 2014-07-08 Ecole Polytechnique Federale De Lausanne System and method for in-vivo multi-path analysis of binary software

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013134206A1 (en) * 2012-03-05 2013-09-12 The Board Of Regents, The University Of Texas System Automatically bridging the semantic gap in machine introspection
CN106687981A (zh) * 2014-06-24 2017-05-17 弗塞克系统公司 用于自动化检测输入和输出验证和资源管理漏洞的系统和方法
CN108733988A (zh) * 2017-04-19 2018-11-02 北京洋浦伟业科技发展有限公司 安卓平台上可执行程序的保护方法
CN109933443A (zh) * 2019-03-07 2019-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质
CN110505148A (zh) * 2019-07-24 2019-11-26 烽火通信科技股份有限公司 实现加权多路径的方法及系统
CN112016596A (zh) * 2020-08-10 2020-12-01 西安科技大学 基于卷积神经网络的农田土壤肥力评价方法
CN112199115A (zh) * 2020-09-21 2021-01-08 复旦大学 基于特征相似度匹配的跨Java字节码和源代码行关联方法
CN112256249A (zh) * 2020-10-15 2021-01-22 深圳Tcl新技术有限公司 扩展Android系统功能的方法、设备及计算机存储介质
CN112733158A (zh) * 2021-04-06 2021-04-30 北京邮电大学 Android系统漏洞检测方法、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Android系统服务半自动化模糊测试工具研究与实现;王麒麟;《中国优秀硕士学位论文全文数据库 信息科技辑》(第05期);I138-213 *
基于Makefile文件依赖的源码分析工具设计与实现;谷凤伟;《中国优秀硕士学位论文全文数据库 信息科技辑》(第02期);I138-1469 *

Also Published As

Publication number Publication date
CN113296834A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
US9715593B2 (en) Software vulnerabilities detection system and methods
US6298353B1 (en) Checking serialization compatibility between versions of java classes
US9274923B2 (en) System and method for stack crawl testing and caching
US9824214B2 (en) High performance software vulnerabilities detection system and methods
US8286149B2 (en) Apparatus for and method of implementing feedback directed dependency analysis of software applications
US9152731B2 (en) Detecting a broken point in a web application automatic test case
US20130290937A1 (en) Efficient extraction of software dependencies from program code
US20040158819A1 (en) Run-time wait tracing using byte code insertion
US20050204343A1 (en) Automated test system for testing an application running in a windows-based environment and related methods
US20110047532A1 (en) Methods and apparatuses for selective code coverage
CN109564540B (zh) 用于jit编译器的调试的系统、方法和设备
US20080307006A1 (en) File mutation method and system using file section information and mutation rules
JP2019053729A (ja) スマートコントラクトのテスト方法及びテスト装置
US10599852B2 (en) High performance software vulnerabilities detection system and methods
CN115705250A (zh) 监测堆栈使用量以优化程序
US8291401B2 (en) Processing symbols associated with shared assemblies
US20080244324A1 (en) Method and system for providing enhanced exception messages for exceptions thrown by virtual machines
KR20040077410A (ko) 마크업 내부에서 명시적으로 서브클래스를 정의하고이용하는 시스템 및 방법
CN113296834B (zh) 一种基于逆向工程的安卓闭源服务类型信息提取方法
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
CN109426546B (zh) 应用启动方法及装置、计算机存储介质及设备
US20220075875A1 (en) Language-independent application monitoring through aspect-oriented programming
CN113626823A (zh) 一种基于可达性分析的组件间交互威胁检测方法及装置
CN113946347B (zh) 函数调用的检测方法、装置、电子设备及可读介质
Andrzejak et al. Confguru-A system for fully automated debugging of configuration errors

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
GR01 Patent grant
GR01 Patent grant