CN113138797B - 面向Intel SGX的程序自动化移植*** - Google Patents

面向Intel SGX的程序自动化移植*** Download PDF

Info

Publication number
CN113138797B
CN113138797B CN202010065323.4A CN202010065323A CN113138797B CN 113138797 B CN113138797 B CN 113138797B CN 202010065323 A CN202010065323 A CN 202010065323A CN 113138797 B CN113138797 B CN 113138797B
Authority
CN
China
Prior art keywords
program
function
code
sensitive
slice
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
CN202010065323.4A
Other languages
English (en)
Other versions
CN113138797A (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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong 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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202010065323.4A priority Critical patent/CN113138797B/zh
Publication of CN113138797A publication Critical patent/CN113138797A/zh
Application granted granted Critical
Publication of CN113138797B publication Critical patent/CN113138797B/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/76Adapting program code to run in a different environment; Porting
    • 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)
  • Stored Programmes (AREA)

Abstract

一种面向Intel SGX的程序自动化移植***,包括:标记模块、分析模块和代码生成模块,其中:标记模块与分析模块相连并传输敏感变量相关信息,分析模块与代码生成模块相连并传输敏感变量相关的函数信息,代码生成模块根据原程序代码以及敏感函数信息,生成可信代码和不可信代码。本发明将源代码中敏感的部分抽取到Enclave中,减少了内存的负载;使可信计算基尽可能小,从而减小了攻击面;不用将程序所需的运行时环境以Library OS等形式移植进Enclave内部,适用范围更加广泛。

Description

面向Intel SGX的程序自动化移植***
技术领域
本发明涉及的是一种计算机技术领域的技术,具体是一种面向Intel SGX的程序自动化移植***,用于开发人员将已有的普通C语言代码自动化移植为面向Intel SGX的C语言代码。
背景技术
越来越多的应用程序倾向部署在公共云平台上,例如阿里云,但这对应用程序的安全性有重大影响。应用程序必须采取措施来保护敏感数据不受攻击者的侵害,攻击者也包括云平台服务提供商。
在不可信环境中保护应用程序敏感数据的较流行方法是使用现代CPU提供的可信执行机制,例如Intel SGX(Software Guard Extensions)。SGX技术为代码和数据在机密性和完整性上提供了安全保护。它的核心是一组CPU扩展指令集,将CPU硬件作为信任的基础,在操作***不可信的环境下依靠硬件支持提供可信的执行环境(Enclave),Enclave中的数据被加密保护,其严格的访问控制机制也为程序提供了极强的隔离性和安全保障。对于大规模程序,开发者若需要将其移植到SGX平台,需要对原始版本程序进行大规模的修改,有研究人员指出,部分代码超过两万行的中大型程序中需要移植的代码比例高达百分之四十,时间成本过高。
由于SGX的开发成本较高,为了实现普通程序与SGX平台的适配,现有的方案是将程序所需的运行时环境以Library OS等形式移植进Enclave内部,以使未修改的应用程序能够正常运行在可执行环境中。但此种方法不仅需要消耗更多的内存,还增加了可信计算基的规模,扩大了Enclave的攻击面。由于这些已有方案存在不可避免的问题,较好的适配方法还是对普通程序进行面向Intel SGX平台的自动化移植。目前尚缺乏一种较为方便的面向Intel SGX的代码自动化移植方案。
发明内容
本发明针对现有技术存在的上述不足,提出一种面向Intel SGX的程序自动化移植***,减少将原始普通版本C语言代码移植为面向SGX的C语言代码的二次开发成本。
本发明是通过以下技术方案实现的:
本发明涉及一种面向Intel SGX的程序自动化移植***,包括:标记模块、分析模块和代码生成模块,其中:标记模块与分析模块相连并传输敏感变量相关信息,分析模块与代码生成模块相连并传输敏感变量相关的函数信息,代码生成模块根据原程序代码以及敏感函数信息,生成可信代码和不可信代码。
技术效果
本发明整体解决了普通C语言程序自动化移植到Intel SGX平台的技术问题;
与现有技术相比,本发明将源代码中敏感的部分抽取到Enclave中,减少了内存的负载;使可信计算基尽可能小,从而减小了攻击面;不用将程序所需的运行时环境以Library OS等形式移植进Enclave内部,适用范围更加广泛。
附图说明
图1为本发明***示意图;
图2为用户标记示意图;
图3为程序分析模块示意图;
图4为代码生成模块示意图。
具体实施方式
如图1所示,为本实施例涉及一种面向Intel SGX的程序自动化移植***,包括:标记模块、分析模块和代码生成模块,其中:标记模块与分析模块相连并传输敏感变量相关信息,分析模块与代码生成模块相连并传输敏感变量相关的函数信息,代码生成模块根据原程序代码以及敏感函数信息,生成可信部分代码和不可信部分代码。
所述的标记模块包括:用于向配置文件中写明敏感变量的名称、敏感变量所在的源代码文件名以及敏感变量在文件中对应的行数标记单元。
所述的敏感变量可以是密码学相关敏感元素,例如对称加密算法的密钥;也可以是工程相关敏感元素,例如基因数据分析工程的输入。敏感变量由开发者自己来标识。
所述的分析模块通过静态程序分析方法生成源代码的程序依赖图、通过前向切片技术和后向切片技术生成切片代码集,再从切片代码集中提取出切片所在的函数名,去掉重复的函数名后得到敏感函数集,该分析模块包括:程序依赖图生成单元、前向切片和后向切片单元以及整合单元,其中:程序依赖图生成单元与前向切片单元以及后向切片单元相连并传输程序依赖图,程序依赖图包括程序控制依赖关系和程序数据依赖关系,前向切片单元与整合模块相连并传输前向切片代码,后向切片单元与整合模块相连并传输后向切片代码,整合单元将切片代码进行整合,从中提取出敏感函数集。
所述的代码生成模块基于敏感函数集列表将源代码切分成可信部分(Enclave源代码)和不可信部分(外部源代码),即:基于敏感函数集对源代码做基本的切分;基于源代码中的函数定义识别出可信部分与不可信部分的调用接口(Ecall/Ocall函数);处理敏感函数中***调用相关API的使用;生成Intel SGX SDK所需的调用接口说明(EDL文件)。该代码生成模块包括:基本代码切分单元、调用接口识别单元、***调用API处理单元与EDL生成单元,其中:基本代码切分单元的输入为源代码以及敏感函数集,源代码中的敏感函数由基本代码切分单元切分到可信部分(Enclave源代码),而其余函数则切分到不可信部分(外部源代码)。基本代码切分单元的输出为被切分后的源代码,由Enclave源代码与外部源代码共同组成。调用接口识别单元和***调用API处理单元与代码切分单元直接相连,调用接口识别单元和***调用API处理单元的输入即代码切分单元的输出。调用接口识别单元和***调用API处理单元在被切分后的源代码基础上,进一步分析可信部分与不可信部分之间的调用接口(Ecall/Ocall函数),对源代码做相应的修改,同时输出Ecall/Ocall函数列表。EDL生成单元与调用接口识别单元以及***调用API处理单元直接相连,其输入为Ecall/Ocall函数列表,并以Intel规定的EDL(Enclave Definition Language)格式生成接口说明(EDL文件)。
依照SGX的规范,代码的不可信部分需要编译为可执行文件,而可信部分(Enclave源代码)需要单独编译为动态链接库文件。为此,需要对源代码做基本的切分,以支持可信/不可信部分的独立编译。基本的切分具体指:以函数为切分粒度,将源代码中的敏感函数切分到可信部分,其余函数切分到不可信部分,可信部分和不可信部分分别保存在不同文件中。后续需要对基本切分结果做进一步完善,以保证移植的正确性。
如图2~图4所示,本实施例涉及上述***的面向Intel SGX的程序自动化移植,在一个示例中,项目代码中使用了密码学中的对称加密算法来进行加密操作。敏感元素为存储对称加密算法的密钥,该元素在加密函数中变量的形式出现,在调用加密函数的函数中以另一变量的形式出现。可任意选择一处变量,将该变量的名称、所在文件名以及行数写入配置文件。
本实施例包括以下步骤:
步骤1.手动在原始普通版本C语言代码中标记出与安全或隐私相关的敏感变量;
步骤2.对原始普通版本C语言代码进行程序分析,生成原始普通版本C语言代码的程序依赖图,根据程序依赖图,对标记的敏感变量进行前向切片和后向切片,得到包含敏感数据及语句的函数名,得到一个敏感函数集。
步骤201.利用静态程序分析方法生成源代码的程序依赖图。
所述的静态程序分析方法是指:对计算机程序进行自动化处理以发现程序的特性,包括控制流分析和数据流分析,其中:控制流分析方法用于分析程序语句间的依赖关系,目标是得到程序的控制依赖图,控制流图对程序执行时可能经过的所有路径的关系进行表示,根据程序语句之间的顺序逻辑、条件分支逻辑以及循环逻辑,对过程内的一些语句进行合并,从而得到关于程序结构的相关信息;数据流分析方法用于分析程序的数据信息流向情况,目标是得到程序的数据依赖图。数据流分析试图确定在程序中各个变量的使用情况。数据流分析一般基于程序的控制流图来做。数据流分析方法可以包括:过程内分析和过程间分析,过程内分析指的是只考虑过程内部语句,即函数内的代码语句;过程间分析指的是不仅要考虑过程内部语句,还要考虑过程调用,需要分析数据在函数之间的传递过程。本发明涉及到的数据流分析方法属于过程间分析类别。基于格和不动点理论的数据流分析是目前被广泛使用的技术,即首先对控制流图中的每个节点建立一个数据流等式,并根据分析目标构造一个具有有限高度的格,然后不断重复计算每个节点的输出,直到达到格的一个不动点。对于各种静态数据流分析方法,本发明均可以采用。
步骤202.根据敏感变量,对程序依赖图进行前向切片和后向切片。
所述的前向切片和后向切片均为程序切片方法。程序切片的目标是得到一个切片子集,该子集由程序中语句和控制谓词组成。语句和控制谓词的特点是能够直接或间接影响到切片准则中变量的值。切片不必构成可执行的程序。静态程序切片考虑了程序的所有可能执行路径,通过分析程序的源代码来获得程序的有关信息本发明旨在产生可移植的静态程序代码,不必考虑程序的输入,因此采用静态切片方法更为合适。
静态程序切片方法需要考虑到切片准则,切片准则是一个二元组(p,V),其中p表示程序中的某个兴趣点,一般是指一条程序语句,V表示在这条语句中使用的变量的集合。所述的前向切片的目标是得到一个切片集合,该切片集合中包含了所有能够影响切片准则变量的程序部分。所述的后向切片的目标是得到一个切片集合,该切片集合中包含了所有受切片准则的变量影响的程序部分。步骤201实际上为可选项,静态程序切片的算法包括基于数据流方程的算法和基于程序依赖图的算法等,本发明均可以采用。
在一个示例中,基于程序依赖图,对基于原程序生成的中间语言进行切片。根据步骤1中得到的敏感变量选择程序依赖图中的对应节点进行切片,沿着数据依赖边和控制依赖边向后标记可到达的节点,由此可以得到后向切片内容;沿着数据依赖边和控制依赖边向前标记可到达的节点,由此可以得到前向切片内容。
静态程序切片步骤可以在目前的主流编译器中实现,例如LLVM和GCC等。
步骤203.提取切片代码片段,从中提取函数名,去重整合函数名。
在一个示例中,利用LLVM生成的中间语言进行切片,得到的切片的结果为中间语言形式。中间语言有固定的格式,因此可以利用正则表达式来匹配切片结果中的函数名。将从前向切片结果中提取的函数名与从后向切片结果中提取的函数名合并,并去除重复的函数名,即可得到敏感函数集。
步骤3.将源代码切分成两个部分:可信部分与不可信部分。基于敏感函数集,先对源代码做基本的切分。在此基础上,根据源代码,将不敏感函数所调用的敏感函数定义OCall函数,将敏感函数调用的不敏感函数定义为ECall函数。通过对抽象语法树AST进行解析,获取函数声明的原型,此外,对Enclave函数相关***调用封装为OCall函数,从而自动生成EDL文件。。
步骤301.基于敏感函数对源代码做基本的切分。
在一个示例中,基于敏感函数对源代码做基本的切分包括:将源代码中敏感函数相关的代码移入可信部分,将源代码中非敏感函数相关的代码移入不可信部分,从而将源代码切分成可信部分(Enclave源代码)和不可信部分(外部源代码)。
步骤302.基于敏感函数识别出程序所需的调用接口(Ecall/Ocall函数)。
在一个示例中,基于敏感函数识别出程序所需的调用接口(Ecall/Ocall函数)包括:遍历程序中所有函数,并分析函数的所有直接调用函数。如果调用函数(caller)为非敏感函数,而被调用函数(callee)为敏感函数,则将该被调用函数记为Ecall函数。如果调用函数为敏感函数,而被调用函数为非敏感函数,则将该被调用函数记为Ocall函数。
步骤303.处理敏感函数中的***调用相关API。
因为Intel SGX不支持Enclave内部程序做***调用,所以移植过程中还需要对源代码进行针对性的修改。
在一个示例中,处理敏感函数中***调用相关API的使用包括:实现维护***调用相关API的列表,并通过静态分析代码的方式检测敏感函数中对***调用相关API的使用。基于检测的结果,在不可信部分代码增加相应Ocall函数,并将可信部分代码中相关API的调用修改为对Ocall函数的调用。增加的Ocall函数实际上是在不可信部分代码对***调用相关API的包装(wrapper)。其实现可以通过动静态两种方式完成:一方面,可以在移植过程中通过对API原型的分析实时动态地生成。另一方面,可以提前包装所有相关API,在移植过程中以查表的方式获取结果。
步骤304.生成Intel SGX SDK所需的调用接口说明文件。
在一个示例中,生成Intel SGX SDK所需的调用接口说明(EDL文件)包括:基于Ecall/Ocall函数列表及其原型说明,以Enclave Definition Language的格式针对每一Ecall/Ocall函数自动生成调用接口。生成的调用接口说明满足Intel SGX的要求,可以直接参与项目的编译。
本实施例步骤3可以在目前的主流编译器中实现,例如LLVM、GCC等。
经过具体实际实验,在操作***Ubuntu 18.04平台上,对源程序中的敏感变量进行标记,基于LLVM进行扩展开发,对普通C语言程序进行静态程序分析和切片得到敏感函数集,基于敏感函数集列表将源代码切分成可信部分(Enclave源代码)和不可信部分(外部源代码)。结果显示,该方法仅将敏感变量相关的函数划分成了可信部分,原代码中的其它函数划分成了不可信部分,从而得到必须放入Enclave的程序部分,而不必要放入Enclave的程序部分,并未划分到Enclave内,从而实现敏感数据的有效保护,减少了Enclave中的代码体积,减少了攻击面和内存负载。
为实现普通C语言程序与Intel SGX平台的适配,现有技术将程序所需的运行时环境以Library OS等形式移植进Enclave内部,将整个工程项目可执行程序全部放入Enclave中,而本***通过静态程序分析和静态程序切片方法,仅仅将敏感数据相关的函数提取到Enclave中,一方面减少了Enclave的攻击面,另一方面减少了内存的负载。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

Claims (7)

1.一种面向Intel SGX的程序自动化移植***,其特征在于,包括:标记模块、分析模块和代码生成模块,其中:标记模块与分析模块相连并传输敏感变量相关信息,分析模块与代码生成模块相连并传输敏感变量相关的函数信息,代码生成模块根据原程序代码以及敏感函数信息,生成可信代码和不可信代码;
所述的标记模块包括:用于向配置文件中写明敏感变量的名称、敏感变量所在的源代码文件名以及敏感变量在文件中对应的行数标记单元;
所述的代码生成模块基于敏感函数集列表将源代码切分成可信部分,即Enclave源代码和不可信部分,即外部源代码,即:基于敏感函数集对源代码做基本的切分;基于源代码中的函数定义识别出可信部分与不可信部分的调用接口,即Ecall/Ocall函数;处理敏感函数中***调用相关API的使用;生成IntelSGX SDK所需的调用接口说明,即EDL文件;该代码生成模块包括:基本代码切分单元、调用接口识别单元、***调用API处理单元与EDL生成单元,其中:基本代码切分单元的输入为源代码以及敏感函数集,源代码中的敏感函数由基本代码切分单元切分到可信部分,即Enclave源代码,而其余函数则切分到不可信部分,即外部源代码,基本代码切分单元的输出为被切分后的源代码,由Enclave源代码与外部源代码共同组成,调用接口识别单元和***调用API处理单元与代码切分单元直接相连,调用接口识别单元和***调用API处理单元的输入即代码切分单元的输出,调用接口识别单元和***调用API处理单元在被切分后的源代码基础上,进一步分析可信部分与不可信部分之间的调用接口,即Ecall/Ocall函数,对源代码做相应的修改,同时输出Ecall/Ocall函数列表,EDL生成单元与调用接口识别单元以及***调用API处理单元直接相连,其输入为Ecall/Ocall函数列表,并以Intel规定的EDL,即Enclave Definition Language格式生成接口说明,即EDL文件。
2.根据权利要求1所述的面向Intel SGX的程序自动化移植***,其特征是,所述的分析模块通过静态程序分析方法生成源代码的程序依赖图、通过前向切片技术和后向切片技术生成切片代码集,再从切片代码集中提取出切片所在的函数名,去掉重复的函数名后得到敏感函数集,该分析模块包括:程序依赖图生成单元、前向切片和后向切片单元以及整合单元,其中:程序依赖图生成单元与前向切片单元以及后向切片单元相连并传输程序依赖图,程序依赖图包括程序控制依赖关系和程序数据依赖关系,前向切片单元与整合模块相连并传输前向切片代码,后向切片单元与整合模块相连并传输后向切片代码,整合单元将切片代码进行整合,从中提取出敏感函数集。
3.根据权利要求1或2所述***的面向Intel SGX的程序自动化移植方法,其特征在于,包括:
步骤1.手动在原始普通版本C语言代码中标记出与安全或隐私相关的敏感变量;
步骤2.对原始普通版本C语言代码进行程序分析,生成原始普通版本C语言代码的程序依赖图,根据程序依赖图,对标记的敏感变量进行前向切片和后向切片,得到包含敏感数据及语句的函数名,得到一个敏感函数集;
步骤3.将源代码切分成可信部分与不可信部分,基于敏感函数集,先对源代码做基本的切分,在此基础上根据源代码,将不敏感函数所调用的敏感函数定义OCall函数,将敏感函数调用的不敏感函数定义为ECall函数,通过对抽象语法树AST进行解析,获取函数声明的原型,此外,对Enclave函数相关***调用封装为OCall函数,从而自动生成EDL文件。
4.根据权利要求3所述的方法,其特征是,所述的步骤2,包括:
步骤201.利用静态程序分析方法生成源代码的程序依赖图;
步骤202.根据敏感变量,对程序依赖图进行前向切片和后向切片;
步骤203.提取切片代码片段,从中提取函数名,去重整合函数名。
5.根据权利要求3所述的方法,其特征是,所述的步骤3,包括:
步骤301.基于敏感函数对源代码做基本的切分;
步骤302.基于敏感函数识别出程序所需的调用接口函数;
步骤303.处理敏感函数中的***调用相关API;
步骤304.生成IntelSGX SDK所需的调用接口说明文件。
6.根据权利要求4所述的方法,其特征是,所述的静态程序分析方法是指:对计算机程序进行自动化处理以发现程序的特性,包括控制流分析和数据流分析。
7.根据权利要求5所述的方法,其特征是,所述的前向切片和后向切片均为程序切片方法,为得到一个切片子集,该子集由程序中语句和控制谓词组成;
所述的程序切片方法,通过静态程序切片实现,具体为:考虑切片准则,即二元组(p,V),其中p表示程序中的某个兴趣点,指一条程序语句,V表示在这条语句中使用的变量的集合;
所述的前向切片的目标是得到一个切片集合,该切片集合中包含了所有能够影响切片准则变量的程序部分;
所述的后向切片的目标是得到一个切片集合,该切片集合中包含了所有受切片准则的变量影响的程序部分。
CN202010065323.4A 2020-01-20 2020-01-20 面向Intel SGX的程序自动化移植*** Active CN113138797B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010065323.4A CN113138797B (zh) 2020-01-20 2020-01-20 面向Intel SGX的程序自动化移植***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010065323.4A CN113138797B (zh) 2020-01-20 2020-01-20 面向Intel SGX的程序自动化移植***

Publications (2)

Publication Number Publication Date
CN113138797A CN113138797A (zh) 2021-07-20
CN113138797B true CN113138797B (zh) 2024-04-02

Family

ID=76809697

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010065323.4A Active CN113138797B (zh) 2020-01-20 2020-01-20 面向Intel SGX的程序自动化移植***

Country Status (1)

Country Link
CN (1) CN113138797B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703880B (zh) * 2021-10-22 2022-02-22 北京百度网讯科技有限公司 应用程序的启动方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018113642A1 (zh) * 2016-12-20 2018-06-28 西安电子科技大学 一种面向远程计算的控制流隐藏方法及***
CN108306740A (zh) * 2018-01-22 2018-07-20 华中科技大学 一种Intel SGX状态一致保护方法和***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018113642A1 (zh) * 2016-12-20 2018-06-28 西安电子科技大学 一种面向远程计算的控制流隐藏方法及***
CN108306740A (zh) * 2018-01-22 2018-07-20 华中科技大学 一种Intel SGX状态一致保护方法和***

Also Published As

Publication number Publication date
CN113138797A (zh) 2021-07-20

Similar Documents

Publication Publication Date Title
CN106778288B (zh) 一种数据脱敏的方法及***
US9336370B2 (en) Method and apparatus for dynamic obfuscation of static data
CN109033764B (zh) 反混淆处理方法及终端、计算机设备
US20160300063A1 (en) Software vulnerabilities detection system and methods
US10133560B2 (en) Link time program optimization in presence of a linker script
US9721120B2 (en) Preventing unauthorized calls to a protected function
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN112131120B (zh) 一种源代码缺陷检测方法及装置
Zhang et al. A survey of software clone detection from security perspective
JP2003337629A (ja) プログラム難読化方法及び装置
Kurniawan et al. Static taint analysis traversal with object oriented component for web file injection vulnerability pattern detection
US11036527B2 (en) Class splitting in object-oriented environments
CN113138797B (zh) 面向Intel SGX的程序自动化移植***
CN114925338A (zh) 一种编译方法、装置、设备、介质和产品
CN113626773B (zh) 一种基于中间语言的代码保护方法
Geethanjali et al. AEON: android encryption based obfuscation
CN111158667B (zh) 代码注入方法和装置、电子设备及存储介质
Liao et al. Automated detection and classification for packed android applications
US11074324B2 (en) Preventing software application tampering
WO2023123111A1 (zh) 编译方法以及用于编译的装置
CN112114809B (zh) 一种程序代码安全防护方法、装置及存储介质
CN111651781B (zh) 日志内容保护方法、装置、计算机设备和存储介质
Foroughipour et al. AndroClonium: Bytecode-level code clone detection for obfuscated Android apps
Bedadala et al. Generation of Call Graph for Java Higher Order Functions
Rumee et al. MirrorDroid: A framework to detect sensitive information leakage in Android by duplicate program execution

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