CN111881485B - 一种基于arm指针验证的内核敏感数据完整性保护方法 - Google Patents

一种基于arm指针验证的内核敏感数据完整性保护方法 Download PDF

Info

Publication number
CN111881485B
CN111881485B CN202010674762.5A CN202010674762A CN111881485B CN 111881485 B CN111881485 B CN 111881485B CN 202010674762 A CN202010674762 A CN 202010674762A CN 111881485 B CN111881485 B CN 111881485B
Authority
CN
China
Prior art keywords
sensitive data
sensitive
kernel
code
pac
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
CN202010674762.5A
Other languages
English (en)
Other versions
CN111881485A (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202010674762.5A priority Critical patent/CN111881485B/zh
Priority to PCT/CN2020/114971 priority patent/WO2022011818A1/zh
Publication of CN111881485A publication Critical patent/CN111881485A/zh
Application granted granted Critical
Publication of CN111881485B publication Critical patent/CN111881485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes

Abstract

本发明公开了一种基于ARM指针验证的内核敏感数据完整性保护方法,利用通用指针验证码对操作系统内核中用户指定的敏感数据提供完整性保护。此方法包括如下步骤:(1)通过指向分析技术定位操作系统内核代码中所有对敏感数据的读写;(2)插入指针验证指令使得:向内存写入敏感数据前生成并写入指针验证码,从内存读入敏感数据后检查指针验证码;(3)修改操作系统内核启动代码,在启动早期初始化指针验证特性,随后初始化全局敏感数据的指针验证码。本发明利用指针验证技术高效地保护了操作系统内核敏感数据的完整性。

Description

一种基于ARM指针验证的内核敏感数据完整性保护方法
技术领域
本发明涉及计算机系统安全领域,尤其涉及一种基于ARM指针验证(PointerAuthentication,PA)的内核敏感数据完整性的保护方法。
背景技术
操作系统是计算机系统运行的基础,其上任何安全问题会直接危害系统整体安全。近年来,针对操作系统的攻击层出不穷,如2017到2019年的WannaCry蠕虫式勒索病毒。根据攻击手段的演化,对操作系统的攻击主要分为三类:代码注入攻击、代码重用攻击以及非控制数据攻击。与此同时,操作系统安全在攻击者和防护者的不断对抗中得到很大提升,随着抗代码注入攻击硬件安全特性的大规模部署,主流操作系统均已实现基于硬件的抗代码注入攻击防护。而代码重用攻击由于其普遍性,针对它的系统防护方法一直被工业界和学术界广泛研究,一些成熟的防护方法比如控制流完整性(Control-Flow Integrity,CFI)已经在实用的软件上部署,代码重用攻击的有效攻击面正日益收缩。
与前两类攻击相比,非控制数据攻击可以直接篡改系统中的敏感数据,为攻击者提供非法权限;然而对敏感数据的篡改手段隐蔽,难以被检测、监控,对操作系统安全构成重大威胁。由于缺乏专门硬件支持,目前基于软件实现的敏感数据保护引入性能开销过大,阻碍了其大规模部署。
发明内容
本发明实施例的目的是提供一种基于ARM指针验证的内核敏感数据完整性保护方法,以解决基于软件实现的敏感数据保护引入的性能开销过大的问题。
为了达到上述目的,本发明实施例所采用的技术方案如下:
本发明实施例提供一种基于ARM指针验证的内核敏感数据完整性保护方法,包括:
接收用户在操作系统内核代码中指定的敏感数据;
对用户指定的敏感数据进行指向分析,识别所有可能指向敏感数据的敏感指针;
根据识别到的敏感指针,结合操作系统内核代码的语义,识别所有通过敏感指针读写内存的操作,其中通过敏感指针写内存的操作简称敏感写,通过敏感指针读内存的操作简称敏感读;
根据识别出的敏感读写操作,对操作系统内核代码进行如下修改:在敏感写代码后插入敏感数据的PAC生成代码StoreSignkey(sensdata),在敏感读代码后插入敏感数据的PAC验证代码LoadAuthkey(sensdata),其中key表示128bit的PA密钥,sensdata表示敏感数据,当操作系统内核运行时,动态执行插入的PAC生成代码生成敏感数据的PAC,动态执行插入的 PAC验证代码验证敏感数据的PAC,若PAC验证通过,则敏感数据完整,反之,则敏感数据完整性被破坏;
在操作系统内核启动代码中插入PA密钥初始化代码keyinit(),该PA密钥初始化代码开启ARM CPU的PA特性并用随机数初始化PA密钥;
根据用户在操作系统内核代码中指定的敏感数据,分析操作系统内核代码中的全局变量,确定操作系统内核中所有包含了敏感数据的全局变量;
根据确定的包含敏感数据的全局变量,在keyinit()之后插入全局敏感数据初始化代码 sensvar_init(),该全局敏感数据初始化代码对所有全局敏感数据变量调用StoreSignkey(gsensdata),其中gsensdata表示全局敏感数据。
进一步地,接收用户在操作系统内核代码中指定的敏感数据,包括:
接收用户通过编译器提供的属性声明__attribute__指定操作系统内核中的敏感数据,其中敏感数据是单个字节,或是多个字节组成的数据块。
进一步地,对用户指定的敏感数据进行指向分析,包括:
在操作系统内核代码编译的LTO阶段,采用CLA算法基于整个内核的LLVM中间表示码对用户指定的敏感数据进行指向分析。
进一步地,结合操作系统内核代码的语义,识别所有通过敏感指针读写内存的操作,包括:
(4-1)在操作系统内核代码编译的LTO阶段,逐个扫描整个内核的LLVM中间表示码中的每条指令;
(4-2)如果当前指令为LOAD指令或是内存块拷贝函数,且其源操作数为敏感指针,则标记当前指令为敏感读指令;
(4-3)如果当前指令为STORE指令或是内存块拷贝函数,且其源操作数为敏感指针,则标记当前指令为敏感写指令。
进一步地,在敏感写代码后插入敏感数据的PAC生成代码StoreSignkey(sensdata)的步骤,包括:
(5-1)将敏感数据分成以8字节为单位的数据块D0,D1,...,Dn-1,其中n为数据块的数目;
(5-2)以第一块数据块D0作为输入,以D0所在的内存地址ADDR0作为修饰符,用PA密钥key计算得到PAC0=Signkey(D0,ADDR0);
(5-3)依次以每块数据块为输入,以上一次迭代结果的PAC作为修饰符,迭代计算PACi=Signkey(Di,PACi-1)(0<i<n);
(5-4)将PACn-1作为敏感数据的PAC,存入敏感数据高地址相邻的位置。
进一步地,在敏感读代码后插入敏感数据的PAC验证代码LoadAuthkey(sensdata)的步骤,包括:
(6-1)将敏感数据分成以8字节为单位的数据块D0,D1,...,Dn-1,其中n为数据块的数目;
(6-2)以第一块数据块D0作为输入,以D0所在的内存地址ADDR0作为修饰符,用PA密钥key计算得到PAC0=Signkey(D0,ADDR0);
(6-3)依次以每块数据块为输入,以上一次迭代结果的PAC作为修饰符,迭代计算PACi=Signkey(Di,PACi-1)(0<i<n);
(6-4)取出敏感数据高地址相邻位置保存的PAC并与PACn-1进行比较,如果一致,则敏感数据完整,验证通过;如果不一致,则敏感数据完整性被破坏,验证失败;
(6-5)如果验证通过,则操作系统内核可以正常运行;如果验证失败,则停止操作系统的执行,并警报通知操作系统内核的异常。
根据以上技术方案,本发明的有益效果是,本发明利用指向分析技术识别所有的敏感指针,相比于人工分析省时省力且能覆盖所有的敏感指针;本发明在所有的敏感读写处自动插入 PAC生成和PAC验证代码,能保护所有敏感数据的完整性;本发明基于ARM的PA硬件特性实现保护,相比于软件实现性能开销大幅降低。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的一种基于ARM指针验证的内核敏感数据完整性保护方法的流程图;
图2是针对内核敏感数据块生成指针验证码的块链式指针验证码生成算法。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本发明实施例提供的一种基于ARM指针验证的内核敏感数据完整性保护方法的流程图;本实施例提供的一种基于ARM指针验证的内核敏感数据完整性保护方法,本实施例以保护Linux操作系统内核的敏感数据为例来进行说明,该方法包括以下步骤:
步骤S101,接收用户在操作系统内核代码中指定的敏感数据;
具体地,本实施例修改了LLVM编译器的前端使其支持新的属性声明 __attribute__((sensitive));用户通过新的属性声明__attribute__((sensitive))声明敏感数据,其中敏感数据由内核开发者指定,可以是内存中任意位置任意大小的数据,既可以是单个字节,也可以是多个字节组成的数据块。
步骤S102,对用户指定的敏感数据进行指向分析,识别所有可能指向敏感数据的敏感指针;
具体地,本实例使用LLVM的LTO编译模式编译得到整个操作系统内核的中间表示(Intermediate Representation,IR)字节码;在中间表示字节码上采用CLA算法(Heintze,N.,& Tardieu,O.(2001).Ultra-fast aliasing analysis using CLA:A million linesof C code in a second.ACM SIGPLAN Notices,36(5),254-263.)对步骤S101中声明的敏感数据进行指向分析,识别到所有可能指向敏感数据的敏感指针。
步骤S103,根据识别到的敏感指针,结合操作系统内核代码的语义,识别所有通过敏感指针读写内存的操作,其中通过敏感指针写内存的操作简称敏感写,通过敏感指针读内存的操作简称敏感读;具体地,包括以下子步骤:
(4-1)根据步骤S102得到的整个操作系统内核的IR字节码,逐个扫描整个内核的LLVM 中间表示码中的每条指令;
(4-2)如果当前指令为LOAD指令或是内存块拷贝函数,且其源操作数为敏感指针,则标记当前指令为敏感读指令;
(4-3)如果当前指令为STORE指令或是内存块拷贝函数,且其源操作数为敏感指针,则标记当前指令为敏感写指令。
步骤S104,根据识别出的敏感读写操作,对操作系统内核代码进行如下修改:在敏感写代码后插入敏感数据的PAC生成代码StoreSignkey(sensdata),在敏感读代码后插入敏感数据的 PAC验证代码LoadAuthkey(sensdata),其中key表示128bit的PA密钥,sensdata表示敏感数据。图2说明了StoreSignkey(sensdata)和LoadAuthkey(sensdata)中使用的块链式PAC生成算法,对应子步骤(5-1)、(5-2)、(5-3)、(6-1)、(6-2)和(6-3)。
其中,敏感数据的PAC生成代码StoreSignkey(sensdata)的步骤,包括以下子步骤:
(5-1)将敏感数据分成以8字节为单位的数据块D0,D1,...,Dn-1,其中n为数据块的数目;
(5-2)以第一块数据块D0作为输入,以D0所在的内存地址ADDR0作为修饰符,用PA密钥key计算得到PAC0=Signkey(D0,ADDR0);
(5-3)依次以每块数据块为输入,以上一次迭代结果的PAC作为修饰符,迭代计算PACi=Signkey(Di,PACi-1)(0<i<n);
(5-4)将PACn-1作为敏感数据的PAC,存入敏感数据高地址相邻的位置。
其中,敏感数据的PAC验证代码LoadAuthkey(sensdata)的步骤,包括以下子步骤:
(6-1)将敏感数据分成以8字节为单位的数据块D0,D1,...,Dn-1,其中n为数据块的数目;
(6-2)以第一块数据块D0作为输入,以D0所在的内存地址ADDR0作为修饰符,用PA密钥key计算得到PAC0=Signkey(D0,ADDR0);
(6-3)依次以每块数据块为输入,以上一次迭代结果的PAC作为修饰符,迭代计算PACi=Signkey(Di,PACi-1)(0<i<n);
(6-4)取出敏感数据高地址相邻位置保存的PAC并与PACn-1进行比较,如果一致,则敏感数据完整,验证通过;如果不一致,则敏感数据完整性被破坏,验证失败;
(6-5)如果验证通过,则操作系统内核可以正常运行;如果验证失败,则停止操作系统的执行,并警报通知操作系统内核的异常。
步骤S105,在操作系统内核启动代码中插入PA密钥初始化代码keyinit(),该PA密钥初始化代码开启ARM CPU的PA特性并用随机数初始化PA密钥;
具体地,PA密钥初始化代码keyinit()被插入到start_kernel()中的boot_init_stack_canary() 语句之后。keyinit()应该位于Linux操作系统的随机数生成器初始化函数之后,因为keyinit() 需要调用随机数生成器。
步骤S106,根据用户在操作系统内核代码中指定的敏感数据,分析操作系统内核代码中的全局变量,确定操作系统内核中所有包含了敏感数据的全局变量;
具体地,根据步骤S102得到的整个Linux操作系统内核的IR字节码,枚举字节码中声明的全局变量并记录其中包含敏感数据的全局变量。
步骤S107,根据确定的包含敏感数据的全局变量,在keyinit()之后插入全局敏感数据初始化代码sensvar_init(),该全局敏感数据初始化代码对所有全局敏感数据变量调用 StoreSignkey(gsensdata),其中gsensdata表示全局敏感数据。
具体地,本步骤为全局敏感数据初始化PAC。全局敏感数据在初始化时默认具有完整性,本发明在操作系统内核启动时直接生成全局敏感数据对应的PAC,使全局敏感数据在第一次被操作系统内核读取时能够通过LoadAuthkey(sensdata)当中的完整性验证。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于ARM指针验证的内核敏感数据完整性保护方法,其特征在于,包括:
接收用户在操作系统内核代码中指定的敏感数据;
对用户指定的敏感数据进行指向分析,识别所有可能指向敏感数据的敏感指针;
根据识别到的敏感指针,结合操作系统内核代码的语义,识别所有通过敏感指针读写内存的操作,其中通过敏感指针写内存的操作简称敏感写,通过敏感指针读内存的操作简称敏感读;
根据识别出的敏感读写操作,对操作系统内核代码进行如下修改:在敏感写代码后插入敏感数据的PAC生成代码StoreSignkey(sensdata),在敏感读代码后插入敏感数据的PAC验证代码LoadAuthkey(sensdata),其中key表示128bit的PA密钥,sensdata表示敏感数据,当操作系统内核运行时,动态执行插入的PAC生成代码生成敏感数据的PAC,动态执行插入的PAC验证代码验证敏感数据的PAC,若PAC验证通过,则敏感数据完整,反之,则敏感数据完整性被破坏;
在操作系统内核启动代码中插入PA密钥初始化代码keyinit(),该PA密钥初始化代码开启ARM CPU的PA特性并用随机数初始化PA密钥;
根据用户在操作系统内核代码中指定的敏感数据,分析操作系统内核代码中的全局变量,确定操作系统内核中所有包含了敏感数据的全局变量;
根据确定的包含敏感数据的全局变量,在keyinit()之后插入全局敏感数据初始化代码sensvar_init(),该全局敏感数据初始化代码对所有全局敏感数据变量调用StoreSignkey(gsensdata),其中gsensdata表示全局敏感数据。
2.根据权利要求1所述一种基于ARM指针验证的内核敏感数据完整性保护方法,其特征在于,接收用户在操作系统内核代码中指定的敏感数据,包括:
接收用户通过编译器提供的属性声明__attribute__指定操作系统内核中的敏感数据,其中敏感数据是单个字节,或是多个字节组成的数据块。
3.根据权利要求1所述一种基于ARM指针验证的内核敏感数据完整性保护方法,其特征在于,对用户指定的敏感数据进行指向分析,包括:
在操作系统内核代码编译的LTO阶段,采用CLA算法基于整个内核的LLVM中间表示码对用户指定的敏感数据进行指向分析。
4.根据权利要求1所述一种基于ARM指针验证的内核敏感数据完整性保护方法,其特征在于,结合操作系统内核代码的语义,识别所有通过敏感指针读写内存的操作,包括:
(4-1)在操作系统内核代码编译的LTO阶段,逐个扫描整个内核的LLVM中间表示码中的每条指令;
(4-2)如果当前指令为LOAD指令或是内存块拷贝函数,且其源操作数为敏感指针,则标记当前指令为敏感读指令;
(4-3)如果当前指令为STORE指令或是内存块拷贝函数,且其源操作数为敏感指针,则标记当前指令为敏感写指令。
5.根据权利要求1所述一种基于ARM指针验证的内核敏感数据完整性保护方法,其特征在于,在敏感写代码后插入敏感数据的PAC生成代码StoreSignkey(sensdata)的步骤,包括:
(5-1)将敏感数据分成以8字节为单位的数据块D0,D1,...,Dn-1,其中n为数据块的数目;
(5-2)以第一块数据块D0作为输入,以D0所在的内存地址ADDR0作为修饰符,用PA密钥key计算得到PAC0=Signkey(D0,ADDR0);
(5-3)依次以每块数据块为输入,以上一次迭代结果的PAC作为修饰符,迭代计算PACi=Signkey(Di,PACi-1)(0<i<n);
(5-4)将PACn-1作为敏感数据的PAC,存入敏感数据高地址相邻的位置。
6.根据权利要求1所述一种基于ARM指针验证的内核敏感数据完整性保护方法,其特征在于,在敏感读代码后插入敏感数据的PAC验证代码LoadAuthkey(sensdata)的步骤,包括:
(6-1)将敏感数据分成以8字节为单位的数据块D0,D1,...,Dn-1,其中n为数据块的数目;
(6-2)以第一块数据块D0作为输入,以D0所在的内存地址ADDR0作为修饰符,用PA密钥key计算得到PAC0=Signkey(D0,ADDR0);
(6-3)依次以每块数据块为输入,以上一次迭代结果的PAC作为修饰符,迭代计算PACi=Signkey(Di,PACi-1)(0<i<n);
(6-4)取出敏感数据高地址相邻位置保存的PAC并与PACn-1进行比较,如果一致,则敏感数据完整,验证通过;如果不一致,则敏感数据完整性被破坏,验证失败;
(6-5)如果验证通过,则操作系统内核可以正常运行;如果验证失败,则停止操作系统的执行,并警报通知操作系统内核的异常。
CN202010674762.5A 2020-07-14 2020-07-14 一种基于arm指针验证的内核敏感数据完整性保护方法 Active CN111881485B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010674762.5A CN111881485B (zh) 2020-07-14 2020-07-14 一种基于arm指针验证的内核敏感数据完整性保护方法
PCT/CN2020/114971 WO2022011818A1 (zh) 2020-07-14 2020-09-14 一种基于arm指针验证的内核敏感数据完整性保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010674762.5A CN111881485B (zh) 2020-07-14 2020-07-14 一种基于arm指针验证的内核敏感数据完整性保护方法

Publications (2)

Publication Number Publication Date
CN111881485A CN111881485A (zh) 2020-11-03
CN111881485B true CN111881485B (zh) 2022-04-05

Family

ID=73150796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010674762.5A Active CN111881485B (zh) 2020-07-14 2020-07-14 一种基于arm指针验证的内核敏感数据完整性保护方法

Country Status (2)

Country Link
CN (1) CN111881485B (zh)
WO (1) WO2022011818A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032737B (zh) * 2021-03-15 2021-11-30 清华大学 软件的保护方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN107194252A (zh) * 2017-05-09 2017-09-22 华中科技大学 一种完全上下文敏感的程序控制流完整性保护方法和系统
CN110069935A (zh) * 2019-03-20 2019-07-30 上海交通大学 基于标记内存的内部敏感数据保护方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021605B2 (en) * 2007-01-03 2015-04-28 International Business Machines Corporation Method and system for protecting sensitive data in a program
US8434064B2 (en) * 2008-03-28 2013-04-30 Microsoft Corporation Detecting memory errors using write integrity testing
CN108573143A (zh) * 2017-03-10 2018-09-25 南京大学 基于程序插桩和动态信息验证的栈保护方法
US10528740B2 (en) * 2017-06-15 2020-01-07 International Business Machines Corporation Securely booting a service processor and monitoring service processor integrity
CN109918903B (zh) * 2019-03-06 2022-06-21 西安电子科技大学 一种基于llvm编译器的程序非控制数据攻击防护方法
CN110717181B (zh) * 2019-09-09 2021-07-02 中国人民解放军战略支援部队信息工程大学 基于新型程序依赖图的非控制数据攻击检测方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN107194252A (zh) * 2017-05-09 2017-09-22 华中科技大学 一种完全上下文敏感的程序控制流完整性保护方法和系统
CN110069935A (zh) * 2019-03-20 2019-07-30 上海交通大学 基于标记内存的内部敏感数据保护方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ARM Pointer Authentication based Forward-Edge and Backward-Edge Control Flow Integrity for Kernels;Yutian Yang等;《http://arxiv.org/abs/1912.10666》;20191223;第1-15页 *
Missing the Point(er): On the Effectiveness of Code Pointer Integrity;Evans, Isaac等;《2015 IEEE SYMPOSIUM ON SECURITY AND PRIVACY SP》;20151231;第781-796页 *
基于数据流完整性的内核保护技术研究;童晓梦;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20190215(第02期);第I138-126页 *

Also Published As

Publication number Publication date
WO2022011818A1 (zh) 2022-01-20
CN111881485A (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
US7757097B2 (en) Method and system for tamperproofing software
US8286251B2 (en) Obfuscating computer program code
US7287166B1 (en) Guards for application in software tamperproofing
EP1376310A2 (en) Secure and opaque type library providing secure data protection of variables
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
US8893275B2 (en) JCVM bytecode execution protection against fault attacks
JP5467271B2 (ja) 情報処理装置及びプログラム、情報処理方法、記録媒体
US20120179898A1 (en) System and method for enforcing software security through cpu statistics gathered using hardware features
KR20090033228A (ko) 데이터 흐름 보전의 실시에 의한 소프트웨어 보호 방법
US8775826B2 (en) Counteracting memory tracing on computing systems by code obfuscation
US11269988B2 (en) Automated software application verification system
Iyer et al. Preventing overflow attacks by memory randomization
CN111881485B (zh) 一种基于arm指针验证的内核敏感数据完整性保护方法
US11256786B2 (en) Method to secure a software code
US8423974B2 (en) System and method for call replacement
Graux et al. Abusing android runtime for application obfuscation
CN112100686B (zh) 一种基于arm指针验证的内核代码指针完整性保护方法
Sah et al. Variable record table: A run-time solution for mitigating buffer overflow attack
KR20220095986A (ko) 임베디드 프로세서의 소스 코드의 컴파일링 방법 및 컴파일러
US20220292182A1 (en) Method for the execution of a binary code of a computer program by a microprocessor
Martinez Santos et al. Static secure page allocation for light-weight dynamic information flow tracking
CN117473467A (zh) 一种基于动态方法的.Net平台代码保护及运行方法
WO2023156571A1 (en) Protecting software
CN117972799A (zh) 一种应用于arm处理器的指针保护方法、计算机系统
KR20150055992A (ko) 프로그램 보호 장치

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